Skip to main content
LanguageEnglish
Physics & Tokens4 min readOctober 2026

Why are spring animations better than cubic-bezier transitions?

Short answer

Springs are better for interactive UI because they can start from the element's current speed and position, so interrupted animations and released gestures continue smoothly. They also feel natural with few settings. Cubic-bezier curves are still fine, and simpler, for fades, colour changes and motion that is never interrupted.

Core Takeaway

  • A cubic-bezier curve has a fixed duration and shape
  • A spring is defined by stiffness, damping and mass, and settles when physics says so
  • Springs carry velocity, so interruptions and gestures stay smooth
  • Beziers are simpler and work well for fades and non-interactive transitions
  • Many modern platforms, including SwiftUI, default to springs

A cubic-bezier easing describes how a value moves from start to end over a fixed time, such as 300 milliseconds with ease-out. It is predictable and supported everywhere, including plain CSS.

A spring describes a physical system instead. You set stiffness, damping and mass, and the value moves towards its target the way a weight on a spring would, with or without overshoot. The duration comes from the physics.

The practical difference is interruption. If a user taps again while a panel is opening, a bezier animation usually restarts from the current position with zero speed, which looks like a hitch. A spring starts from the current position and speed, so the motion bends smoothly towards the new target. The same applies when a user throws a card or sheet with a gesture: the spring continues with the speed of the finger.

Springs also feel natural with fewer decisions: one or two settings give a consistent feel across elements of different sizes.

Beziers still have a place. For opacity, colour and transitions that never get interrupted, a short ease-out is simpler and works in CSS without JavaScript. Many teams use springs for movement and beziers for fades.

Frequently asked questions

Can CSS do spring animations?

CSS has no physical spring, but the linear() easing function can approximate a spring curve for a fixed duration. It does not carry velocity between interruptions.

What are good spring settings for UI?

Start with no or little overshoot for most UI and a small bounce for playful elements. Tune by feel on a real device.

Are springs slower to run?

Not noticeably in modern libraries and runtimes. The cost is mostly in the rendering of what moves, not the spring maths.

Should every animation be a spring?

No. Use springs for movement and interaction, and simple easing for fades and colour changes.

Related Guides & Examples

Feel the difference in the browser

Compare a spring and a bezier side by side, interrupt them, and copy the values you like.

Open the spring generator
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →