Service Worker lifecycle + Cache API.
| Module | Returns | Deps | Description |
|---|---|---|---|
| backgroundSync | {register, list, support} |
serviceWorker |
Background Sync API — offline replay via SyncManager (Chrome only) |
| cache | {open, delete, has, keys, match} |
none | Cache API wrapper |
| serviceWorker | {register, unregister, ready, update, onUpdate, postMessage, onMessage, controller, isSupported} |
none | SW lifecycle (window-side) |
| push | {subscribe, unsubscribe, current, permission, support} |
serviceWorker, b64 |
PushManager wrapper — VAPID subscription, subscription, permission |
| sharedWorker | {create, support} |
processRPC |
SharedWorker cross-tab connection + bidirectional RPC |
Common pattern
const serviceWorker = runtime.resolve('serviceWorker');
const cache = runtime.resolve('cache');
// Register the SW
await serviceWorker.register('/sw.js', { scope: '/' });
// React to updates
serviceWorker.onUpdate((reg) => {
console.log('New SW waiting:', reg.waiting);
});
// Use the cache
const c = await cache.open('v1');
await c.put('/api/data', response);
const cached = await c.match('/api/data');