Physics & Motion
Apple pioneered spring physics. We add emotional weight—UI elements feel heavier when delivering serious content, lighter when playful.
Spring Presets
Each spring configuration has an emotional context. Choose based on the feeling you want to create, not just timing.
Snappy
Efficient, responsive
Quick confirmations, toggles, micro-interactions
Gentle
Calm, welcoming
Modal appearances, card expansions
Bouncy
Joyful, playful
Celebrations, achievements, delightful moments
Heavy
Weighty, significant
Important decisions, serious content, warnings
Ethereal
Floating, dreamlike
Ambient elements, background particles, dreamy states
Organic
Alive, breathing
Avatar movements, natural gestures
Usage
import { SPRING } from 'design-system/tokens';
// Using with framer-motion
<motion.div
animate={{ scale: 1 }}
transition={{
type: "spring",
...SPRING.bouncy // tension: 300, friction: 10, mass: 1
}}
/>
// Using with react-spring
useSpring({
to: { opacity: 1 },
config: SPRING.gentle // tension: 170, friction: 26, mass: 1
})
Momentum Physics
Momentum preservation for gesture-driven interfaces. Elements remember their velocity.
Scroll
0.9980.50.55trueSwipe
500 px/s30%spring(gentle)spring(snappy)Drag
0.921.2spring(gentle)spring(bouncy)Throw
For dismissible cards, carousel items
300 px/s0.950trueGravity Effects
Gravity for falling, settling elements. Different weights create different emotional impacts.
Light
Gentle settling, soft landings
Normal
Standard physics
Heavy
Dramatic impacts, importance
Floating
Dreamy, underwater feel
Emotional Momentum
UI carries emotional weight from previous interactions. A celebration affects the next 5 seconds of motion.
After Celebration
bouncy5s1.5xAfter Serious Content
heavy10smutedAfter Quiet Moment
ethereal8s0.7xAfter High Energy
snappy3s1.2xContextual Weight
Element weight based on content importance. Critical messages move slower, demanding attention.
Critical
Mass: 2.5Spring: heavy, Delay: 200ms
Requires acknowledgment
Important
Mass: 1.5Spring: gentle, Delay: 100ms
Standard
Mass: 1Spring: gentle, Delay: 0ms
Ambient
Mass: 0.5Spring: ethereal, Delay: 0ms
Fluid Motion
Fluid dynamics for organic, living interfaces.
Wave
Loading states, ambient motion
Breathing
Subtle scale oscillation for living elements
Ripple
Touch ripple effects
Spatial Depth
Beyond flat design—true depth perception without being gimmicky.
z: -100, blur: 8px, parallax: 0.3
z: 0, blur: 0, parallax: 0.5
z: 50, shadow: md, parallax: 0.7
z: 100, scale: 1.02, parallax: 0.9
z: 200, shadow: xl, parallax: 1
Parallax Settings
0.0220px0.1enabledAccessibility
All motion respects user preferences for reduced motion.
Reduced Motion
For users with vestibular disorders
@media (prefers-reduced-motion: reduce) {
.spring-animation {
transition: none;
animation: none;
}
}
Motion Duration Limits
Maximum animation durations
- Micro-interaction: 150ms
- Standard: 400ms
- Page transition: 800ms
- Celebration: 1500ms
- Absolute max: 5000ms