Skip to content

Commit 7dcbcdf

Browse files
committed
Fix service worker caching stale versions on deploy
1 parent d122a3a commit 7dcbcdf

3 files changed

Lines changed: 15 additions & 0 deletions

File tree

src/main.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,22 @@ import "@fontsource/geist-sans/500.css";
44
import "@fontsource/geist-sans/600.css";
55
import "@fontsource/geist-sans/700.css";
66
import "./index.css";
7+
import { registerSW } from "virtual:pwa-register";
78

89
import { StrictMode } from "react";
910
import { createRoot } from "react-dom/client";
1011
import { App } from "./App";
1112

13+
registerSW({ immediate: true });
14+
15+
// Auto-reload when a new service worker replaces the current one
16+
// Guard: only listen if a controller already exists (skip first-visit registration)
17+
if ("serviceWorker" in navigator && navigator.serviceWorker.controller) {
18+
navigator.serviceWorker.addEventListener("controllerchange", () => {
19+
window.location.reload();
20+
});
21+
}
22+
1223
createRoot(document.getElementById("root")!).render(
1324
<StrictMode>
1425
<App />

src/vite-env.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
/// <reference types="vite/client" />
2+
/// <reference types="vite-plugin-pwa/client" />

vite.config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export default defineConfig({
2323
},
2424
workbox: {
2525
globPatterns: ["**/*.{js,css,html,woff2,png,svg}"],
26+
skipWaiting: true,
27+
clientsClaim: true,
28+
cleanupOutdatedCaches: true,
2629
},
2730
}),
2831
],

0 commit comments

Comments
 (0)