View Transitions

16 modern view transitions on SwiftUI's Transition protocol — boing, skid, swoosh, flip, iris, wipe, blinds, clock, glare, dissolve, flicker, film exposure and more

Free
Free with a ShipSwift account.

Copies a short instruction with your private download link. Paste it into your agent: it downloads the whole skill (the source code, the setup steps and the mistakes we already made for you) and builds the screen.

Works with

+70

What it does

A collection of 16 view transitions built on SwiftUI's modern Transition protocol, usable via static dot-syntax exactly like the built-ins: .transition(.swBoing). Covers filter effects (blur, film exposure, snapshot flash), 3D motion (flip, rotate3D, swoosh), elastic motion (boing, skid, angle-based move), and animatable mask reveals (iris, wipe, blinds, clock, glare, flicker, pixel dissolve). Every transition is a plain value type; mask reveals interpolate custom Shape/Animatable progress, so they respect whatever animation you trigger them with.

What you get

  • ✓642 lines of source code, ready to paste
  • ✓Source Code
  • ✓Usage
  • ✓Parameters
  • ✓Integration Checklist
  • ✓Known Gotchas
animationtransitionSwiftUIiOS18boingskidiriswipedissolveflicker

Usage

// Insert / remove a view with a transition
if showCard {
    CardView()
        .transition(.swIris)
}
// Trigger with an explicit animation for best feel
withAnimation(.spring(duration: 0.6, bounce: 0.5)) { showCard.toggle() }

// Parameterised variants
.transition(.swWipe(angle: .degrees(45)))
.transition(.swMove(angle: .degrees(135), distance: 500))
.transition(.swIris(origin: .bottomTrailing))
.transition(.swDissolve(cellSize: 10))
.transition(.swRotate3D(angle: .degrees(120), axis: (x: 1, y: 1, z: 0)))

Recommended animations per effect:

EffectAnimation
swBoing / swSkid / swSwoosh.spring(duration: 0.6, bounce: 0.5)
swFlicker / swDissolve / swIris / swWipe / swBlinds / swClock / swGlare.linear(duration: 0.55) or .easeInOut
swFilmExposure.easeInOut(duration: 0.8)
everything else.smooth(duration: 0.5)

Parameters

TransitionParameterDefaultDescription
swBlurradius24Max blur radius while hidden
swBoingdistance80Drop-in height in pts
swSkiddistance160Slide-in distance in pts
swMoveangle, distance—, 400Direction the view enters from
swRotate3Dangle, axis90°, (0,1,0)3D rotation angle and axis
swIrisorigin.centerCircle grow origin as UnitPoint
swWipeangle45°Sweep direction
swBlindsslatHeight24Slat height in pts
swGlareangle45°Streak direction
swDissolvecellSize8Dissolve grid cell size in pts

Integration Checklist

  • Add SWTransition.swift to your project (iOS 18+ / macOS 15+)
  • Attach .transition(.swXxx) to a view inside an if / ForEach
  • Toggle the condition inside withAnimation(...) using the recommended curve for that effect
  • For mask reveals (iris/wipe/blinds/clock/dissolve/flicker), prefer .linear or .easeInOut — springs overshoot the progress (clamped, but timing feels off)
  • If the user can switch transitions at runtime, change the transition in its own transaction (or change the view's .id) before removing the view

Known Gotchas

  • Removal uses the last-rendered transition: SwiftUI captures the outgoing view's transition from the previous frame. If you change which transition is attached and remove the view in the same transaction, the exit plays the old effect. Either change the transition in a separate transaction first, or give the view an .id(selection) so switching swaps the card — the old view exits with its own effect, the new one enters with the new effect.
  • The removal animation duration comes from the withAnimation that triggered it — a too-short animation truncates slower effects like film exposure.
  • Mask-reveal transitions draw within the view's bounds; inside List rows or clipped() containers they behave fine, but 3D/offset effects (boing, swoosh, move) need room to travel without being clipped by ancestors.
  • SWSkewEffect (used by swSkid) is a GeometryEffect; it composes with offset but not with .rotation3DEffect on the same layer — nest in a container if you need both.
  • All transitions are cross-platform SwiftUI (no UIKit); macOS 15+ works out of the box.

More in Effects and animation

Metal shaders: fields of dots that roll like waves and flow into living patterns, all drawn on the GPU.
Metal dot fields
Free
Metal shaders: fields of dots that roll like waves and flow into living patterns, all drawn on the GPU.
A deep-space starfield in Metal: glowing nebulae drift past twinkling stars.
Deep-space starfield
Free
A deep-space starfield in Metal: glowing nebulae drift past twinkling stars.
Neon outlines that bloom from the center with prism-colored edges, rendered live in Metal.
Neon outlines
Free
Neon outlines that bloom from the center with prism-colored edges, rendered live in Metal.
Colored blobs that drift, melt into one another like liquid, and blend their colors as they merge.
Liquid metaballs
Free
Colored blobs that drift, melt into one another like liquid, and blend their colors as they merge.
A 3D network graph you can spin. Tap any node and its links light up, with the details below.
3D network graph
Free
A 3D network graph you can spin. Tap any node and its links light up, with the details below.
Items orbit into a dotted ring, and payment cards fan out of a wallet as the balance rolls in.
Orbit ring and wallet
Free
Items orbit into a dotted ring, and payment cards fan out of a wallet as the balance rolls in.
A field of bright colored dots that float and shimmer across the whole screen.
Floating color dots
Free
A field of bright colored dots that float and shimmer across the whole screen.
Stacked glass panels in mirrored layers, with neon gradients flowing through them.
Glass color panels
Free
Stacked glass panels in mirrored layers, with neon gradients flowing through them.
Drag the slider and scattered points of light pull together into a perfect 3D sphere.
Dot sphere
Free
Drag the slider and scattered points of light pull together into a perfect 3D sphere.
Living patterns: a mosaic of cells that keeps reshaping, then a hypnotic color swirl.
Cells and swirl
Free
Living patterns: a mosaic of cells that keeps reshaping, then a hypnotic color swirl.
Organic noise shaders: glowing veins that pulse through the dark, then bold color blobs in constant flow.
Noise veins and blobs
Free
Organic noise shaders: glowing veins that pulse through the dark, then bold color blobs in constant flow.