#1183: Incubation: new speculation rules action: prerender_until_script

Visit on Github

Opened Jan 13, 2026

Explainer

https://github.com/WICG/nav-speculation/blob/main/prerender-until-script.md

The explainer

Where and by whom is the work is being done?

  • GitHub repo: https://github.com/WICG/nav-speculation
  • Primary contacts:
    • Lingqi Chi (@Clqsin45), Google
    • Hiroki Nakagawa (@nhiroki), Google
  • Organization/project driving the design: Google Chrome
  • This work is being funded by: Google
  • Incubation and standards groups that have discussed the design:
    • WebPerf, during TPAC 2025
  • Standards group(s) that you expect to discuss and/or adopt this work when it's unknown

Feedback so far

You should also know that...

こんにちは TAG-さん!

I'm requesting a TAG review of a new speculation action of prerender_until_script. This proposes a new action for the Speculation Rules API, prerender_until_script. This action is designed to provide developers with an intermediate option between the existing prefetch and prerender actions.

<!-- Content below this is maintained by @w3c-tag-bot -->

Track conversations at https://tag-github-bot.w3.org/gh/w3ctag/design-reviews/1183

Discussions

Log in to see TAG-private discussions.

Comment by @jeremyroman Jan 13, 2026 (See Github)

@domenic and I are both no longer working directly on this at present (and Domenic is no longer affiliated with Google), so we probably shouldn't be listed as primary contacts.

Comment by @jyasskin Jan 13, 2026 (See Github)

@jeremyroman I've dropped you from the "contacts" list. @Clqsin45, feel free to add anyone else who's actively working on this project.

Comment by @Clqsin45 Jan 14, 2026 (See Github)

Thank you! I added nhiroki@ as he is our TL.

Discussed Jan 19, 2026 (See Github)

Xiaocheng: Discussed it at B, as we didn’t have enough agenda items. Already posted a reply. Nothing to discuss today.

Discussed Jan 19, 2026 (See Github)

Xiaocheng: Early design review and it proposes a new type of action for speculation (adding to prefetch and prerender). This does prerender, but doesn't run any script. Parsing HTML pauses if there is blocking script. ...middle ground seems good. Like to see some study on the use of script and what the effect of this would be.

Martin: Why can't prefetch do this?

Xiaocheng: prefetch doesn't fetch sub-resources and doesn't parse.

Martin: Parsing doesn't have observable effects, it's just the subresources that matter.

Xiaocheng: Chances are that finding subresources will hit script execution.

Martin: Two things: stuff you might need as data (prefetch) and stuff that you might navigate to (prefetch or prerender). Prerender needs extra information about where content might appear, but then you have subresource fetching (side effect) and script execution (another side effect).

marcos: Prerender creates a new context.

Xiaocheng: It does everything, short of show the content.

Martin: Is it only top-level navigation?

Xiaocheng: How about we suggest that they test for efficacy (http archive?). Also think about strategies. Preparsing only? (Which would have to block on script execution.)

Marcos: prerender is only for top-level navigations.

Martin: preparse would work for an iframe, wouldn't it? (not sure)

Marcos: It does annoy me that it is for the react use case, catering to something sites that use weird tools. It seems like it is solving the problem. A lot of people use React and this helps, but the other side is maybe you should put content in your page and not depend on script to populate it.

Martin: Is the implication that these scripts have unwanted side effects?

Marcos: Not my reading. Not sure what is going on with <iframe src=javascript...

Xiaocheng: Target case is for pages that can be mostly rendered statically, they don't want to load ads until the page is shown. Question remains: how useful is this? How often can it be used?

Martin: Ads case seems real. But don't ads run intersection observer? Maybe they just want to keep load down.

Xiaocheng: they should evaluate the success rate of the strategy.

Martin: They should also look at alternatives, like just preparse as a step toward this. So how much does the subresource loading get you? Or, could you limit the subresource types? That might need some controls rather than a single mode. For example, ads might use script exclusively, so no script execution is fine. But others use pixels for tracking and so loading images could be bad.

Comment by @xiaochengh Jan 20, 2026 (See Github)

Hi @Clqsin45, the TAG discussed it at a breakout today and found that a middle ground between prefetch and prerender will help. Avoiding execution of non-essential scripts looks desirable, especially when considering analytics and ads.

Since this is an early review, we'd like to see more research into real world scenarios and more alternatives considered. In particular:

  • What about a preparse action, namely, trying to parse the document (up to parser-blocking script) without rendering it?
  • What types of subresources to load, and do we need finer control here? For example, some ads may use pixels for tracking, for which loading images might be bad
  • How many pages will benefit from prerender_until_script (or any alternatives)? A real world study (over e.g. HTTP Archive) will be greatly helpful, as we (and developers) need to understand the target use cases and limitations of each strategy.