const metrics = new Map(); function report(name, value){ metrics.set(name, value); console.log(name, Math.round(value * 100) / 100); } new PerformanceObserver(list => { const entries = list.getEntries(); const last = entries[entries.length - 1]; if (last) report('LCP', last.startTime); }).observe({ type: 'largest-contentful-paint', buffered: true }); let cls = 0; new PerformanceObserver(list => { for (const entry of list.getEntries()) if (!entry.hadRecentInput) cls += entry.value; report('CLS', cls); }).observe({ type:'layout-shift', buffered:true }); new PerformanceObserver(list => { for (const entry of list.getEntries()) report('INP candidate', entry.duration); }).observe({ type:'event', buffered:true, durationThreshold:40 });