Short write‑ups of problems we hit running a real commerce operation and what we changed in the code because of them. No product announcements; just the reasoning.
Every storefront page is rendered once on the server — so crawlers and slow phones get full HTML — and once more in the browser, where it becomes an app. How Inertia server‑side rendering runs here (a Bun process under a supervisor, health‑checked on every deploy), what a 418 KB props payload taught us about where the second actually goes, the silent client‑side‑rendering incident, and the three levers we keep on the list.
Every deploy was emptying the storefront cache and restarting server-side rendering, even when nothing on the front end had changed. The cause was one string baked into one JavaScript chunk. The fix was a checksum and a meta tag.
Our storefronts are server-rendered and personalised, which is the worst case for an HTTP cache. Here is how we put Varnish in front of them anyway — two hash buckets, a logged-in bit, tagged objects, surgical bans, and a warmer that only warms what people actually visit.