Contact emails

[email protected], [email protected]

Explainer

This feature:
<https://chromestatus.com/admin/features/launch/5355965538893824/This%20feature:%20https://github.com/jeremyroman/alternate-loading-modes/blob/main/same-origin-explainer.md>
https://github.com/WICG/nav-speculation/blob/main/same-origin-explainer.md

This trial:
https://github.com/WICG/nav-speculation/blob/main/same-origin-chrome-origin-trial.md

Larger project:
<https://chromestatus.com/admin/features/launch/5355965538893824/Larger%20project:%20https://github.com/jeremyroman/alternate-loading-modes/blob/main/README.md>
https://github.com/WICG/nav-speculation/blob/main/README.md

Specification

https://wicg.github.io/nav-speculation/prerendering.html

Design docs

https://docs.google.com/document/d/1P2VKCLpmnNm_cRAjUeE-bqLL0bslL_zKqiNeCzNom_w/edit?usp=sharing

Summary

Prerendering loads a web page before it is needed, so that when the actual
navigation to that page occurs, it can be shown instantly.

This experiment is for the specific case of same-origin prerendering
triggered by the Speculation Rules API. An earlier, related experiment
supported prefetching
<https://groups.google.com/a/chromium.org/g/blink-dev/c/Cw-hOjT47qI/m/EObn9-4MAgAJ>
using this API. This is a separate experiment that requires its own origin
trial token.

This experiment has some limitations. See the explainer
<https://github.com/WICG/nav-speculation/blob/main/same-origin-chrome-origin-trial.md#speculation-rules>
for details.

Blink component

Internals>Preload>Prerender
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3EPreload%3EPrerender>

TAG review

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

TAG review status

Pending

Risks

Interoperability and Compatibility

Interoperability risk: We believe that some browsers already have
prerendering implementations which are not well-specified and may differ
from each other. Our vision is to produce a specification that can help
improve interoperability. There is a risk that other browsers do not
converge on a prerendering standard. The danger here is that different
browsers have different ways to trigger a prerendered page, and prerendered
pages behave differently in different browsers.

Prerendering is a web-visible behavior, since it involves fetching the page
and executing its scripts.

Prerendering can depend on UA-specific heuristics. For example, the browser
might decide to act on a hint to prerender based on the system load, and
the presence of other prerenders. We do not intend to codify heuristics in
the specification. A conforming browser might simply ignore all hints to
prerender a page.

Compatibility risk: Some use cases will need to know whether a page is
being prerendered. Ads and analytics are likely examples of this. This
feature exposes `document.prerendering` to detect prerendering, but there
is a risk of sites that would benefit from using the API, not using it. We
believe that this risk is tractable because prerendering has existed in
Chrome in the recent past and currently exists in some other browsers. We
also intend to add a header to network requests like `Purpose: prefetch` so
that origin servers can identify requests for prerendered pages.


Gecko: No signal


WebKit: No signals, while Safari appears to have some form of prerendering
already.


Web developers: No signals


Other signals: No signals



Ergonomics

This feature is triggered by the Speculation Rules API:
https://chromestatus.com/feature/5740655424831488


Activation

Developers can use the Speculation Rules API to use the feature. The
feature should just work for most existing pages. Developers should be
aware of restrictions on prerendering content (they cannot play audio or
perform other disruptive behavior, etc). This feature would benefit from
good documentation.


Security

This feature is the first use of the Multiple-Page Architecture, which is a
significant change to Chromium's internals. Both MPArch and this feature in
particular underwent significant security review. See the design doc for
more details.

>From a web-exposed perspective, the security and privacy concerns are
smaller, because this feature is restricted to the same-origin case only.


Goals for experimentation

To evaluate how the prerendering feature works on real sites before
shipping it by default. This is a large feature and it's risky to ship
without trying it first on real sites. We will be evaluating performance,
stability, and correctness, and any other feedback the sites have when they
use this feature.


Reason this experiment is being extended

The sites participating in this trial need more time to set up their
services with the feature. We would like to collect more data from them for
evaluating the feature.


Ongoing technical constraints

None


Debuggability

Currently DevTools does not work for prerendered pages. On activation,
DevTools must be closed and reopened in order to inspect the page. We have
plans to add DevTools support for prerendering. A meta bug for this work is
at https://crbug.com/1217029.

As a very small support, prerendered pages are visible in
chrome://process-internals. Also final results of prerendering are shown in
chrome://histograms.


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

No

This feature is only supported on Android at first. As the feature is a
cross-cutting one, where almost all of Chrome's features must be
potentially taught about prerendered pages, we are starting with a single
platform and expanding later.


Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>
?

Partially tested. We’re now upstreaming wpt_internals/ tests (document
<https://docs.google.com/document/d/1XqdlrYdPbLLEfJfjQE1IK0I5Elj_2uiGaK5aUGYc1CU/edit?usp=sharing>
).

Flag name

Prerender2

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1126305

Launch bug

https://crbug.com/1167987

Estimated milestones

Previous experiment timeline: M94 to M98

Requested extension timeline: M99 to M103

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5355965538893824


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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABj5diM0QEn5hBg1r80PWFw6qpXhCVmC05p0qh5KT5h9xKh19Q%40mail.gmail.com.

Reply via email to