- pnpm 10 workspace + TypeScript strict + ESLint flat + Prettier - CLAUDE.md as canonical brief - docs/tasks/ — 22 task briefs broken out by phase for sub-sessions - docs/decisions/ — ADR scaffold Implements task 01 (repo-init).
29 lines
1.0 KiB
Markdown
29 lines
1.0 KiB
Markdown
# 51 — Offline shell + service worker caching
|
|
|
|
## Goal
|
|
|
|
The app shell loads without network; cached data is shown with a "stale" indicator while fresh data loads.
|
|
|
|
## Depends on
|
|
|
|
- 50
|
|
|
|
## Scope
|
|
|
|
- Service worker uses Workbox-style strategies (hand-rolled, see task 50 rationale):
|
|
- **App shell** (HTML, JS, CSS): stale-while-revalidate.
|
|
- **API GETs**: network-first with 2s timeout, fall back to cache.
|
|
- **Mutations**: never cache; if offline, show a clear "you're offline" toast.
|
|
- Offline page for navigations that have no cache.
|
|
- Version SW on every build; show a "new version available, refresh" toast when a new SW takes control.
|
|
|
|
## Out of scope
|
|
|
|
- Background sync of queued mutations (defer; usually more trouble than worth at this scale).
|
|
|
|
## Acceptance criteria
|
|
|
|
- [ ] In Chrome DevTools "Offline", reloading the app shows the cached dashboard with a stale-indicator.
|
|
- [ ] Attempting to mutate while offline shows a clear error, doesn't silently drop.
|
|
- [ ] Deploying a new build prompts active sessions to refresh.
|