Better Grain update.
I optimized the texture system further so it holds up better across real Framer pages.
The main change: Better Grain now uses reused WebP texture assets instead of per-instance noise generation. Static mode uses embedded WebP tiles. Animated mode uses WebP sprite sheets, stepped CSS motion, viewport-gated animation, and static fallbacks for canvas, static render, restricted render, and reduced motion.
I stress-tested 100 placements on one page under 20× Lighthouse CPU throttling. Because the same texture assets are reused across placements, the page does not generate 100 unique noise layers. In that setup, the 100 placements resolved closer to 2 reused texture sources than 100 separate generators.
Grab it here:
Better Grain update.
I optimized the texture system further so it holds up better across real Framer pages.
The main change: Better Grain now uses reused WebP texture assets instead of per-instance noise generation. Static mode uses embedded WebP tiles. Animated mode uses WebP sprite sheets, stepped CSS motion, viewport-gated animation, and static fallbacks for canvas, static render, restricted render, and reduced motion.
I stress-tested 100 placements on one page under 20× Lighthouse CPU throttling. Because the same texture assets are reused across placements, the page does not generate 100 unique noise layers. In that setup, the 100 placements resolved closer to 2 reused texture sources than 100 separate generators.
Grab it here: