What Figma Motion does well:
Run separate easing on each segment of one track
Switch a layer on or off with
HOLDopacityExport CSS
@keyframes, with the easing on the keyframe that starts the segment
What Figma Motion doesn't do yet:
Respond to a hover, press or drag, so the cursor is a sequence of glyphs
Replace a transform, since translation composes with the resting one
Reflect playback settings in the export, so a play once timeline still exports as
infinite
Where the rules came from:
The brand motion spec has two curves. Exponential is the default for moves, and Circle In/Out is for arrivals and settles. The rail uses them that way, with the drag on Exponential and the settle on Circle In/Out. Every segment is X only and sits on a duration token, at 600, 400 and 300 ms. Each move totals about a second.
Reuse
The pattern is a rail with a pitch, a list of stops, a drag segment and a settle segment. A new width changes the pitch and the stops and leaves the timings alone. Another column adds a stop and a move. The cursor's travel is the drag distance, so it comes from the same numbers.




