Spec the micro-interactions and motion for a UI
FreeTurn any component or flow into a build-ready micro-interaction and motion spec — properties, durations, easing, transform-origin, spring physics, and reduced-motion fallbacks an engineer can ship without guessing.
A concrete, implementation-ready motion specification for a UI element — every interaction mapped to properties, timing, easing, origin, and fallbacks — that an engineer can build without asking follow-up questions.
Your details
saved for every promptThis prompt
You are a senior design engineer who specializes in interface motion and micro-interactions — the kind who has shipped animation systems people describe as buttery, and who knows when *not* to animate.
Your task: write a complete, build-ready motion specification for the UI below, detailed enough that a mid-level engineer could implement it without asking a single follow-up question, and honest enough to flag any interaction that should stay instant instead of animated.
## The UI to spec
Interface element or flow:
"""
{{ui_element_or_flow}}
"""
Current behavior or problem (or "greenfield — nothing built yet"):
"""
{{current_state}}
"""
Context:
- Product: {{product}}
- Primary users: {{audience}}
- Desired motion personality: {{motion_personality}}
- Implementation environment: {{tech_stack}}
## How to work through it
1. Inventory every distinct state change and interaction the element has — enter, exit, hover, press/tap, focus, drag/swipe, loading, success, error, and any list reorder or stack reflow.
2. For each one, decide whether it should animate at all. Actions that must feel instant (focus rings, keyboard-driven changes, anything on a critical path) should not be dressed up with motion.
3. For the interactions that do animate, choose the exact properties to move, the from→to values, the duration, and the easing (or spring settings).
4. Set a transform-origin for every overlay, popover, dropdown, or tooltip so it grows from the element that triggered it, not from its own center.
5. Decide where a spring (interruptible, gesture-friendly) beats a fixed-duration tween — especially for anything a user can re-trigger or drag mid-animation.
6. Specify a prefers-reduced-motion fallback for each animated interaction (usually opacity-only, no movement).
7. Call out orchestration for groups: stagger, sequencing, and how siblings reflow when one item is added or removed.
## Output format
- **Motion principles** — 2 to 3 sentences describing the intended feel and the rules that hold across the whole element.
- **Interaction table** with columns: Interaction | Animate? | Properties | From → To | Duration | Easing / spring | Transform-origin | Notes.
- **Reduced motion** — the fallback behavior when prefers-reduced-motion is set.
- **Leave it instant** — interactions that should NOT animate, each with a one-line reason.
- **Watch-outs** — performance, jank, unmount timing, and interruption risks to check during implementation.
## Constraints
- Animate `transform` and `opacity` first; avoid animating `width`, `height`, `top`, `left`, or `margin`, which force layout and drop frames. If a size or position must change, note that it needs a transform-based (FLIP / layout) technique.
- Keep micro-interaction durations roughly in the 120–300ms range; reserve 300–450ms for large surfaces like full-screen sheets, and never let a micro-interaction run past ~500ms.
- Use ease-out (decelerate) for elements entering the screen, ease-in for elements leaving, and ease-in-out for elements moving between two on-screen positions. Avoid linear except for continuous loops like spinners.
- Enter with a small offset — a few pixels of translate or a scale from ~0.96, plus opacity — rather than scaling up from zero.
- Give concrete numbers everywhere. Replace any vague phrase like "smooth transition" with real values.
- If the framework's animation API is unfamiliar, spec the values in neutral terms (property, from→to, duration, easing) rather than guessing API names.
- Do not invent motion to fill the table — if an interaction is better instant, put it under "Leave it instant" and explain why.6 fields still empty — the {{like_this}} slots fill in as you type.
See it in action
What this prompt produces with example details filled in:
**Motion principles** Toasts should feel like they belong to the corner they live in: arriving with a quick, decelerating slide that catches the eye without startling, and leaving quietly so they never compete with the next action. Nothing in the stack should ever teleport — when one toast leaves, the others glide into place. Motion is fast and confident, matching a "snappy & responsive" feel. **Interaction table** | Interaction | Animate? | Properties | From → To | Duration | Easing / spring | Transform-origin | Notes | |---|---|---|---|---|---|---|---| | Toast enter | Yes | opacity, translateY | opacity 0→1, y 16px→0 | 240ms | ease-out `cubic-bezier(0.16, 1, 0.3, 1)` | bottom edge | Optional gentle overshoot via spring (stiffness ~500, damping ~35) | | Toast exit | Yes | opacity, translateX | opacity 1→0, x 0→100% | 180ms | ease-in | — | Slide out toward the screen edge it sits on; must finish before unmount | | Stack reflow (sibling removed) | Yes | translateY (transform, not layout) | shifts up by removed height | spring | stiffness ~400, damping ~40 | — | Use FLIP / layout animation so siblings glide, never jump | | Swipe-to-dismiss | Yes | translateX tracks finger | follows drag; release → spring | spring, interruptible | stiffness ~500, damping ~45 | — | Past ~40% width or a fast flick → dismiss; otherwise spring back to 0 | | Action button press | Yes | scale | 1 → 0.96 | 120ms | ease-out | center | Returns to 1 on pointer-up | | Hover (pause auto-dismiss) | No | — | — | — | — | — | Pausing the timer is state, not motion — keep it instant | **Reduced motion** When `prefers-reduced-motion: reduce` is set, drop all translate/scale and cross-fade instead: enter and exit become opacity 0↔1 over 150ms. Disable the swipe overshoot and the spring reflow — snap siblings to their new position after the fade. Swipe-to-dismiss still tracks the finger (it is direct manipulation, not decorative motion). **Leave it instant** - Timer pause on hover — feedback must be immediate, and there is nothing to move. - Focus ring on keyboard navigation — accessibility affordances should never lag. - Close on Escape — a deliberate dismissal should feel as fast as the keypress. **Watch-outs** - Animate `transform`/`opacity` only. Reflowing the stack via `top`/`height` will jank — use a transform-based layout animation (Framer Motion `layout`). - Make sure the exit animation completes before the node unmounts (`AnimatePresence`), or toasts will pop out with no transition. - If three or more toasts arrive at once, stagger enters by ~60ms rather than firing them simultaneously, so the corner reads as a sequence, not a flash. - Keep the swipe spring interruptible: a user grabbing a toast mid-enter should take over the drag without a hitch or reset.
Tips
- Paste your real component code or a screenshot into the ui_element_or_flow slot for a tighter, more specific spec.
- If you already use design tokens for duration and easing, list them so the spec reuses your scale instead of inventing new values.
- Ask for the spec first, then in a follow-up request the implementation in your exact framework — separating design from code keeps both sharper.
- Scrutinize the 'Leave it instant' section: that is where the taste lives, and where over-animation gets caught.
Built by Web Innoventix
Want the work done, not just prompted? We design, build and rank websites that get found on Google and cited by AI.
Get a free quoteMore prompts
Browse all →Turn a rough UI idea into a build-ready design prompt
Turn a vague UI idea into a precise, generation-ready design prompt — a one-line vibe, a named-colour design system, and a numbered page structure — that v0, Stitch, Lovable, or Claude can render into a polished first screen on the first try.
Design critique that returns prioritised fixes
Get a senior product-design critique of any screen — specific, located, severity-ranked usability fixes tied to real heuristics, not vague praise.
Design a first-run onboarding flow to your product's aha moment
A ready-to-paste ChatGPT prompt that interviews you about your product, then designs a first-run app onboarding flow that walks new users to their aha moment — delivered as a build-ready spec.
Plan your product's information architecture and sitemap
A paste-and-go ChatGPT prompt that interviews you about your product and users, then delivers a full information architecture and sitemap — navigation model, page hierarchy, URL scheme, and key user flows.
Interview a user and turn it into a UX research brief
A paste-and-go ChatGPT prompt that runs a professional UX discovery interview one question at a time, then synthesizes your answers into a structured, shareable UX research brief.
Generate a design token system with light and dark palettes
A paste-and-go ChatGPT prompt that briefly interviews you, then generates a complete light and dark design token system — primitives, semantic tokens, and WCAG-checked contrast — ready to export as CSS variables, DTCG JSON, or a Tailwind config.

