Update on Specification and Behavior of Nested iframes in Prerendering

Hi blink-dev,

We would like to share an update regarding the specification and
restriction model for nested iframes within this
prerendering-cross-origin-iframes feature.
Motivation

The prerendering-cross-origin-iframes feature was designed to conditionally
prerender cross-origin iframes under explicit opt-in controls.

However, we’ve found that the original specification did not fully account
for nested iframes (iframes embedded within another iframe) based on
feedback from Origin Trial and TAG
<https://github.com/w3ctag/design-reviews/issues/1207> reviews. Currently,
nested iframes are prerendered without specific restriction checks
regarding their parent frame's cross-origin relationship in both the spec
and our implementation.

We believe nested iframes should not be prerendered automatically without
explicit consent. We propose updating the model so that nested iframes also
require the explicit opt-in header or must be same-origin relative to their
parent frame.
Proposed Behavior Changes

Under the updated rules, a nested iframe will only be allowed to prerender
if all of its ancestor frames have been prerendered and it meets either of
the following conditions:


   1.

   Same-Origin: The nested iframe is Same-Origin with respect to its
   immediate parent frame.
   2.

   Explicit Opt-In: The immediate parent frame explicitly returns the
   following response header:
   Supports-Loading-Mode: prerender-cross-origin-frames


Note: This restriction model applies recursively down through the entire
iframe nesting hierarchy, with no limit on depth.
Summary Comparison

Environment

Current Behavior

Proposed Behavior

Same-Origin Nested iframe

Prerendered

Prerendered

Cross-Origin Nested iframe (Default)

Prerendered

Deferred by default

Cross-Origin Nested iframe (with Opt-in Header)

Prerendered

Prerendered (requires Supports-Loading-Mode: prerender-cross-origin-frames
on parent frame)
Technical Details & Specification Document

For a comprehensive breakdown of target scenarios, frame structures with
diagrams, and interactions with other Supports-Loading-Mode headers, please
review the detailed technical document:

Update on Specification and Behavior of Nested iframes in Prerendering
<https://docs.google.com/document/d/1N77oJF7DPao5ONWuWhso9SnOnMm7h1_5Xq61P02jJSw/edit>

Please feel free to share any questions, feedback, or concerns regarding
this update!

Best regards,
Yoichi Osato


2026年7月3日(金) 4:51 Rick Byers <[email protected]>:

> LGTM to extend for 3 more months. Are you anticipating that after that
> you'll be ready to ship?
>
> Is there a spec issue <https://github.com/WICG/nav-speculation/issues>
> tracking the nested frames case? I didn't see one in a quick scan, and I
> notice TAG is asking about it as well.
>
> On Thu, Jul 2, 2026 at 1:54 AM Chromestatus <
> [email protected]> wrote:
>
>> *Contact emails*
>> [email protected]
>>
>> *Explainer*
>>
>> https://github.com/WICG/nav-speculation/blob/main/prerendering-cross-origin-iframes.md
>>
>> *Specification*
>> https://wicg.github.io/nav-speculation/prerendering.html
>>
>> *Summary*
>> Prerenders cross-origin iframes with an opt-in response header. Browsers
>> will now prerender all cross-origin frames if the top-level frame's HTTP
>> response includes the Supports-Loading-Mode: prerender-cross-origin-frames.
>>
>> *Blink component*
>> Blink
>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%22>
>>
>> *Web Feature ID*
>> Missing feature
>>
>> *TAG review*
>> https://github.com/w3ctag/design-reviews/issues/1207
>>
>> *TAG review status*
>> Not applicable
>>
>> *Origin Trial Name*
>> Prerendering cross-origin iframes
>>
>> *Goals for experimentation*
>> Gather feedback from web authors who already are interested in this
>> feature.
>>
>> *Chromium Trial Name*
>> Prerender2CrossOriginIframes
>>
>> *Origin Trial documentation link*
>>
>> https://github.com/WICG/nav-speculation/blob/main/prerendering-cross-origin-iframes.md
>>
>> *WebFeature UseCounter name*
>> kPrerender2CrossOriginIframes
>>
>> *Risks*
>>
>>
>> *Interoperability and Compatibility*
>> The entire speculative loading feature is a progressive enhancement, so
>> in general risks are low in this area.
>>
>> *Gecko*: No signal (
>> https://github.com/mozilla/standards-positions/issues/1376)
>>
>> *WebKit*: No signal (
>> https://github.com/WebKit/standards-positions/issues/636)
>>
>> *Web developers*: Positive Our partners show interests in having this
>> feature.
>>
>> *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?
>> *No information provided*
>>
>>
>> *Reason this experiment is being extended*
>> Partner requires additional implementation and assessment about the
>> nested frames case.
>>
>> *Ongoing technical constraints*
>> *No information provided*
>>
>> *Debuggability*
>> The cross-origin iframe prerendering should be debuggable as well as top
>> frame's one:
>> https://developer.chrome.com/docs/devtools/application/debugging-speculation-rules#prerender
>>
>> *Will this feature be supported on all six Blink platforms (Windows, Mac,
>> Linux, ChromeOS, Android, and Android WebView)?*
>> No
>>
>> *Is this feature fully tested by web-platform-tests
>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
>> Yes
>>
>>
>> *Flag name on about://flags*
>> "prerender2-cross-origin-iframes" from M148
>>
>> *Finch feature name*
>> Prerender2CrossOriginIframes
>>
>> *Requires code in //chrome?*
>> False
>>
>> *Tracking bug*
>> https://issues.chromium.org/issues/440387014
>>
>> *Estimated milestones*
>> Origin trial desktop first 147
>> Origin trial desktop last 152
>> Origin trial extension 1 end milestone 158
>>
>> *Link to entry on the Chrome Platform Status*
>> https://chromestatus.com/feature/5112398709129216?gate=5151856880910336
>>
>> *Links to previous Intent discussions*
>> Intent to Prototype:
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68b670ba.050a0220.270bc4.0593.GAE%40google.com
>> Intent to Experiment:
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAEV3p%3DzhNhfOpe8x%3DRKgxYFS9GCq_q-c8knZYRBRuijQ27o8w%40mail.gmail.com
>>
>>
>> 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 [email protected].
>> To view this discussion visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a45fcf5.198129d7.1d0cd0.0014.GAE%40google.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a45fcf5.198129d7.1d0cd0.0014.GAE%40google.com?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 [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAEV3pm_az5gHgRkdNoRXVk2c_VQSQn9ezWFiuUUFHNJ8V7t9Q%40mail.gmail.com.

Reply via email to