Additional context needed: performance constraints.
Use motion to explain state, relationship, and hierarchy, or to create one authored moment the surface has earned. Decoration without purpose is animation debt.
ios / android / adaptive): follow the Motion section of ios.md or android.md, including the platform's Reduce Motion behavior. Do not apply the web tooling below.Inspect the existing motion language, interaction states, target devices, and performance budget. Find only the places where motion would:
Ask only when a material constraint cannot be inferred. Do not animate a static area merely because it exists.
Write a short plan before implementation:
The focal moment must come from this product and surface concept. A generic fade-and-rise, hover lift, parallax layer, or scroll reveal is not a thesis.
Transform and opacity are reliable foundations, not the entire palette. Choose properties for what the transition communicates:
Do not stack techniques for spectacle. One strong material idea, carried through the focal sequence and quiet supporting states, is usually enough.
Sibling stagger is appropriate when a list appears as a list. Cap the total delay, and never reinterpret every scrolled section as a staggered list.
Timing should express distance and consequence:
| Duration | Typical use |
|---|---|
| 100–150 ms | immediate feedback |
| 150–300 ms | routine state change |
| 300–500 ms | layout, overlay, or view transition |
| 500–800 ms | a deliberately authored focal entrance |
Exit faster than entrance. Use natural deceleration such as cubic-bezier(0.16, 1, 0.3, 1) for confident arrivals; do not use bounce or elastic curves by reflex. Long feedback feels like latency.
Keep content visible in the default state so failed scripts do not hide the page. Avoid casually animating layout-driving properties such as width, height, top, left, and margins; use FLIP, transforms, or grid techniques when appropriate. Bound blur, filter, shadow, canvas, and shader work to isolated regions. Apply will-change only during known animation. Measure on target viewports and devices rather than assuming transform means fast.
Respect autoplay and sound preferences. Any nonessential loop must stop when offscreen or hidden.
When motion earns its place, hand off to /impeccable polish for the final pass.