| name | motion-choreography-patterns |
|---|---|
| description | Use when orchestrating multi-element UI motion, stagger systems, list reorder/insert/remove flows, modal and overlay stacks, gesture-driven transitions, and route-level choreography that preserves hierarchy and attention. |
This skill focuses on choreography: how multiple moving parts coordinate in time and space to communicate interaction intent.
Use it alongside foundational motion guidance to create motion systems that are legible, consistent, and production-ready across complex UI flows.
- Designing sequences with more than one animated element
- Building staggered reveals, list transitions, and layout mode changes
- Implementing modal, drawer, popover, and overlay interaction stacks
- Handling add/remove/reorder scenarios in dense interfaces
- Mapping user input (tap, drag, scroll) to motion responses
- Auditing whether motion hierarchy matches product hierarchy
Treat each sequence as three actor layers:
- Primary actor - the element representing the state change
- Supporting actors - nearby elements that reinforce context
- Environment actors - backdrop, scrim, container, page-level continuity
Animate primary first, then supporting, then environment unless the interaction model requires the reverse.
Use predictable beat structure:
- Lead beat (
0-80ms) - immediate acknowledgment - Primary beat (
120-240ms) - main state change - Follow beat (
20-60msoffset) - supporting context update - Settle beat (
80-180ms) - final stabilization
Favor asymmetry: exits slightly faster than enters.
- One dominant axis per beat (avoid conflicting direction signals)
- Keep simultaneous high-amplitude motions limited
- Use stagger only when it improves scan order and hierarchy
- Keep rhythm consistent across similar components
- Preserve spatial anchors during reflow/reorder transitions
For concrete recipes and timelines, see:
For reusable stagger utilities, see:
- Tap/click: immediate visual response in under
80ms - Press/hold: include press state before commitment transition
- Drag: motion follows pointer directly; settle animation occurs only on drop/commit
- Keyboard navigation: preserve focus continuity and avoid disorienting travel
When reduced motion is requested:
- Remove spatial travel when possible
- Keep sequencing logic with opacity/state changes
- Preserve hierarchy with contrast, layering, and timing rather than movement distance
- Ensure state change remains obvious and immediate
- Cascades that delay interaction completion
- Independent components using unrelated easing and duration tokens
- Large travel distances for frequent interactions
- Simultaneous enter and exit motions that compete for focus
- Decorative infinite animations in core task surfaces
When using this skill, return these five sections:
- Storyboard - who moves, in what order, and why
- Timeline Spec - durations, offsets, easing tokens, and distances
- Implementation Plan - CSS/JS/View Transition structure
- A11y + Fallback - reduced-motion and unsupported-feature strategy
- Validation Plan - performance and UX checks
Use this before shipping: