/** * versionStore - Frontend build version * * Reads from SvelteKit's `_app/version.json` — generated by the @vite-pwa/sveltekit * plugin. The version string changes on every build, so comparing it against * localStorage reliably detects server upgrades. * * In dev mode, falls back to `'dev'`. */ import { browser } from '$app/environment'; import { base } from '$app/paths'; let version = $state(''); async function loadVersion() { if (!browser) return; if (import.meta.env.DEV) { version = 'dev'; return; } try { const res = await fetch(`${base}/_app/version.json`, { cache: 'no-store' }); if (res.ok) { const data = await res.json(); version = data.version ?? ''; } } catch { // _app/version.json missing or unreachable - leave as empty string } } loadVersion(); export const versionStore = { get value(): string { return version; } };