Protection makes the resident copy expensive to read. It cannot make an offline decision trustworthy, because there is nothing to check with. Design for deferred authority rather than local authority.
Whole app residentEvery precached route sits on disk and can be read at leisure
Two entry pointsThe service worker is a separate build input and a separate scope
Guards behave differentlyA worker scope has console, navigator and location; a worklet does not
Order mattersProtect before the precache manifest is generated, never after