Intent to Experiment: Fetch retry (for keepalive fetches)

138 views
Skip to first unread message

Chromestatus

unread,
Jul 16, 2025, 11:31:57 AMJul 16
to blin...@chromium.org, dom...@chromium.org, fer...@chromium.org, my...@chromium.org, rak...@chromium.org

Contact emails

rak...@chromium.org, my...@chromium.org

Explainer

https://github.com/explainers-by-googlers/fetch-retry/tree/main

Specification

None

Design docs


https://docs.google.com/document/d/1C9lAn3tqXsrjxiid1qCC9qSL7jfA1PZdoo2lgL8L5Pw/edit?tab=t.0

Summary

Allow web developers to indicate that a fetch() request should be retried, to have a greater guarantee on it being reliably sent, even if network is flaky. This is especially important for keepalive fetches, where the request might outlive the document, which can no longer watch for its failure and do manual retry. We intend to only support this for keepalive fetches for now because of implementation simplicity, and also the fact that all the use cases would benefit from being keepalive first.



Blink component

Blink>Loader

TAG review

None

TAG review status

Pending

Risks



Interoperability and Compatibility

None



Gecko: No signal

WebKit: No signal (https://github.com/whatwg/fetch/issues/1838) Safari devs have responded in the proposal thread and gave constructive feedback and doesn't seem to be opposed.

Web developers: Positive (https://github.com/whatwg/fetch/issues/1838#issuecomment-3035074583) Internal developers interested in origin trial. External developers have proposed a similar feature/made libraries similar to this, and generally seems interested in the proposal thread.

Other signals:

Security

Resource Exhaustion: Malicious or misconfigured sites could attempt to trigger excessive retries, potentially impacting network resources or target servers. Mitigation relies on browsers enforcing strict, reasonable limits on maxAttempts and maxAge, alongside implementing backoff delays. Timing Attacks/Information Leakage: The timing patterns of retry attempts could theoretically leak some information about network conditions. This is unlikely to provide substantially more information than can already be inferred by observing standard network request timings and failures. Additionally the browser will ensure that the errors are not exposed to the script until max age set in the retry options is reached, regardless of whether a retry happened or not, and only the latest error is exposed instead of all attempts.The risk is considered low.



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



Goals for experimentation



Ongoing technical constraints

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?

No

This feature is essentially invisible to the script initiating the fetch since it can't know if a retry happened or not.



Flag name on about://flags



Finch feature name

FetchRetry

Requires code in //chrome?

False

Tracking bug

https://crbug.com/417930271

Estimated milestones

DevTrial on desktop 139
DevTrial on Android 139


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5181984581877760?gate=5140384199737344

Links to previous Intent discussions

Intent to Prototype: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACPC1r6QFoqcmdoEMeG4JKJXGLqvGW%2BMr-UZj%2Br6HrQ%3DTNqKYQ%40mail.gmail.com


This intent message was generated by Chrome Platform Status.

Mike Taylor

unread,
Jul 16, 2025, 1:58:06 PMJul 16
to Chromestatus, blin...@chromium.org, dom...@chromium.org, fer...@chromium.org, my...@chromium.org, rak...@chromium.org

Could you clarify which milestones you're requesting to experiment on? (Right now it just shows DevTrial on 139)

--
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/6877c5df.170a0220.a2b55.0311.GAE%40google.com.

Rakina Zata Amni

unread,
Jul 16, 2025, 7:08:08 PMJul 16
to Mike Taylor, Chromestatus, blin...@chromium.org, dom...@chromium.org, fer...@chromium.org, my...@chromium.org
Oh sorry, I didn't realize there's a different field for OT. I'm requesting OT from 139. Not sure how many versions typically OTs should last for (3 milestones)?

Mike Taylor

unread,
Jul 17, 2025, 1:07:52 PMJul 17
to Rakina Zata Amni, Chromestatus, blin...@chromium.org, dom...@chromium.org, fer...@chromium.org, my...@chromium.org

Thanks - you can request an OT for up to 6 milestones, but you will know better what makes sense for your feature. 3 might make sense, or more. Please let us know. :)

Rakina Zata Amni

unread,
Jul 18, 2025, 4:10:58 AMJul 18
to Mike Taylor, Chromestatus, blink-dev, Domenic Denicola, Fergal Daly, Ming-Ying Chung
Ok. I think this will be quite iterative and we'll  try to figure out the exact set of customizations and optimizations during the origin trial, so if we can just request 6 milestones from the start maybe that's ideal (139-144). Thanks!

Regards,

Rakina

Mike Taylor

unread,
Jul 18, 2025, 11:51:03 AMJul 18
to Rakina Zata Amni, Chromestatus, blink-dev, Domenic Denicola, Fergal Daly, Ming-Ying Chung

Sounds good - LGTM

Reply all
Reply to author
Forward
0 new messages