demo · v147
Shell architecture simulator
The canonical use case for this opt-in: a shell page (think Office, Google Chat, JS Bin, a checkout host) where the meaningful content lives in a cross-origin iframe. With the new opt-in header, both render in parallel during prerender — activation is interactive immediately. Without it, the iframe waits until activation.
Origin trial: the
Supports-Loading-Mode: prerender-cross-origin-frames
opt-in is enabled in Chrome 147 behind chrome://flags/#enable-prerender2 in some
builds. This page simulates both branches with deterministic timers so the comparison is
reproducible no matter the browser.
winner: waiting for data…
Without opt-in
shell.example → checkout.embed.com (no header)Order summary
Shell HTML/CSS/JS finishes prerendering in ~200ms.
cross-origin iframe held back
TTFI on activation: —
With opt-in
shell.example → checkout.embed.com (Supports-Loading-Mode: prerender-cross-origin-frames)Order summary
Shell and iframe prerender together.
cross-origin iframe loading…
TTFI on activation: —
What's modelled
- Shell HTML: ~200ms to render.
- Cross-origin iframe: 600ms to load + 200ms to hydrate.
- Without the header, the iframe is held until activation — the user pays 800ms after click.
- With the header, the iframe runs concurrently with the shell — activation lands on a fully interactive page.
# on the embedded checkout origin's response:
HTTP/1.1 200 OK
Content-Type: text/html
Supports-Loading-Mode: prerender-cross-origin-frames
# ↑ that single header is the whole opt-in for the cross-origin embed.
# on the shell origin:
<script type="speculationrules">
{ "prerender": [{ "urls": ["/checkout"] }] }
</script>
see also
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗