Transitions, Easing and Springs

This content was generated with the assistance of AI and should be verified against the official Figma documentation before being relied on in production.

This sub-section’s Figma bibliography lists the reference material consulted while preparing these pages.

This page was written on 2026-10-30 against the UI3 interface of Figma Design. Prototype transitions, easing and spring animations are generally available on all plans, and setting them needs edit access to the file, which in practice means a Full seat. Viewing a prototype needs no more than view access. Here the focus is how a connection animates; creating the connection itself, triggers and actions are on Prototyping Basics, layer matching for Smart animate is on Smart Animate, and keyframe timelines are on Figma Motion.

The running example is the Bookshelf app. Tapping a book card opens the detail screen. With no animation the screen simply replaces the previous one; with a transition, an easing curve or a spring, the movement tells the reader where the new screen came from and how heavy or light the interface feels.

The model

A transition is the animation played when a connection navigates (or swaps an overlay) from one frame to another. Three independent choices shape it:

  • Transition type: what moves. Instant, Dissolve, Move in, Move out, Push, Slide in, Slide out and Smart animate are the names used in the prototype settings. Whether a type exposes direction buttons depends on the type; check them in your app.

  • Duration: how long it lasts, in milliseconds.

  • Easing: how speed changes during that time. Either a bezier curve (preset or custom) or a spring.

Six rows of three frames each, showing Dissolve, Move in, Move out, Push, Slide in and Slide out at 0, 50 and 100 percent
Figure 1. Six transitions drawn as start, middle and end frames

Where it lives in UI3

Select the source layer or frame, open the Prototype tab of the right sidebar, and click an interaction to edit it. The interaction details hold the trigger and the action. For navigation actions the Animation settings are the part this page describes: the transition type, its direction where one is offered, the easing and the duration. Hovering the preview inside the interaction details plays the animation. Use Present (the play button in the toolbar) to run the whole prototype.

Opening a prototype in a new tab is bound to a keyboard shortcut (Option Command Return on macOS, Ctrl Alt Enter on Windows, at the time of writing); confirm it in the shortcut list of your app, because shortcuts can change.

The transition types

  • Instant: no animation; the destination appears at once.

  • Dissolve: the old frame cross-fades into the new one. Smart animate falls back to a dissolve when it cannot match layers.

  • Move in and Slide in: the destination frame enters above the original frame. The Figma help describes both as bringing the destination in above the original frame. Move out and Slide out are their counterparts for leaving.

  • Push: the destination pushes the original frame out of the way, so both move.

  • Smart animate: matching layers in the two frames animate between their properties instead of the frames as wholes; unmatched layers use a fallback. Because it is about layer names and hierarchy, it has its own page: Smart Animate. To combine another transition with it, the interaction details offer a "Smart animate matching layers" option.

Which types accept easing and a duration is not spelled out in the help article for every type, so test each one in your app: the Figma documentation states clearly that Smart animate takes easing and duration.

Five-step storyboard: connect the book card, pick Move in, set duration and easing, compare with a spring, then play
Figure 2. The choices on one connection

Easing curves

Easing describes how the animation’s progress changes over time. The preset bezier curves in the Figma help are: Linear, Ease in, Ease out, Ease in and out, Ease in back, Ease out back and Ease in and out back.

  • Linear: constant speed. It feels mechanical.

  • Ease in: starts slowly and speeds up. Suited to things leaving the screen.

  • Ease out: starts fast and slows down. Suited to things arriving, because the eye can settle on the result.

  • Ease in and out: slow, fast, slow.

  • Back variants: add anticipation (a small pull back before moving), overshoot (going past the target and returning), or both. Ease in and out back creates an anticipatory move at the start and a rebound before the final state.

Eight small plots of progress over time for the preset easing curves and a custom bezier
Figure 3. Easing presets plotted as progress over time

Custom bezier

Choose Custom bezier in the curve menu to edit the curve by dragging its handles or typing four numbers. The curve’s start and end are fixed at (0, 0) and (1, 1), and the numbers correspond to the arguments of the CSS function cubic-bezier(x1, y1, x2, y2). A curve can extend beyond the graph’s edges to create anticipation or rebound. A custom curve cannot be saved for reuse, but its numbers can be copied and pasted to other interactions.

/* the same numbers can be reused in code */
.detail-screen {
  transition: transform 300ms cubic-bezier(0.2, 0.9, 0.3, 1);
}

The values above are an example, not a Figma preset. Source: Figma Learn: Prototype easing and spring animations

Springs

A spring replaces a fixed curve with a physical simulation, so the movement can settle, overshoot or wobble. The presets are Gentle, Quick, Bouncy and Slow, plus Custom.

Four plots of position over time showing Slow, Gentle, Quick and Bouncy springs settling at the final position
Figure 4. Spring presets compared as position over time

A custom spring exposes three values:

  • Stiffness: influences the number of bounces. Adjust it by dragging the graph.

  • Damping: influences how springy the animation is. Adjust it from the graph.

  • Mass: influences the speed of the animation and the height of the bounce. Type it manually; changing it also changes the duration shown in milliseconds.

Three cards for stiffness, damping and mass, each with a small spring curve and a note on its effect
Figure 5. The three custom spring values

Springs have no single fixed duration the way a bezier does, which is why changing mass is reflected in the millisecond value. Figma’s engineering blog describes building on the WebKit spring solver and simplifying the controls to handles on the curve (How Figma put the bounce in spring animations).

Procedures on the Bookshelf scenario

Animate the book-card to detail navigation

  1. Open the Bookshelf file and the Prototype tab in the right sidebar.

  2. Select the "The Hobbit" book card and drag the connection handle to the detail frame, or open the existing interaction.

  3. Keep the trigger as On click and the action as Navigate to.

  4. In the animation settings choose Move in and, where direction buttons are offered, pick the direction from the right so the detail screen arrives as if pushed from the side.

  5. Set the easing to Ease out and the duration to 300 ms.

  6. Hover the preview in the interaction details to check the motion, then present the prototype and click the card.

Replace the curve with a spring

  1. Open the same interaction and change the easing from Ease out to a spring preset.

  2. Try Quick, then Bouncy. Bouncy overshoots the final position; for a reading app, Quick or Gentle is usually the calmer choice.

  3. For a custom feel, choose Custom and drag the graph (stiffness and damping), then type a mass value and watch the duration update.

  4. Copy the numeric values, select the "Add to shelf" button interaction and paste them so both interactions feel the same.

Make the back navigation match

  1. Select the back arrow on the detail frame and create a connection to the library frame with Navigate back or Navigate to.

  2. Use the mirrored direction and a complementary easing, for example Ease in for leaving, so entry and exit are readable as a pair.

Choosing well and pitfalls

  • Match the transition to meaning: Push and Slide suggest hierarchy and direction, Dissolve suggests a change without spatial relation, Instant suits tab switches.

  • Keep durations short for frequent actions. The Figma help suggests a longer duration while building the prototype so you can see what is happening; shorten it again before testing with people.

  • Overshoot and bouncy springs draw attention; use them sparingly and offer an alternative for people who prefer reduced motion (see Accessible and Inclusive Design).

  • A prototype animation previews intent. The code that ships uses the platform’s own animation system, so hand off the numbers (duration, curve, spring values) as described on Dev Mode.

  • Smart animate silently falls back to a dissolve when layers do not match.

Where older guides are outdated

Guides written for the pre-UI3 interface (the 2022 and 2024 books) show the old interface and the interaction details dialog of that period. UI3 has been the only interface since 2025-04-30. The trigger "Mouse move inside/outside" was renamed "Mouse enter/leave". Those books also predate Figma Motion, which in 2026 added a keyframe timeline for animation beyond prototype transitions; see Figma Motion.