From 23083c32b02ea21884e9cfa8cc24d76eb751dbac Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Wed, 25 Mar 2026 17:55:52 -0700 Subject: [PATCH] fix: serve sw.js and manifest.json with no-cache header Cloudflare was caching sw.js for 4 hours (default JS caching), preventing service worker updates from reaching clients. Co-Authored-By: Claude Opus 4.6 --- server/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/index.ts b/server/index.ts index 19a267e..b0451e7 100644 --- a/server/index.ts +++ b/server/index.ts @@ -2936,8 +2936,8 @@ async function serveStatic(path: string, url?: URL): Promise { const headers: Record = { "Content-Type": getContentType(path) }; if (url?.searchParams.has("v")) { headers["Cache-Control"] = "public, max-age=31536000, immutable"; - } else if (path.endsWith(".html")) { - // HTML must revalidate so browsers pick up new hashed JS/CSS references + } else if (path.endsWith(".html") || path === "sw.js" || path === "manifest.json") { + // HTML, service worker, and manifest must revalidate every time headers["Cache-Control"] = "no-cache"; } else if (path.startsWith("assets/")) { // Vite content-hashed assets are safe to cache long-term