Great!
LGTM1
On Thu, Jul 31, 2025 at 11:34 AM 'Steve Becker' via blink-dev
<blink-dev@chromium.org> wrote:
I merged the W3C IndexedDB getAllRecords() spec PR
<https://github.com/w3c/IndexedDB/pull/461> after reviews from
Evan Stade (Microsoft Edge) and Steffen Larssen (Ladybird).
Please file an issue in the GitHub
<https://github.com/w3c/IndexedDB/issues/new>if you have any
additional feedback and I'll investigate. A few months ago, I
volunteered to be an editor of the W3C IndexedDB spec.
The W3C Tag Review also completed
<https://github.com/w3ctag/design-reviews/issues/1117> after I
sent this intent to ship.
Thank you for reviewing!
- Steve
On Wednesday, July 30, 2025 at 12:32:44 PM UTC-7 Evan Stade wrote:
Thanks for the ping. I'm happy with the status of the PR and
I think it's ready to merge.
On Wednesday, July 30, 2025 at 8:12:58 AM UTC-7 Alex Russell
wrote:
Per today's API OWNERS, there's some question about if
and when the spec change might land.
Evan, do you have insight into that process?
Best,
Alex
On Thursday, July 24, 2025 at 8:40:07 PM UTC+1
Chromestatus wrote:
Contact emails
ste...@microsoft.com, rah...@microsoft.com,
evan...@microsoft.com
Explainer
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/IndexedDbGetAllEntries/explainer.md
Specification
https://github.com/w3c/IndexedDB/pull/461
Summary
This feature adds the getAllRecords() API to
IndexedDB's IDBObjectStore and IDBIndex. It also adds
a direction parameter to getAll() and getAllKeys().
This functionality enables certain read patterns to
be significantly faster when compared to the existing
alternative of iteration with cursors. One key
workload from a Microsoft property showed a 350ms
improvement. getAllRecords() effectively combines
getAllKeys() and getAll() by enumerating both primary
keys and values at the same time. For an IDBIndex,
getAllRecords() also provides the record's index key
in addition to the primary key and value.
getAllRecords() can optionally return records in
either ascending or descending order. This option is
also back-ported to the existing operations getAll()
and getAllKeys().
Blink component
Blink>Storage>IndexedDB
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EStorage%3EIndexedDB%22>
Search tags
IndexedDB <http:///features#tags:IndexedDB>,
getAllRecords <http:///features#tags:getAllRecords>,
IDBObjectStore
<http:///features#tags:IDBObjectStore>, IDBIndex
<http:///features#tags:IDBIndex>
TAG review
https://github.com/w3ctag/design-reviews/issues/1117
TAG review status
Pending
Risks
Interoperability and Compatibility
Overloading getAll() and getAllKeys() to accept the
IDBGetAllOptions dictionary introduces compatibility
risk. Prior to this proposal, when passed a
dictionary argument, both getAll() and getAllKeys()
throw an exception after failing to convert the
dictionary to a key range. After the overload,
getAllKeys() and getAll() will no longer throw for
dictionary input. When the IDBGetAllOptions
dictionary initializes with its default values, it
creates a query that retrieves all of the keys or
values from the entire database.
/Gecko/: Positive
(https://github.com/mozilla/standards-positions/issues/1261)
/WebKit/: No signal
(https://github.com/WebKit/standards-positions/issues/521)
/Web developers/: Positive
(https://nolanlawson.com/2021/08/22/speeding-up-indexeddb-reads-and-writes)
Developers have reported the limitations addressed by
getAllRecords(), including: "You cannot build a
paginated cursor in descending order." The following
includes another example where getAll() could help
but needs to retrieve the index key and primary key:
https://stackoverflow.com/questions/44349168/speeding-up-indexeddb-search-with-multiple-workers
/Other signals/:
WebView application risks
Does this intent deprecate or change behavior of
existing APIs, such that it has potentially high risk
for Android WebView-based applications?
None
Debuggability
None
Will this feature be supported on all six
Blink platforms (Windows, Mac, Linux,
ChromeOS, Android, and Android WebView)?
Yes
Is this feature fully tested by
web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
Yes
https://wpt.fyi/results/IndexedDB?label=master&label=experimental&aligned&q=getallrecords
<https://wpt.fyi/results/IndexedDB?label=master&label=experimental&aligned&q=getallrecords>
Flag name on about://flags
Finch feature name
IndexedDbGetAllRecords
Rollout plan
Will ship enabled for all users
Requires code in //chrome?
False
Tracking bug
https://issues.chromium.org/issues/40746016
Sample links
https://patrickbrosset.com/articles/2024-11-19-even-faster-indexeddb-reads-with-getallrecords
https://microsoftedge.github.io/Demos/idb-getallrecords
Estimated milestones
Shipping on desktop 141
DevTrial on desktop 133
Shipping on Android 141
Shipping on WebView 141
Anticipated spec changes
Open questions about a feature may be a source of
future web compat or interop issues. Please list open
issues (e.g. links to known github issues in the
project for the feature specification) whose
resolution may introduce web compat/interop risk
(e.g., changing to naming or structure of the API in
a non-backward-compatible way).
None
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5124331450138624?gate=5186127942909952
Links to previous Intent discussions
Intent to Prototype:
https://groups.google.com/a/chromium.org/g/blink-dev/c/zLHOayUfTcw/m/Z13e2qGhBQAJ
This intent message was generated by Chrome Platform
Status <https://chromestatus.com>.
--
You received this message because you are subscribed to the
Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to blink-dev+unsubscr...@chromium.org.
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8e5d76bd-4818-420c-a1eb-1bcd465bd1edn%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8e5d76bd-4818-420c-a1eb-1bcd465bd1edn%40chromium.org?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to blink-dev+unsubscr...@chromium.org.
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw8ppcado8_EdOYQF70fxy9mMZ%2B2VYLmgkCHrGnxTZefmg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw8ppcado8_EdOYQF70fxy9mMZ%2B2VYLmgkCHrGnxTZefmg%40mail.gmail.com?utm_medium=email&utm_source=footer>.