FZ THE NAME · A PROOF PIECE
Crack the can.
Hear the fizz.
The soda-ad shot. Tap the can: it crunches, the tab pops, and the fizz sprays clean out of the card. Two views tell it side by side: the can from the side, and straight down into it as it fizzes.
By Chris Cooley ↗.
-let, as in applet: a very small app with one job. Fiz-, from the old soda commercial: a can cracks, the shot zooms in on the bubbles and the drip running down the side.
That shot looks expensive. Up close the fizz is full of detail, the kind of thing you'd reach for a heavy animation library to make. You don't need much to make it, though. That's the whole point: motion that looks complex, a tiny footprint, and the page as the stage.
It started with DOM VIRUS: small games with a few characters, running right inside a page, changing the DOM itself and then giving it back. The bar for every brick since is simple: do one thing well, and fit with everything around it.
Live chunk 8,665 B gzip (kernel + fx + sprite + the can, both views) · loader 2,040 B (@fzlt/core/slot) · poster 3,457 B · script per frame at 4× CPU throttle 1.1 ms avg, 13.6 ms max · settled: 0 frames a second. Measured in Chromium 153, 2026-10-30.
Kernel
settle and fps: 30. It runs while something moves, then sleeps: no frames at all until a tap.
@fzlt/core/fx
Two fixed pools. The spray flies on a layer above the card, so nothing crops it; the top view fizzes inside. Geyser, burst, bubbles, rings: kinds as data, sprayed with emit().
@fzlt/core/sprite
The can is pixel data: 20 × 40 from the side, 22 × 22 from the top, crunched or not. Baked once; the poster is the same pixels as SVG.
@fzlt/core/slot
Loads near the viewport, on an idle main thread. Reduced motion keeps the still frame; the scene never loads.