Browser Storage for Firefox Extensions: localStorage vs IndexedDB vs storage.local
One of the first decisions when building a browser extension is where to store data. There are more options than you might expect, each with distinct tradeoffs.
The Options
localStorage — synchronous, 5-10MB limit, per-origin
sessionStorage — same as localStorage but clears on session end
IndexedDB — async, larger limits, supports complex queries
browser.storage.local — async, up to 10MB by default, extension-isolated
browser.storage.sync — synced across devices, 100KB limit, quota per item
browser.storage.session — in-memory, cleared on extension restart (MV3 only)
When to Use What
browser.storage.local — The Default Choice for Extensions
// Store data await browser . storage . local . set ({ weatherData : { temp : 72 , city : ' San Francisco ' }, lastUpdated : Date . now () });
// Read data const { weatherData , lastUpdated } = await browser . storage . local .…