Main-thread task scheduling APIs on React sites

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

Field data PhoneDesktopAll Scope All sites October 2026 edition · All devices 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 97% of those sites have a good INP, against 95% of all React sites.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices 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: 97%, against 95% of all React sites. Sites with setInterval() task scheduling have it least often, at 94%.

SitesGood, needs improvement, poor INPMedian
All React sites9,11095%80ms
scheduler.yield() 62.9%5,69797%74ms
requestIdleCallback() 85.4%7,76895%79ms
requestAnimationFrame() 92.6%8,43395%80ms
setTimeout() 100.0%9,10495%80ms
setInterval() 63.3%5,82094%85ms
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices 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 · 9,110 with all devices 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 97% of Wix sites have a good INP, against 95% of all sites. WordPress sets the main-thread scheduling API usage to setTimeout() on 100% of its sites, and 98% 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%95%
WordPress 2,336 sitessetTimeout() 100%requestAnimationFrame() 81%setInterval() 79%requestIdleCallback() 67%98%
Wix 5,824 sitessetTimeout() 100%scheduler.yield() 100%requestAnimationFrame() 100%requestIdleCallback() 100%setInterval() 53%97%
setTimeout() requestAnimationFrame() requestIdleCallback() setInterval() scheduler.yield()
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices 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, 97% of sites with scheduler.yield() main-thread scheduling API usage have a good INP, against 98% 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%, 95% good INP), while 63.3% run recurring setInterval() timers (94% good INP, 85ms median) and 92.6% use requestAnimationFrame() (95% good INP). For background work, 85.4% call requestIdleCallback() (95% good INP, 79ms median), while the 62.9% (6,014 sites) adopting scheduler.yield() achieve a 74ms median INP (97% good INP) by yielding to pending user input with priority continuation.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices 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() (74ms median INP) while 85.4% use requestIdleCallback() (79ms median INP).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 9,110 with all devices 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 (9,110 with all devices Chrome field data, 9,563 sites with main-thread scheduling API usage, October 2026) · How we measured