Documentation

Springs & Easing

Configure spring physics and easing curves for natural-feeling animations.

Springs & Easing

Every animation needs timing. motionwind-react-native supports two animation types: timing (duration + easing curve) and spring (physics-based).

Timing animations (default)

By default, animations use withTiming with an ease-out curve.

Duration

<mw.View className="animate-enter:opacity-100 animate-duration-300" />
<mw.View className="animate-enter:scale-100 animate-duration-1000" />

Note: On React Native, durations are in milliseconds (not seconds like the web package).

Named easing functions

ClassReanimated EasingWhen to use
animate-ease-outEasing.out(cubic)Elements entering (most common)
animate-ease-inEasing.in(cubic)Elements exiting (rare)
animate-ease-in-outEasing.inOut(cubic)Elements moving on screen
animate-ease-linearEasing.linearConstant-speed (loaders)
animate-ease-circ-outEasing.out(circle)Snappy, responsive
animate-ease-back-outEasing.out(back)Slight overshoot, playful

Custom cubic-bezier

<mw.View className="animate-enter:y-0 animate-ease-[0.23,1,0.32,1]" />

Spring animations

Springs simulate real physics. Use them for interactions that should feel alive.

Spring EntranceNative
9:41

Configure spring physics

ClassPropertyDefaultDescription
animate-stiffness-{n}stiffness100Higher = snappier
animate-damping-{n}damping10Higher = less oscillation
animate-mass-{n}mass10 (÷10 → 1.0)Higher = heavier, slower

Spring presets

Spring Presets ComparisonNative
9:41

Repeat and loop

Infinite pulse

Infinite PulseNative
9:41
// Repeat 3 times
<mw.View className="animate-enter:scale-110 animate-repeat-3" />

// Infinite loop
<mw.View className="animate-enter:rotate-360 animate-repeat-infinite animate-ease-linear" />

Stagger children

<mw.View className="animate-stagger-100 animate-delay-children-200">
  <mw.View className="animate-enter:opacity-100 animate-initial:opacity-0" />
  <mw.View className="animate-enter:opacity-100 animate-initial:opacity-0" />
  <mw.View className="animate-enter:opacity-100 animate-initial:opacity-0" />
</mw.View>

When to use spring vs. timing

Use caseRecommendation
Tap/press feedbackSpring (feels responsive)
Entrance animationsTiming with ease-out
Drag releaseSpring (maintains velocity)
Loading spinnersTiming with linear
Color transitionsTiming (springs can overshoot)

Next steps