mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
The v1.4.38.3 `AppError` boundary reloads once when a stale shell trips `ChunkLoadError`, but the reload only fires AFTER the user hits a navigation that lazy-loads a missing chunk. Users sitting on the dashboard or insights overview ride out the staleness until their next click; some never click and the cached shell silently drifts further out of date with every deploy. Three layered fixes so the running app heals itself instead: - `public/sw.js` now keys both `STATIC_CACHE` and `PAGE_CACHE` to the app release tag (`v1.4.38.4`). The `activate` step already evicts any cache name outside the current pair, so bumping the string at release time guarantees the precached root HTML and the precached `/_next/static/*` chunks from the previous deploy are dropped on the next SW install. - `next.config.ts` injects `NEXT_PUBLIC_APP_VERSION` from `package.json` into the client bundle so the running shell knows which release it was built against. - New `<VersionPoller>` client component mounts inside `<Providers>` and polls `/api/version` every 60 s. If the live version moves ahead of the shell-baked version it unregisters every active SW, wipes CacheStorage, and `window.location.reload()`s. `sessionStorage` gates the reload to once per session so a mid-deploy webhook race that briefly returns a stale image cannot loop the page.