1. Right tool?
- ☐ Hard problem is network policy / offline shell (not CPU jank)
- ☐ Secure context (HTTPS or localhost)
- ☐ Core UX still works without SW (progressive enhancement)
- ☐ Not using SW as a substitute for CDN/HTTP cache alone
2. Scope & registration
- ☐ Script URL covers the paths you need (default scope from SW path)
- ☐ Register after load on first visit (bandwidth)
- ☐ Same SW filename across deploys (update by bytes, not sw-v2.js)
3. Lifecycle & updates
- ☐ install: precache into new cache name; waitUntil failures fail install
- ☐ activate: delete obsolete cache names
- ☐ skipWaiting: intentional (mixed-version risk known)
- ☐ clients.claim: intentional (first-load control risk known)
- ☐ Plan for “waiting forever” / multi-tab update lag
4. Fetch policy
- ☐ respondWith only where you own the answer
- ☐ Navigation vs asset vs API strategies differ
- ☐ Clone when return + cache.put
- ☐ Fresh/critical data not cache-first by accident
5. Debug (Chromium)
- ☐ Application → Service Workers (status, update, unregister)
- ☐ Update on reload during dev
- ☐ Shift-reload bypasses SW for one load
- ☐ Network panel: “(from ServiceWorker)” vs disk/network