apple-design-motion

Helps developers animate iPhone interfaces with smooth, bouncy, natural-feeling motion that responds to touches and gestures.

Installation
Run `npx skills add "https://github.com/s1gmamale1/apple-design-skills" --skill "apple-design-motion"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: apple-design-motion
description: "Use when animating an Apple-style interface — spring physics, the signature smooth/snappy/bouncy springs, fluid interruptible transitions, hero/continuity transitions, gestures (swipe, drag, context menu, Dynamic Island, swipe actions), haptic feedback, control/loading micro-interactions, and the web aliveness primitives (continuous scroll-progress motion + pointer-reactive sugar). Part of the apple-design family. Keywords: apple animation, spring, springs, damping fraction, response, fluid interface, interruptible, matchedGeometryEffect, zoom transition, hero, gesture, swipe to dismiss, drag, velocity handoff, context menu, haptics, taptic engine, sensory feedback, micro-interaction, button press, prefers-reduced-motion, css linear() spring, easing, scroll-progress, scroll progress mapping, damped scroll, scroll smoothing, mapRange, magnetic button, tilt, pointer-reactive, spotlight."
---

# Apple Design — Motion (animation · gestures · feedback)

How Apple makes interfaces feel alive: spring-driven, interruptible, responsive.

## When to use
- Adding any transition, animation, gesture, or press/loading feedback.
- Making web motion feel "Apple-fluid" rather than canned-easing.

## Core rules
- **Springs over fixed easing.** Apple animates with springs (mass/stiffness/damping), parameterized as `response` + `dampingFraction` (or `duration` + `bounce`). On web, generate a CSS `linear()` curve from spring params — don't default to `ease`.
- **Interruptible + velocity handoff.** Respond on `pointerdown`, let a gesture's release velocity feed the spring, and allow mid-flight redirection. Never block input behind an animation.
- **Animate `transform`/`opacity` only** (GPU-composited); use `will-change` sparingly. Don't animate layout properties.
- **Every action gets feedback** — visual press state (scale/dim) always; haptics where available. **Web Vibration API does not work in iOS Safari** — never rely on it for tactile feel.
- **Honor `prefers-reduced-motion`**: provide a fade/instant alternative, not the big move.
- **Bind to continuous scroll progress on flagship pages.** On flagship/marketing pages, bind motion to CONTINUOUS scroll progress (damped — smooth the *read*, never hijack scroll), not just in-view reveals. Reversible, multi-rate scroll-progress motion is the single biggest differentiator between a dead template and an alive Apple page.

## References
| File | Use for |
|---|---|
| `references/motion-animation.md` | Spring presets + values, fluid-interface rules, `linear()` recipes, matchedGeometry/zoom |
| `references/motion-animation.md` → "Continuous scroll-progress motion (the aliveness primitive)" | `mapRange` + damped-scroll rAF lerp (smooth the read, no scroll-jacking), reversible/multi-rate binding, `@supports (animation-timeline)` CSS path, reduced-motion |
| `references/motion-animation.md` → "Pointer-reactive motion (desktop sugar)" | Magnetic button / tilt / spotlight vanilla recipes, the `pointer:fine` + reduced-motion HARD gate, single-rAF-tick production note |
| `references/gestures-interaction.md` | Gesture vocabulary, swipe-to-dismiss, context menus, Dynamic Island, JS pointer recipes |
| `references/microinteractions-feedback.md` | Haptic catalog + when-to-fire, control states, loading patterns, the iOS web-haptics gap |

## Common mistakes
- `ease`/`linear` everywhere; long, non-interruptible, input-blocking animations.
- Animating `width/top/height` instead of `transform`; ignoring reduced-motion.
- No tap feedback; haptic spam / double-firing; assuming web vibration works on iOS.

**Related:** the glass that's moving → apple-design-materials · scroll-driven web motion → apple-design-web · reduce-motion as a11y → apple-design-tactics.

This skill OWNS the reusable scroll/pointer engine primitives above. Page-level scroll *compositions* that build on them — theme/background morph, sticky-stacked cards, scrubbed canvas hero — live in **apple-design-web**. The surface-axis decision (whether a given surface should commit to continuous motion at all) lives in **apple-design**'s `restraint-and-antislop.md`.

Ships with 3 supporting files:

  • references/gestures-interaction.md
  • references/microinteractions-feedback.md
  • references/motion-animation.md

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us