Google has launched an origin trial in Chrome 139 that finally lets Single Page Applications (SPAs) report accurate Core Web Vitals during in-page transitions. The Soft Navigations API treats selected client-side updates as full navigations, exposing Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS) and Interaction to Next Paint (INP) after every qualified route change. The trial is open until 13 September 2024.
How the Soft Navigations API works
When the browser detects a link click, a subsequent URL change and a visible DOM update that repaints at least 20 percent of the viewport, Chrome records a PerformanceNavigationTiming
entry with type="soft"
. Each entry receives its own navigationId
, making it easier for Real User Monitoring (RUM) tools to separate metrics generated by different in-page routes.
Within an eligible soft navigation Chrome now dispatches:
- Standard CWV events - LCP, CLS and INP - just as it would for a hard page load.
interaction-contentful-paint
, a new candidate metric that captures the largest element rendered after the user’s input.
If the DOM mutates without user input (for example, an automatic redirect), the heuristics do not classify the change as a navigation and no new metrics fire.
Trial logistics
The experiment spans Chrome 139 through 143 on Android, Windows, macOS, Linux and ChromeOS. Data gathered during the test does not appear in the public Chrome User Experience Report (CrUX). To enrol a production site developers must register in the Chrome Origin Trials portal and include the issued token via an HTTP header or a <meta>
tag. Local evaluation is available behind the chrome://flags/#soft-navigation-heuristics
flag.
Google is collecting feedback through the origin-trial issue tracker and has stated that the end date may shift based on that input. Detailed implementation guidance is available in the Chrome Developers blog post announcing the trial - testing. Barry Pollard, who leads the effort, emphasizes that early implementers will shape the final API.
Why this matters for SPAs
SPAs in frameworks such as React, Vue and Angular update views without reloading the document, so legacy performance tooling had no navigation boundary to attach Web Vitals events. As a result, production data often understated loading delays and layout shifts that occur after the initial load.
Teams previously relied on custom heuristics to approximate soft navigations, leading to inconsistent numbers across vendors. By standardising detection inside the browser and by adding a globally unique navigationId
, Chrome aims to give site owners and RUM providers a single source of truth.
Next steps for developers
- Opt-in to the origin trial for staging domains and verify that metrics appear after every client-side route change.
- Update analytics pipelines to store
navigationId
alongside existing Web Vitals fields. - Experiment with the new
interaction-contentful-paint
metric and compare it to INP. - Report false positives or negatives through the origin-trial issues tracker to influence the final specification.