Scheduling API use

How the page schedules main-thread work: scheduler.yield / postTask vs setTimeout churn.

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 Scheduling API use

How the page schedules main-thread work: scheduler.yield / postTask vs setTimeout churn.

6
Categories
In the distribution
47.6%
Fleet share
Top: raf
65.7%
Sites with any
Of raf

2.0% of scheduling calls use scheduler.yield. 46.2% chunk work with setTimeout.

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

The scheduling API use mix who uses what, and how fast each group loads

Median INP (sites using feature)
0
100ms
200ms
300ms
400ms
500ms
Raf88ms48% of sites
SetTimeout86ms46% of sites
RequestIdleCallback91ms3% of sites
Scheduler yield82ms2% of sites
SetInterval88ms1% of sites
PostTask101ms0% of sites
VariantShare of requestsMedian
Raf
48%
88ms
SetTimeout
46%
86ms
RequestIdleCallback
3%
91ms
Scheduler yield
2%
82ms
SetInterval
1%
88ms
PostTask
0%
101ms

Scheduling API use. On the fleet: 47.6% raf, 46.2% settimeout, 3.4% requestidlecallback. 65.7% of sites use at least one raf.

Lowest-share bucket: INP 82ms. Highest-share bucket: INP 88ms. r = +0.25.

By count raf leads (47.6%); by bytes it is scheduler yield (0.0%). computed

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

Passing INP per bucket every category and count level at once - color is the pass rate

1
2
3
4
5
6
7
8
9
10
11
12
Raf 47.6%
93
96
95
96
95
96
96
96
96
95
96
93
SetTimeout 46.2%
97
79
83
92
95
96
97
97
96
95
94
91
RequestIdleCallback 3.4%
95
93
94
96
93
95
90
87
94
97
95
93
Scheduler yield 2%
95
91
86
92
94
96
90
90
97
97
SetInterval 0.7%
94
96
97
96
96
96
95
94
91
89
91
86
PostTask 0%
95
89
92
← few of this category on the pagemany →
60%95%+ of sites passing INP Faded cells: under 100 sites

Each row is a category, each column its own count bucket (few on the left, many on the right); the cell is the share of those sites passing INP.

SetInterval swings the hardest: 94% of sites pass INP with few, 86% with many. computed

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

Few vs many - does quantity cost INP? the pass rate with few vs many of each category

60%70%80%90%100% few → many
SetInterval 0.7% 94%86%
SetTimeout 46.2% 97%91%
RequestIdleCallback 3.4% 95%93%
Raf 47.6% 93%93%
Scheduler yield 2% 95%97%
% of sites passing INP · hollow ring = pages with few, solid dot = pages with many

Per category: the pass rate among pages with FEW of it (hollow ring) against pages with MANY (solid dot), worst trend first. Thin buckets are excluded from the endpoints.

More SetInterval costs the most: the INP pass rate falls from 94% with few to 86% with many. computed

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

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

Long tasks block every interaction that arrives while they run. The fix is yielding: split the work and give the browser a chance to handle input in between. How a site yields matters. scheduler.yield hands control back and resumes with priority. postTask schedules work with an explicit priority. A setTimeout chain yields too, but blindly: no priority, and every link in the chain adds delay.

Seeing the modern scheduler APIs on a site is a strong signal: someone engineered the INP instead of inheriting it.

How does this affect the Core Web Vitals?

Passing INP barely moves across the range: 93% at one end, 96% at the other. This signal does not separate passing sites from failing ones.

The split is bigger on LCP: 82% pass where Scheduler yield is rare, 91% where it is common.

Related signals Interaction invoker types → CSS hints → Yielding strategy → INP phase breakdown → Chrome field data from 94,910 sites, representing millions of real page loads · How we measured