fix(frontend): remove PWA service worker to stop demo reloads
Drop vite-plugin-pwa and add an index.html snippet that unregisters any leftover service worker and clears its caches on load. Continuous deploys during the event plus a self-destroying SW were forcing open tabs to reload mid-demo. Browsers self-heal on next load; re-add a precaching PWA post-event. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -30,6 +30,27 @@
|
||||
content="Ambient AI teammate that catches merge collisions before anyone pushes."
|
||||
/>
|
||||
<meta name="twitter:image" content="https://www.podman.live/og.png" />
|
||||
|
||||
<script>
|
||||
// Tear down any service worker we shipped earlier (vite-plugin-pwa).
|
||||
// PodMan runs no PWA in production: we deploy continuously and SW-driven
|
||||
// reloads break the live demo. This unregisters leftover workers and
|
||||
// clears their caches on every load so previously-affected browsers
|
||||
// self-heal — no manual DevTools needed. It does NOT reload the page and
|
||||
// is a no-op once nothing is registered.
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker
|
||||
.getRegistrations()
|
||||
.then((regs) => regs.forEach((r) => r.unregister()))
|
||||
.catch(() => {});
|
||||
if (window.caches && caches.keys) {
|
||||
caches
|
||||
.keys()
|
||||
.then((keys) => keys.forEach((k) => caches.delete(k)))
|
||||
.catch(() => {});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
import { defineConfig } from 'vite';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import tailwindcss from '@tailwindcss/vite';
|
||||
import { VitePWA } from 'vite-plugin-pwa';
|
||||
import { fileURLToPath, URL } from 'node:url';
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
react(),
|
||||
tailwindcss(),
|
||||
// Self-destroying during active development: unregisters any previously
|
||||
// installed service worker and clears its caches so deploys are always
|
||||
// fresh (no stale UI). Re-enable a precaching PWA before the demo.
|
||||
VitePWA({ selfDestroying: true }),
|
||||
],
|
||||
// No service worker in production. We deploy continuously during the event and
|
||||
// any SW (even vite-plugin-pwa's self-destroying one) forces open tabs to
|
||||
// reload, which breaks the live demo. Existing SWs are torn down by the
|
||||
// cleanup snippet in index.html. Re-add a precaching PWA only post-event.
|
||||
plugins: [react(), tailwindcss()],
|
||||
server: {
|
||||
port: 5173,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user