demo · v133

Paginated Reader

Chrome 133 adds getAllRecords() to IDBObjectStore and IDBIndex, plus a direction option for getAll()/getAllKeys(). This demo uses both to implement a paginated reader on a live IndexedDB store — forward and reverse paging via the direction option, with getAllRecords() returning key + primaryKey + value in one call. Compare timing against the cursor fallback.

Checking getAllRecords() / direction option support…
getAllRecords()
cursor fallback
Primary key Title Category Score
Seed the DB then load a page.
Seed the database, then click "Load page".
// Chrome 133: getAllRecords() with direction option
const store = db.transaction('items', 'readonly').objectStore('items');

// Read page N in reverse order, getting key + primaryKey + value
const records = await new Promise((resolve, reject) => {
  const range = IDBKeyRange.bound(
    pageStart, pageEnd
  );
  const req = store.getAllRecords({
    query:     range,
    count:     pageSize,
    direction: 'prev',   // ← new in Chrome 133
  });
  req.onsuccess = e => resolve(e.target.result);
  req.onerror   = e => reject(e.target.error);
});

// Each record: { key, primaryKey, value }
records.forEach(({ key, primaryKey, value }) => {
  console.log(key, primaryKey, value.title);
});

see also