56 items
Measuring CLS with PerformanceObserver
Code QuizCore Web Vitals: LCP, CLS, INP
QuizObserving LCP with PerformanceObserver
Code QuizUnderstanding LCP and CLS
QuizTime to First Byte (TTFB)
Slides / VideoLCP Thresholds
Code QuizLab vs Field Data
Code Quizp75 Percentile
Code QuizRating Boundaries
Code QuizCLS Thresholds
Code QuizINP Thresholds
Code QuizFID Calculation
Code QuizComputing TTFB
Code QuizMeasuring FCP
Code QuizTotal Blocking Time
Code QuizNavigation Timing
Code QuizPerformanceObserver Setup
Code Quizweb-vitals Library
Code QuizLargest Contentful Paint (LCP)
Slides / VideoWhat Core Web Vitals Are
Slides / VideoTools for Measuring Web Vitals
Slides / VideoLab Data vs Field Data (RUM)
Slides / VideoCore Web Vitals: Three Categories
Slides / VideoGood vs Poor Metric Thresholds
Slides / VideoTime to Interactive (TTI)
Slides / VideoSpeed Index Basics
QuizTime to Interactive Basics
QuizTotal Blocking Time Basics
QuizWhat INP Measures
QuizWhat LCP Measures
QuizLab vs Field Data
QuizThe Three Core Web Vitals
QuizFID Replaced by INP
QuizCLS Good Threshold
QuizINP Good Threshold
QuizLCP Rating Thresholds
QuizWhy Metrics Are User-Centric
QuizWhy the 75th Percentile
QuizWhat CLS Measures
QuizInteraction to Next Paint (INP)
FlashcardWhat Core Web Vitals Are
FlashcardCore Web Vitals Thresholds
FlashcardPercentiles (p75) in Measurement
FlashcardLab Data vs Field Data
FlashcardSpeed Index
FlashcardTime to First Byte (TTFB)
FlashcardCumulative Layout Shift (CLS)
FlashcardTotal Blocking Time (TBT)
FlashcardFirst Contentful Paint (FCP)
FlashcardLargest Contentful Paint (LCP)
FlashcardFirst Input Delay (FID)
FlashcardTime to Interactive (TTI)
FlashcardFirst Contentful Paint (FCP)
Slides / VideoInteraction to Next Paint (INP)
Slides / VideoCumulative Layout Shift (CLS)
Slides / VideoFirst Input Delay (FID)
Slides / VideoMeasuring CLS with PerformanceObserver
Spot the bug in a Cumulative Layout Shift measurement using the Layout Instability API.
let clsValue = 0;
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
// Accumulate every layout-shift value
clsValue += entry.value;
}
console.log('Current CLS:', clsValue);
});
observer.observe({ type: 'layout-shift', buffered: true });This CLS tracker reports values that are too high. What is the bug?