In the Skill's Own Terms
Apple Design distills Apple's WWDC interface talks, chiefly Designing Fluid Interfaces (WWDC 2018), into rules for building fluid, physical web UI. It is aimed at designers and developers working on gesture-driven interfaces: drag, swipe, sheets, springs, momentum, interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading) and reduced-motion behaviour.
The through-line is that motion should start from the current on-screen value, inherit the user's velocity, project momentum forward, and be grabbable and reversible at any instant. Springs replace fixed-duration animations because they are inherently interruptible and velocity-aware, and the skill closes with Apple's eight design principles used as shared vocabulary.
What it produces
- Press-feedback CSS that scales the control on :active with a 100ms ease-out transition.
- Motion spring calls showing the critically damped default and the momentum bounce variant side by side.
- A project() helper implementing momentum projection with decelerationRate defaulting to 0.998.
- Reduced-transparency CSS that replaces translucent toolbars with solid backgrounds and no blur.
How It Works
- 01Respond on pointer-down
Feedback belongs to the press, not the release: highlight the control the instant it is pressed, and treat anything non-essential on the input path, including the ~300ms tap delay, as a regression.
- 02Track the Pointer 1:1
Use Pointer Events with capture so tracking survives the pointer leaving the element's bounds, and respect where the user grabbed rather than snapping to the element's center.
- 03Make Motion Interruptible
A moving element must be grabbable and reversible mid-flight; the user should never have to wait for the current animation to finish before redirecting it.
- 04Model Motion with Springs
A spring absorbs new input by simply changing its target, so the motion stays continuous; fixed-duration scripts have nothing to re-target.
- 05Hand Off Release Velocity
Give the spring the pointer's velocity at release so there is no seam between dragging and animating; normalize by the remaining distance when the API wants relative velocity.
- 06Project Momentum, Then Snap
Do not snap from where the finger let go; project the resting position the way scroll deceleration would and choose the snap target nearest that projection.