GSAP + ScrollTrigger
Timeline sequencing & scroll scrubbing
Everything below is wired into a real production build of this site — not a
sandbox. Each library was installed, integrated, measured in the emitted
bundle, and then judged on whether it earned its bytes. Sizes come from the
live vite build output: raw, gzip and brotli, per library.
“Adopted” means shipped on the main page. “Lab only” means integrated and demonstrated here but deliberately left out of the production critical path.
| Library | Verdict | Raw | Gzip | Brotli | What it does here |
|---|---|---|---|---|---|
| Measuring the build… | |||||
Scroll-driven demos start when they enter the viewport. Interactive ones are labelled with what to try.
Timeline sequencing & scroll scrubbing
Inertial smooth scrolling
This whole page is scrolling through Lenis right now — the native scrollbar is bypassed.
Text splitting for masked reveals
Ship the interface, not just the model.
—
Spring physics for UI
Click a track — the spring overshoots and settles, the tween just stops.
SVG drawing, motion paths, text scramble
svg · stagger · motionpath · scramble
WebGL shader + 3D geometry
Declarative interactive particles
Move the pointer through it, or click to push particles out.
Vector animation from JSON
State-machine driven vector animation
Automatic FLIP layout transitions
Anything with a timeline or a scroll position: the pinned hero flight and
the scrubbed exit of the hero copy. One ScrollTrigger, plus the
refresh() bookkeeping that keeps its measurements honest
after fonts and resizes land.
Inertial scrolling, driven off the GSAP ticker so the two share a single rAF loop. The flight camera reads better against interpolated scroll than against raw wheel deltas.
The dark chapter: node graph, shader floor, dust field and the bloom → tone map → grade chain. Scroll drives a scroll-scrubbed position along a curve; dragging adds a look offset in a separate accumulator, so the two inputs cannot fight.