Dev.Lib
arrow_backBack to Blogs
LEVEL_1010.5June 27, 20261 min read

IndexedDB scaling strategy

Frontend Architecture

Async key-value store — large structured data, offline cache, not for hot reactive state.

Summary

Async key-value store — large structured data, offline cache, not for hot reactive state. Version migrations explicit (onupgradeneeded); blocking opens freeze UI. Index design for query patterns; batch transactions. Quota eviction under storage pressure — handle QuotaExceededError.

Code example

function openDb() {
  return new Promise((resolve, reject) => {
    const req = indexedDB.open('app-cache', 2);
    req.onupgradeneeded = () => {
      const db = req.result;
      if (!db.objectStoreNames.contains('posts')) {
        db.createObjectStore('posts', { keyPath: 'id' });
      }
    };
    req.onsuccess = () => resolve(req.result);
    req.onerror = () => reject(req.error);
  });
}

Key points

  • Async key-value store — large structured data, offline cache, not for hot reactive state.
  • Version migrations explicit (onupgradeneeded); blocking opens freeze UI.
  • Index design for query patterns; batch transactions.
  • Quota eviction under storage pressure — handle QuotaExceededError.

Further reading

Related concepts