Yielding strategy

The dominant main-thread yielding pattern the site uses, if any.

Field data PhoneDesktopAll Scope All sites Q1 2026 edition · All devices field outcomes
Metric LCP INP CLS
1

At a glance the headline numbers for Yielding strategy

The dominant main-thread yielding pattern the site uses, if any.

5
Categories
94,847 sites
67.7%
Top share
none
0.00
Top CLS
Median for none

67.7% of sites never yield the main thread at all.

The State of Web Vitals · Q1 2026 · 94,910 sites · all devices field datacorewebvitals.io/state-of-cwv
2

Yielding strategy who uses what, and how stable each group is

Median CLS
0
0.05
0.10
0.15
0.20
0.25
none0.0068% of sites
scheduler.yield()0.005% of sites
isInputPending()0.000% of sites
requestIdleCallback()0.0127% of sites
scheduler.postTask()0.040% of sites
VariantShare of sitesMedian
none 64,256 sites
68%
0.00
scheduler.yield() 4,652 sites
5%
0.00
isInputPending() 24 sites
0%
0.00
requestIdleCallback() 25,901 sites
27%
0.01
scheduler.postTask() 14 sites
0%
0.04

None sites post the best median CLS (0.00). Scheduler.postTask() sites trail at 0.04. Correlation, not causation. computed

The State of Web Vitals · Q1 2026 · 94,910 sites · all devices field datacorewebvitals.io/state-of-cwv
3

Passing CLS per yielding strategy which group passes the CLS most often

VariantSitesPassing CLSCLS
Scheduler.yield() 4.9% 4,652 92% 0.00
None 67.7% 64,256 89% 0.00
IsInputPending() 0% 24 87% 0.00
RequestIdleCallback() 27.3% 25,901 85% 0.01
Scheduler.postTask() 0% 14 83% 0.04
Good Needs Improvement Poor Sorted best-passing first · median colored by its own rating · pass = good CLS (0.1 at p75) · one value per site

92% of Scheduler.yield() sites pass CLS. RequestIdleCallback() trails 7 points behind. computed

The State of Web Vitals · Q1 2026 · 94,910 sites · all devices field datacorewebvitals.io/state-of-cwv
4

Why this matters for the Core Web Vitals, and where to start fixing it

This is the site's habit: how its longest scripts give the main thread back, if at all. None means work runs to completion, and every click that lands in the middle waits for all of it. INP is about the worst moments, and the worst moments are unbroken long tasks.

Any yielding beats none. A click that arrives during chunked work waits for the current chunk. A click that arrives during an unbroken task waits for the whole task. If you adopt one habit, make it scheduler.yield where supported, with setTimeout as the fallback.

How does this affect the Core Web Vitals?

The choice barely moves the INP: 95% pass at best, 94% at worst. This signal does not separate passing sites from failing ones.

The split is bigger on LCP. With Scheduler.yield(), 91% of sites pass it. With RequestIdleCallback(), 79% do.

Related signals Scheduling API use → CSS hints → Interaction invoker types → Blocking frame breakdown → Chrome field data from 94,910 sites, representing millions of real page loads · How we measured