demo · v132
Spot the broken event listeners
Paste your code — or pick from common patterns — and the scanner highlights the broken patterns. navigator.storage.addEventListener calls now throw. Plus a checklist to mark off as you migrate.
scanner
checking…
before / after patterns
before (broken in v132)
navigator.storage.addEventListener(
"quotachange",
() => refresh()
);
navigator.storage.onquotachange = refresh;
// EventTarget-shaped helpers
const proto = Object.getPrototypeOf(navigator.storage);
proto.addEventListener.call(navigator.storage, ...);
after (works everywhere)
// poll
setInterval(async () => {
const e = await navigator.storage.estimate();
refresh(e);
}, 60000);
// observe via Storage Buckets quota change
const b = await navigator.storageBuckets.open("default");
const e = await b.estimate();
// (no quotachange event — check on writes)
// or just call estimate() after big writes
async function bigWrite(blob) {
await ofsStore.add(blob);
refresh(await navigator.storage.estimate());
}
migration checklist
Grep
navigator.storage.addEventListener in your codebase Grep
navigator.storage.onquotachange Grep for inherited EventTarget patterns on storage
Replace with periodic
navigator.storage.estimate() polling Or refresh after every write path that grows storage
Drop any try/catch around the old addEventListener call
Test in Chrome 132+ that no TypeError fires on load