Service-worker interviews punish unconditional skipWaiting and wipe-all caches — you need a waiting + compatibility card
TL;DR: When a PWA ship leaves users with ChunkLoadError (deployed worker update + asset consistency—not SSR hydration, WS reconnect, optimistic fold, a11y, bug-bash, or teammate PR), the round scores update-policy ownership , not a lucky skipWaiting() . Durable habit: live-listen hashed assets / open-tab unsaved state / API dual-version tolerance → pin a speakable four-box card on a desktop live…
When a Progressive Web App (PWA) ships an update that leaves users with ChunkLoadError due to worker update inconsistencies, the round scores update-policy ownership rather than benefiting from an unconditional skipWaiting(). The recommended durable habit is to listen to hashed assets, maintain open-tab unsaved states, and enable API dual-version tolerance.
Pin a four-box card on a live overlay showing lifecycle wait, asset compatibility, adoption, and rollback+observe. This card should own the update policy and verify the matrix. Optional Application/Service Worker / ChunkLoadError shots can be used to anchor evidence but are not mandatory. A newly installed worker should wait until it is safe to adopt, identify compatible assets, and prove rollback.
Unconditional skipWaiting(), wiping caches on activate, renaming worker URL for forced updates, or testing only a fresh tab only may appear to work for a quiet ship but fail when long-lived tabs or dual-version APIs are present. The official guidance supports this approach. The web.dev service worker lifecycle explains why a newly installed worker waits for old clients to stay open, and warns against using skipWaiting() as a free refresh.
Chrome Workbox centers the waiting prompt, messageSkipWaiting, and a controlling reload. PracHub covers the two-tab timeline, skipWaiting ≠ page reload, and cache retention. A four-box speakable SW-update card is the recommended solution, with optional supporting evidence from OfferCC's SW-update question.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.