About Motion Lab
How this
works
Motion Lab is a collection of animation techniques I keep coming back to on real projects. Each section on the homepage and each experiment card is a standalone component, built to be pulled apart and reused.
The approach
Every animation here does a specific job: guide focus, signal a state change, or give feedback on interaction. If a tween doesn't serve one of those, it gets cut.
Performance-wise: everything targets 60fps, respects
prefers-reduced-motion, and stays off the main thread where possible. GSAP handles most
of the scheduling, and Astro's partial hydration keeps the JS
payload small.
Techniques covered
Built With
Tech Stack
GSAP
v3.14Does the heavy lifting for every animation here. Timelines, scroll-linked tweens, SVG morphing. One API for all of it.
React
v19Each demo is a React component. useRef grabs DOM nodes, useEffect wires up GSAP, cleanup reverts on unmount.
Astro
v6Ships zero JS by default. React components only hydrate where you add client:visible, so static sections stay static.
SVG
v2.0All the shape and path animations are SVG. Scale to any size, animate any attribute, and GSAP's MorphSVG handles the interpolation.
Tailwind CSS
v4.2Handles all the layout and theming. Custom properties set the dark palette, utility classes keep the markup readable.
CSS Animations
vL3Some things don't need a library. Pulse rings, wave text, and hover transitions are pure @keyframes and transitions.
Back to the demos.
Back to Playground