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."
|
content="Ambient AI teammate that catches merge collisions before anyone pushes."
|
||||||
/>
|
/>
|
||||||
<meta name="twitter:image" content="https://www.podman.live/og.png" />
|
<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>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
@@ -1,18 +1,14 @@
|
|||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from 'vite';
|
||||||
import react from '@vitejs/plugin-react';
|
import react from '@vitejs/plugin-react';
|
||||||
import tailwindcss from '@tailwindcss/vite';
|
import tailwindcss from '@tailwindcss/vite';
|
||||||
import { VitePWA } from 'vite-plugin-pwa';
|
|
||||||
import { fileURLToPath, URL } from 'node:url';
|
import { fileURLToPath, URL } from 'node:url';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
// No service worker in production. We deploy continuously during the event and
|
||||||
react(),
|
// any SW (even vite-plugin-pwa's self-destroying one) forces open tabs to
|
||||||
tailwindcss(),
|
// reload, which breaks the live demo. Existing SWs are torn down by the
|
||||||
// Self-destroying during active development: unregisters any previously
|
// cleanup snippet in index.html. Re-add a precaching PWA only post-event.
|
||||||
// installed service worker and clears its caches so deploys are always
|
plugins: [react(), tailwindcss()],
|
||||||
// fresh (no stale UI). Re-enable a precaching PWA before the demo.
|
|
||||||
VitePWA({ selfDestroying: true }),
|
|
||||||
],
|
|
||||||
server: {
|
server: {
|
||||||
port: 5173,
|
port: 5173,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user