Multimedia showcase
A media-heavy page rendered the React Server Components way: the page shell, section layout, and this very copy are produced on the server and stream as HTML — zero of this text ships as JavaScript. Only the genuinely interactive pieces (the two video players and the two image lightboxes) hydrate as small client islands.
Everything below distills hands-on experiments into one page:
- Video, two ways —
react-playerv3 in light/facade mode vs. a hand-rolled<video>+hls.js. Both defer the heavy player/streaming JS until you click, which is the single biggest LCP win the benchmarks found. - Image gallery, two ways — the same responsive grid wired to
react-image-lightboxand to its maintained successoryet-another-react-lightbox.
Read the code comments for why each choice was made — they cite the measurements behind them.
Light mode (facade)
react-player renders just the poster + a play icon; the hls.js engine and the player module are both fetched on click. The poster is a real video frame from Mux's image service.

Vanilla <video> + hls.js
No player library. Feature-detected (MSE-first, native-HLS fallback), with hls.js dynamically imported only on the first click. The poster is self-supplied because this raw test stream has no thumbnail service.
The deprecated incumbent
A responsive thumbnail grid (srcset/sizes, explicit dimensions, lazy below the fold) wired to react-image-lightbox — archived since 2023 but still widely used. Click any thumbnail.
The maintained successor
The same grid wired to yet-another-react-lightbox — actively maintained, React-19-ready, SSR-safe, with a cleaner controlled API. This is the recommended replacement.