v149 · IndexedDB · Storage

Migration Readiness Checker

Chrome 149's new SQLite-backed IndexedDB is transparent to the web API — but some usage patterns interact differently with the new engine. This checker runs live tests to verify your code is ready for the backend switch.

— run checks to see readiness score
readiness checks 0 / 6 run

what changed in the backend

Chrome's IndexedDB used to store data in LevelDB (key-value pairs) plus separate blob files. The SQLite backend stores everything in a single .db file. The web API hasn't changed — IDBDatabase, IDBTransaction, cursors, and indexes all work identically. The benefit: fewer file handles, atomic commits across tables, and better error recovery (SQLite's WAL mode).

// No API change — this code works identically on both backends:
const db = await new Promise((res, rej) => {
  const req = indexedDB.open('mydb', 1);
  req.onupgradeneeded = e => e.target.result.createObjectStore('items');
  req.onsuccess = e => res(e.target.result);
  req.onerror = rej;
});

const tx = db.transaction('items', 'readwrite');
tx.objectStore('items').put({ value: 42 }, 'key1');
await new Promise(r => tx.oncomplete = r);

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗