DocsJavaScriptMotion reference

springValue

springValue() creates motion values driven by physics, with stiffness, damping, and mass.

springValue creates a new motion value that reacts to changes with a physics-based spring animation.

springValue either accepts a number:

const x = springValue(0)
const y = springValue("100%")

// These will go to their new target with a spring animation
x.set(100)
y.set("0%")

styleEffect("div", { x, y })

Or another motion value:

const pointerX = motionValue(0)
const x = springValue(pointerX)

document.addEventListener("pointerMove", (e) => {
  // x will animate these changes with a spring animation
  pointerX.set(e.clientX)
})

styleEffect("div", { x })
Live exampleOpen

Usage

springValue accepts either a number value or a motion value.

Number

A number can be provided with or without a unit:

import { springValue } from "motion"

const scaleX = springValue(0)
const rotate = springValue("1turn")

When we've provided a number, we can animate the returned motion value by calling its .set()

scaleX.set(1)
rotate.set("2turn")

Motion value

Alternatively, we can attach a spring onto another motion value by passing it to springValue:

const opacity = motionValue(1)
const x = mapValue(opacity, [0, 1], [0, 100])
const xWithSpring = springValue(x)

Options

All of the normal Motion spring options are supported via a second argument.

springValue(0, { stiffness: 1000 })

Visual editing for your agent.

Edit and preview Motion and CSS transitions live in your code. Tune ease curves, springs, and durations without leaving your editor.

Part of Motion AI Kit. One-time fee, lifetime access.