Files
famapp/docs/tasks/51-offline.md
T
ginnoir b89690a9f2 Initial scaffold: tooling, plan, task briefs
- 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).
2026-05-06 00:05:50 -05:00

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.