v151 · Performance · Resource Timing

Router Timing Dashboard

Fetch a batch of resources and inspect every PerformanceResourceTiming entry for the two new Chrome 151 fields: workerMatchedRouterSource (which Static Router rule was matched) and workerFinalRouterSource (what actually served the response). The table shows both fields alongside classic timing metrics.

Checking PerformanceResourceTiming support…
workerMatchedRouterSource
workerFinalRouterSource
duration (ms)
url
matchedRouterSource
finalRouterSource
duration (ms)
Click "Fetch batch" to populate
Entry detail

about the new fields

code

// Observe all resource timings on the page
performance.getEntriesByType('resource').forEach(entry => {
  // Chrome 151: new fields
  const matched = entry.workerMatchedRouterSource; // "" if no SW rule
  const final   = entry.workerFinalRouterSource;   // "" if no SW

  console.log({
    url: entry.name,
    matched,  // which Static Router rule source was selected
    final,    // what actually served the response
    duration: entry.duration.toFixed(1) + 'ms',
  });
});

// Use PerformanceObserver to capture in real time
const obs = new PerformanceObserver(list => {
  for (const entry of list.getEntries()) {
    if (entry.workerMatchedRouterSource) {
      console.log('SW router hit:', entry.workerMatchedRouterSource);
    }
  }
});
obs.observe({ type: 'resource', buffered: true });

see also

implementation reference

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