Blog
Web motion, in practice
Springs, scroll-linked animation, interaction states, and how to tell whether what you export matches what you previewed.
September 20, 2026 · 4 min read
GSAP, Motion or plain CSS: a decision table
Three animation stacks, what each is actually good at, and the constraints that decide between them. No winner, because there isn't one.
September 20, 2026 · 3 min read
Hover, press and focus: one component, three dialects
Interaction states aren't keyframes — they last as long as the interaction does. What that changes, the hover bug almost everyone writes, and how the same three states come out in CSS, Motion and GSAP.
September 20, 2026 · 3 min read
prefers-reduced-motion in React, and the SSR case everyone skips
The usual hook works fine until you server-render it, then it flashes the animation it was supposed to suppress. Why that happens, and the version that doesn't.
September 20, 2026 · 3 min read
Scroll-linked animation: CSS, ScrollTrigger, or useScroll
Three ways to make something move as the page scrolls, what each one costs, and how to pick without guessing. Includes the same animation written in all three.
September 20, 2026 · 4 min read
Why your requestAnimationFrame animation restarts
The loop runs, then jumps back to the start, then runs again. Four causes, in the order you should check them, and the ref pattern that fixes most of it.
September 17, 2026 · 3 min read
How long should a stagger be?
Everyone reaches for a stagger and nobody says how to pick one. Three values that cover almost everything, the arithmetic that decides whether a list is charming or tedious, and why the per-item number is the wrong thing to tune.
September 16, 2026 · 5 min read
Turning a spring into CSS
A spring has no duration and no curve you can name, and CSS wants both. How verve samples one into a linear() easing, how the stops get chosen, and the parts that don't survive the trip.
September 16, 2026 · 4 min read
What stiffness and damping actually do
Stiffness, damping and mass aren't three independent dials. What each one changes, and why raising stiffness on its own mostly just adds bounce — measured with the solver that draws every spring in verve.
September 15, 2026 · 8 min read
How we check that your export matches your preview
How verve runs exported Motion, GSAP and CSS in a real browser and measures it against the editor's own engine, and the bugs that turned up.