Main-thread task scheduling APIs and the Core Web Vitals

99.9% of audited sites (204,866) schedule tasks via setTimeout (95% good INP), 64.5% use requestAnimationFrame (96% good INP), 31.0% use requestIdleCallback (94% good INP), and 4.9% adopt modern scheduler.yield() (95% good INP, 82ms median).

Field data PhoneDesktopAll Scope All sites October 2026 edition · All devices field outcomes

64.5% of sites use requestAnimationFrame() main-thread scheduling API usage, and 96% of those sites have a good INP, against 95% of all sites.

The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 204,974 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
1

INP pass rate

Sites with requestAnimationFrame() main-thread scheduling API usage have a good INP most often: 96%, against 95% of all sites. Sites with requestIdleCallback() task scheduling have it least often, at 94%.

SitesGood, needs improvement, poor INPMedian
All sites196,26395%87ms
requestAnimationFrame() 64.5%127,45996%88ms
setInterval() 70.4%139,49495%88ms
setTimeout() 99.9%194,92695%87ms
scheduler.yield() 4.9%9,63995%82ms
requestIdleCallback() 31.0%61,56094%92ms
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 204,974 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: 99.9% of sites. RequestAnimationFrame() is 64.5% of sites.

Sites using each option (sites can use more than one) 204,974 sites
setTimeout() 99.9% setInterval() 70.4% requestAnimationFrame() 64.5% requestIdleCallback() 31.0%
setTimeout() 99.9% setInterval() 70.4% requestAnimationFrame() 64.5% requestIdleCallback() 31.0% scheduler.yield() 4.9%
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 204,974 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
3

Understanding main-thread task scheduling APIs

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

Nearly every site uses setTimeout() (99.9%, 95% good INP), while 70.4% run recurring setInterval() timers (95% good INP, 88ms median) and 64.5% use requestAnimationFrame() (96% good INP). For background work, 31.0% call requestIdleCallback() (94% good INP, 92ms median), while the 4.9% (10,081 sites) adopting scheduler.yield() achieve a 82ms median INP (95% good INP) by yielding to pending user input with priority continuation.

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, 4.9% use scheduler.yield() (82ms median INP) while 31.0% use requestIdleCallback() (92ms median INP).

The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices field data · 204,974 sites with main-thread scheduling API usageBy Arjen Karel · corewebvitals.io/state-of-cwv
Platform & Framework Takeaways

How main-thread scheduling API usage plays out per platform

What the field data shows when you isolate a single CMS or framework.

WordPress 65,377 sites
77.2% / 75.1% requestAnimationFrame / setInterval on WordPress

75.1% of WordPress sites run recurring setInterval() timers, while 2.6% call scheduler.yield().

Across 65,377 WordPress sites, 77.2% call requestAnimationFrame() (98% good INP), 75.1% call setInterval() (98% good INP), and 2.6% call scheduler.yield().

Read the WordPress task scheduling breakdown →
Shopify 8,573 stores
99.7% / 89.4% requestIdleCallback / setInterval on Shopify

99.7% of Shopify stores call requestIdleCallback() (96% good INP, 97ms median).

Across Shopify storefronts, 99.7% call requestIdleCallback() (96% good INP), 99.8% call requestAnimationFrame(), and 89.4% call setInterval() (96% good INP).

Read the Shopify task scheduling breakdown →
React & Next.js 9,563 sites
97% vs 94% good INP (scheduler.yield vs setInterval)

62.9% of React & Next.js sites call scheduler.yield() (97% good INP, 74ms median).

Across 9,563 React sites, 62.9% call scheduler.yield() (97% good INP, 74ms median) and 63.3% call setInterval() (94% good INP, 85ms median).

Related signals Interaction invoker types → CSS hints → Yielding strategy → INP phase breakdown → By Arjen Karel · 210,902 crawled sites (196,263 with all devices Chrome field data, 204,974 sites with main-thread scheduling API usage, October 2026) · How we measured