v150 · Performance

LCP per Route

After every soft navigation, Chrome resets the Largest Contentful Paint clock. The largest element painted on the new route becomes that route's LCP candidate — completely independent of earlier routes. A PerformanceObserver on largest-contentful-paint shows the reset happening in real time.

Feature detection: checking…

How the LCP clock resets

Page load → LCP #1
SN
Route 2 → LCP #2
SN
Route 3 → LCP #3
t=0 soft-navigation soft-navigation → time

Each soft-navigation (SN) boundary starts a fresh LCP measurement window. The largest element painted after that boundary is attributed to the new route, not the overall page load.

Home

Hero image placeholder

Initial page load — the heading and hero block above are LCP candidates. Navigate to another route to see the LCP clock reset.

LCP Entries per Route

Green <2.5 s · Amber 2.5–4 s · Red >4 s (Core Web Vitals thresholds)

Route Nav # LCP element LCP time Attribution
No LCP entries yet — navigate between routes

Raw Entry Stream

All largest-contentful-paint and soft-navigation entries as they arrive

largest-contentful-paint
soft-navigation
Waiting for entries…
// Watch LCP entries reset after each soft navigation
const lcpObs = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    console.log({
      element:   entry.element?.tagName,   // largest element in this window
      startTime: entry.startTime,           // ms since last soft-nav boundary
      url:       entry.url,                 // src if an image, '' if text
    });
  }
});
lcpObs.observe({ type: 'largest-contentful-paint', buffered: true });

// The soft-navigation entries mark each boundary
const navObs = new PerformanceObserver((list) => {
  for (const e of list.getEntries()) {
    if (e.entryType === 'soft-navigation') {
      console.log('LCP clock reset — new route:', e.name, 'duration:', e.duration);
    }
  }
});
navObs.observe({ type: 'soft-navigation', buffered: true });

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗