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
-
pendingDatabase open/close cycleVerify IDBDatabase.open() returns a valid database and close() completes cleanly.
-
pendingTransaction commit and abortCommit and explicit abort both complete without errors; aborted writes don't persist.
-
pendingCursor iterationIDBCursor.continue() iterates all records; cursor count matches put count.
-
pendingIndex query correctnessRecords inserted and retrieved by secondary index match original data.
-
pendingTransaction durability modeBoth
readwriteandreadwrite-relaxeddurability complete. SQLite may differ in fsync timing. -
pendingStorageManager quota estimate
navigator.storage.estimate()returns usage > 0 after writes. SQLite may report usage differently.
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
- Bulk Write Stress — stress test large write batches
- Transaction Durability — compare durability modes
- Feature index
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗