Skip to content
← ALL RECEIPTS

The Theme Loop / Q4 2025

Cross-Browser Background Video, Shipped Solo Across Four Layouts.

Safari only played the first one. Chrome only showed thumbnails. Firefox lied about everything.

// The Problem

Three browsers, three different failure modes. Safari played only the first video on the page and ignored the rest. Chrome rendered static thumbnails instead of autoplaying. Firefox showed thumbnails but lied about the video state in its API responses. The store needed Liquid sections supporting four layout variants (columns, scroll, collapsible, slider), each capable of rendering either an image or a silent looping background video.

// The Fix

The root cause was browser autoplay policy enforcement. Each browser implements the spec differently, and Shopify's Liquid rendering compounded the inconsistencies. I built a custom IntersectionObserver solution that manages video lifecycle based on viewport visibility: videos load and play only when scrolled into view, pause when scrolled out (saving battery on mobile), and handle the Safari-specific quirk of requiring user gesture delegation for multiple video elements.

Zero third-party dependencies. Zero layout shifts. The videos are truly background elements: muted, looping, with no controls, and a static image fallback for browsers or devices that refuse autoplay entirely.

// outcome

All four layouts (columns, scroll, collapsible, slider) shipping background video on Safari, Chrome, and Firefox.

4

Layout variants

3

Browsers reconciled

1

Hand-rolled IO solution

0

Third-party deps

// NDA note

This project was completed under NDA. Full narrative with technical detail, trade-offs, and sanitized artifacts available under your own NDA. Contact directly to request the long form.

Got a similar problem? Let’s talk.