v149 · Performance · Service Worker
Performance Dashboard
A RUM-style dashboard that registers a service worker with Static Routing rules, makes a batch of fetch requests, then reads workerMatchedRouterSourceList and workerFinalRouterSourceList from PerformanceObserver to show which source each request was routed to.
Service Worker Router Timing Fields may not be fully supported in this browser. The dashboard will simulate the data model — enable in Chrome 149+ with a registered service worker for live readings.
routing rules (simulated SW)
/api/* (json requests)
→
network
(no cache fallback)
/assets/* (images, fonts)
→
cache
(fall back: network)
/pages/* (HTML)
→
cache
(fall back: sw → network)
/* (all others)
→
sw
(service worker handles)
Total Requests
0
Cache Hits
0
Network
0
Fallbacks
0
Ready
| # | URL | matchedRouterSourceList | finalRouterSourceList | Fallback? | Duration |
|---|---|---|---|---|---|
| Click "Run Request Batch" to simulate routing | |||||
reading the timing fields
// Chrome 149: read router timing from PerformanceObserver
const obs = new PerformanceObserver(list => {
for (const entry of list.getEntries()) {
if (entry.entryType !== 'resource') continue;
const matched = entry.workerMatchedRouterSourceList; // what the rule said
const final = entry.workerFinalRouterSourceList; // what was actually used
if (matched.length && final.length) {
const fellBack = matched[0] !== final[0];
console.log(entry.name, { matched, final, fellBack });
}
}
});
obs.observe({ type: 'resource', buffered: true });
see also
- Router Timing Inspector — single-request timing breakdown
- Route Source Visualizer — matched vs. final source diagram
- Feature index