Main-thread task scheduling APIs on React sites

100.0% of audited sites (9,563) schedule tasks via setTimeout (92% good INP), 92.6% use requestAnimationFrame (92% good INP), 85.4% use requestIdleCallback (93% good INP), and 62.9% adopt modern scheduler.yield() (96% good INP, 79ms median).

Field data PhoneDesktopAll Scope All sites October 2026 edition · Phone field outcomes · React sites only
React Scoped to 9,570 sites out of 210,902 analyzed (frameworks) Compare with all sites →

62.9% of React sites use scheduler.yield() main-thread scheduling API usage, and 96% of those sites have a good INP, against 92% of all React sites.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 9,563 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
1

INP pass rate

Sites with scheduler.yield() main-thread scheduling API usage have a good INP most often: 96%, against 92% of all React sites. Sites with setInterval() task scheduling have it least often, at 91%.

SitesGood, needs improvement, poor INPMedian
All React sites5,48892%90ms
scheduler.yield() 62.9%3,30196%79ms
requestIdleCallback() 85.4%4,65093%88ms
setTimeout() 100.0%5,48592%90ms
requestAnimationFrame() 92.6%5,06192%89ms
setInterval() 63.3%3,48891%96ms
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 9,563 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Main-thread scheduling API usage usage

SetTimeout() is the most used: 100.0% of React sites. Scheduler.yield() is 62.9% of React sites.

Sites using each option (sites can use more than one) 9,563 sites
setTimeout() 100.0% requestAnimationFrame() 92.6% requestIdleCallback() 85.4% setInterval() 63.3% scheduler.yield() 62.9%
setTimeout() 100.0% requestAnimationFrame() 92.6% requestIdleCallback() 85.4% setInterval() 63.3% scheduler.yield() 62.9%
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 9,563 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
3

Main-thread scheduling API usage per platform

Wix sets the main-thread scheduling API usage to scheduler.yield() on 100% of its sites, and 96% of Wix sites have a good INP, against 92% of all sites. WordPress sets the main-thread scheduling API usage to setTimeout() on 100% of its sites, and 96% of WordPress sites have a good INP.

PlatformMain-thread scheduling API usage on its sitesGood INP
React sites with main-thread scheduling API usage 9,563 sitessetTimeout() 100%requestAnimationFrame() 93%requestIdleCallback() 85%setInterval() 63%scheduler.yield() 63%92%
Wix 5,824 sitessetTimeout() 100%scheduler.yield() 100%requestAnimationFrame() 100%requestIdleCallback() 100%setInterval() 53%96%
WordPress 2,336 sitessetTimeout() 100%requestAnimationFrame() 81%setInterval() 79%requestIdleCallback() 67%96%
setTimeout() requestAnimationFrame() requestIdleCallback() setInterval() scheduler.yield()
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 9,563 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
4

Scheduling APIs or the platform

Does the platform explain the main-thread scheduling API usage difference?

Almost every site with scheduler.yield() main-thread scheduling API usage is a Wix site, and almost every Wix site has scheduler.yield() main-thread scheduling API usage, so the data can't tell scheduler.yield() main-thread scheduling API usage and Wix apart. On WordPress, 96% of sites with scheduler.yield() main-thread scheduling API usage have a good INP, against 96% of WordPress sites with setTimeout(). Within WordPress, sites with scheduler.yield() and setTimeout() have a good INP about equally often.

How timer churn (setInterval) and yielding APIs affect input responsiveness

Nearly every site uses setTimeout() (100.0%, 92% good INP), while 63.3% run recurring setInterval() timers (91% good INP, 96ms median) and 92.6% use requestAnimationFrame() (92% good INP). For background work, 85.4% call requestIdleCallback() (93% good INP, 88ms median), while the 62.9% (6,014 sites) adopting scheduler.yield() achieve a 79ms median INP (96% good INP) by yielding to pending user input with priority continuation.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 9,563 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Understanding main-thread task scheduling APIs

Use scheduler.yield() (with a setTimeout(0) fallback) to break up long main-thread tasks so the browser can paint pending user interactions before resuming work, and eliminate high-frequency setInterval() polling. Across all audited sites, 62.9% use scheduler.yield() (79ms median INP) while 85.4% use requestIdleCallback() (88ms median INP).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 9,563 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals Interaction invoker types → CSS hints → Yielding strategy → INP phase breakdown → By Arjen Karel · 9,570 crawled React sites (5,488 with phone Chrome field data, 9,563 sites with main-thread scheduling API usage, October 2026) · How we measured