Shreyansh Kumar Singh

Case study · MOTION · 2609.MOT.09

Revuelto: Assembled — a car that builds itself as you scroll

Is a canvas image sequence better than a video element for scroll-driven product animation?

For scroll-scrubbed product animation, a canvas image sequence beats a <video> element: each scroll position maps to an exact frame that can be drawn instantly in either direction, while seeking a compressed video backwards is slow and imprecise. Revuelto: Assembled scrubs 110 WebP frames of a Lamborghini Revuelto on a canvas — scroll down and it assembles, scroll up and it comes apart — on a 5.5 MB page.

By Shreyansh Kumar Singh · Updated · Private repository — live demo above.

Revuelto: Assembled — the reveal beat, 'Back where it belongs,' the fully assembled Lamborghini Revuelto with its 1,001 HP spec chip
Frames
110 WebP, scrubbed live
Page weight
5.5 MB
3D libraries
0 — dropped for canvas
Stack
Next.js 16 · React 19 · Canvas 2D · Lenis · GSAP · Tailwind v4

01The problem it solves

Apple-style product pages tie animation to the scroll bar. The obvious implementations — scrubbing a video, or rebuilding the object in 3D — tend to stutter when scrolled backwards or cost far more than the effect is worth.

02What he built

A frame sequence on a canvas

A locked-off clip exported as 110 WebP frames and drawn to a Canvas 2D element according to scroll progress, with Lenis smoothing the scroll and GSAP sequencing the story beats: the exploded intro, mid-assembly, the reveal and the specification section.

03 — THE HARDEST DECISIONDrop Three.js for a canvas

A real-time 3D model was the obvious choice and the expensive one. A pre-rendered frame sequence gives photographic quality, deterministic frames in both scroll directions, and a predictable budget — the whole page weighs 5.5 MB — so Three.js and React Three Fiber were dropped in favour of a canvas.

04The result

A scroll-driven teardown that runs smoothly forwards and backwards, built in Next.js 16 and React 19 with Tailwind v4 — the motion end of the range.

NOTESQuestions this project answers

STACKTech stack

  • Next.js 16
  • React 19
  • Canvas 2D
  • Lenis
  • GSAP
  • Tailwind v4

MORE OF THE RANGEMore projects by Shreyansh Kumar Singh