Intent to Ship: fetchLater API

254 views
Skip to first unread message

Chromestatus

unread,
Feb 12, 2025, 5:58:29 AMFeb 12
to blin...@chromium.org, deno...@chromium.org, my...@chromium.org, pending-beac...@chromium.org

Contact emails

my...@chromium.org, deno...@chromium.org, pending-beac...@chromium.org

Explainer

https://github.com/WICG/pending-beacon/blob/main/docs/fetch-later-api.md

Specification

https://whatpr.org/fetch/1647/07662d3...139351f.html

Design docs


https://github.com/WICG/pending-beacon/blob/main/docs/fetch-later-api.md
https://docs.google.com/document/d/1U8XSnICPY3j-fjzG35UVm6zjwL6LvX6ETU3T8WrzLyQ/edit#heading=h.ms1oipx914vf

Summary

fetchLater() is a JavaScript API to request a deferred fetch. Once called in a document, a deferred request is queued by the browser in the PENDING state, and will be invoked by the earliest of the following conditions: * The document is destroyed. * After a user-specified time. For privacy reason, all pending requests will be flushed upon document entering bfcache no matter how much time is left. * Browser decides it's time to send it. The API returns a FetchLaterResult that contains a boolean field "activated" that may be updated to tell whether the deferred request has been sent out or not. On successful sending, the whole response will be ignored by browser, including body and headers. Nothing at all should be processed or updated, as the page may have already be gone. Note that from the point of view of the API user, the exact send time is unknown.



Blink component

Blink>Network>FetchAPI

Search tags

beacon, pending beacon, page unload beacon, unload beacon, fetchlater

TAG review

https://github.com/w3ctag/design-reviews/issues/887

TAG review status

Issues addressed

Origin Trial Name

FetchLater API

Chromium Trial Name

FetchLaterAPI

Origin Trial documentation link

https://chromium.googlesource.com/chromium/src/+/main/docs/experiments/fetch-later.md

WebFeature UseCounter name

kFetchLater

Risks



Interoperability and Compatibility

None



Gecko: Positive (https://github.com/mozilla/standards-positions/issues/703)

WebKit: Support (https://github.com/WebKit/standards-positions/issues/85)

Web developers: Positive (https://discourse.wicg.io/t/proposal-stateful-javascript-page-unload-beacon-api/5776)

Other signals: W3C WebPerf: https://w3c.github.io/web-performance/meetings/2022/2022-03-31/index.html

Security

https://github.com/WICG/pending-beacon/blob/main/docs/fetch-later-api.md#security-considerations https://docs.google.com/document/d/1U8XSnICPY3j-fjzG35UVm6zjwL6LvX6ETU3T8WrzLyQ/edit?pli=1#heading=h.kztg1uvdyoki



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?

FetchLater is a new JS API.



Debuggability

There are no particular debugging APIs made available or Chrome DevTools integrations yet.



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?

Yes

This is a JS API that will be available to Blink platforms.



Is this feature fully tested by web-platform-tests?

Yes

https://wpt.fyi/results/fetch/fetch-later



DevTrial instructions

https://chromium.googlesource.com/chromium/src/+/main/docs/experiments/fetch-later.md

Flag name on about://flags

FetchLaterAPI

Finch feature name

FetchLaterAPI

Requires code in //chrome?

True

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1465781

Launch bug

https://launch.corp.google.com/launch/4272588

Availability expectation

Feature is initially available only in Chromium browsers. Mozilla Implementation Request: https://bugzilla.mozilla.org/show_bug.cgi?id=1936180 WebKit Implementation Request: https://bugs.webkit.org/show_bug.cgi?id=284347

Adoption expectation

Feature will be used by some partner(s) to provide functionality within 12 months of launch in Chrome.

Adoption plan

With the launch announcement, we will communicate with those who have been interested in this API.

Non-OSS dependencies

Does the feature depend on any code or APIs outside the Chromium open source repository and its open-source dependencies to function?

N/A

Sample links


https://github.com/WICG/pending-beacon/blob/main/docs/fetch-later-api.md#key-scenarios

Estimated milestones

Shipping on desktop 134
Origin trial desktop first 121
Origin trial desktop last 126
Origin trial extension 1 end milestone 132
DevTrial on desktop 120
Shipping on Android 134
Origin trial Android first 121
Origin trial Android last 126
DevTrial on Android 120


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).

https://github.com/whatwg/fetch/pull/1647

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/4654499737632768?gate=5424713941123072

Links to previous Intent discussions

Intent to Prototype: https://groups.google.com/a/chromium.org/g/blink-dev/c/KXnqpUpVwPQ
Intent to Experiment: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAH3JASUZRWPgtO7b%3DQ%2BXOEEg7LMXnuoq3PFVv_EpARwbntf-ZQ%40mail.gmail.com
Intent to Extend Experiment 1: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/00000000000037b78d062141b4f1%40google.com


This intent message was generated by Chrome Platform Status.

Yoav Weiss (@Shopify)

unread,
Feb 12, 2025, 7:42:19 AMFeb 12
to Chromestatus, blin...@chromium.org, deno...@chromium.org, my...@chromium.org, pending-beac...@chromium.org
LGTM1

Thanks for all the work you put into gathering cross-engine support for this!!

--
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+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/67ac7ec8.2b0a0220.49add.2034.GAE%40google.com.

Mike Taylor

unread,
Feb 12, 2025, 10:46:25 AMFeb 12
to Yoav Weiss (@Shopify), Chromestatus, blin...@chromium.org, deno...@chromium.org, my...@chromium.org, pending-beac...@chromium.org

Daniel Bratell

unread,
Feb 12, 2025, 10:58:16 AMFeb 12
to Mike Taylor, Yoav Weiss (@Shopify), Chromestatus, blin...@chromium.org, deno...@chromium.org, my...@chromium.org, pending-beac...@chromium.org
Reply all
Reply to author
Forward
0 new messages