Long Animation Frame (LoAF) script invokers and the Core Web Vitals

Among sites recording Long Animation Frames, 45.5% (46,131) trigger long frames from DOM event listeners (94% good INP, 88ms median), 40.1% from classic script evaluation (96% good INP), and 30.1% from timer/rAF callbacks (96% good INP).

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

40.1% of sites use classic script evaluation Long Animation Frame (LoAF) script invoker type, and 96% of those sites have a good INP, against 95% of all sites.

The State of Web Vitals · October 2026 · 212,308 crawled sites · 197,524 with all devices field data · 101,382 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
1

INP pass rate

Sites with classic script evaluation Long Animation Frame (LoAF) script invoker type have a good INP most often: 96%, against 95% of all sites. Sites with Promise resolution microtasks LoAF invokers have it least often, at 88%.

SitesGood, needs improvement, poor INPMedian
All sites197,52495%87ms
Classic <script> evaluation 40.1%39,11996%87ms
Timer / rAF callback (setTimeout / requestAnimationFrame) 30.1%29,57396%91ms
DOM event listener (click / scroll / input) 45.5%44,50794%88ms
ES module <script type="module"> evaluation 2.5%2,47792%107ms
Promise microtask resolution (then / async-await) 1.0%1,02788%107ms
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 212,308 crawled sites · 197,524 with all devices field data · 101,382 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Long Animation Frame (LoAF) script invoker type usage

DOM event listeners is the most used: 45.5% of sites. Classic script evaluation is 40.1% of sites.

Sites using each option (sites can use more than one) 101,382 sites
DOM event listener (click / scroll / input) 45.5% Classic <script> evaluation 40.1% Timer / rAF callback (setTimeout / requestAnimationFrame) 30.1%
DOM event listener (click / scroll / input) 45.5% Classic <script> evaluation 40.1% Timer / rAF callback (setTimeout / requestAnimationFrame) 30.1% ES module <script type="module"> evaluation 2.5% Promise microtask resolution (then / async-await) 1.0%
The State of Web Vitals · October 2026 · 212,308 crawled sites · 197,524 with all devices field data · 101,382 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
3

Understanding Long Animation Frame script invokers

What triggers main-thread Long Animation Frames during load and interaction

The Long Animation Frames API (LoAF) attributes every frame over 50ms to the exact invoker that started the script task. Across 46,131 sites (45.5% of LoAF sites), DOM event listeners trigger long frames (94% good INP, 88ms median). Classic script evaluation accounts for 40.1% (96% good INP) and timer/rAF user-callbacks account for 30.1% (96% good INP), while heavy module-script evaluation (2.5%) and unbatched Promise microtasks (1.0%) drop to 92% and 88% good INP.

Update visual UI state first inside click/keydown event listeners, then yield via scheduler.yield() before running analytics, storage writes, or non-critical Promise chains. Across all sites with Long Animation Frames, 45.5% trigger long frames in event listeners (94% good INP) and 1.0% in Promise microtasks (88% good INP).

The State of Web Vitals · October 2026 · 212,308 crawled sites · 197,524 with all devices field data · 101,382 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
Platform & Framework Takeaways

How Long Animation Frame (LoAF) script invoker type plays out per platform

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

WordPress 35,276 sites
40.8% / 36.1% timer/rAF callbacks / event listeners on WordPress

On WordPress sites with Long Animation Frames, 40.8% record timer/rAF callbacks and 36.1% record event listeners.

Across 35,276 WordPress sites recording LoAF entries, 40.8% record long frames in setTimeout/requestAnimationFrame callbacks (98% good INP), 38.5% during classic <script> evaluation (98%), and 36.1% in DOM event listeners (98%).

Read the WordPress LoAF invoker breakdown →
Shopify 5,465 stores
96% vs 94% good INP (classic script vs event listener LoAF)

On Shopify, 58.3% of LoAF stores record long frames in classic scripts (96% INP) vs 38.2% in event listeners (94%).

Across 5,465 Shopify stores with Long Animation Frames, 58.3% record long frames during classic script evaluation (96% good INP, 101ms median), 38.2% in DOM event listeners (94% good INP, 104ms median), and 31.7% in timer callbacks (94%).

Read the Shopify LoAF invoker breakdown →
React & Next.js 5,885 sites
59.7% / 44.2% event listener / classic script LoAF on React

59.7% of LoAF React & Next.js sites record long frames in event listeners (95% good INP).

Across 5,885 React sites recording Long Animation Frames, 59.7% record long frames in DOM event listeners (95% good INP, 80ms median), 44.2% during script evaluation (95% good INP), and 18.8% in timer callbacks (96%).

Wix 3,529 sites
74.1% / 45.5% event listener / classic script LoAF on Wix

On Wix sites with Long Animation Frames, 74.1% occur in event listeners (98% good INP) and 7.1% in timers.

Across LoAF Wix sites, 7.1% record long timer callbacks (96% good INP), 74.1% record long frames in event listeners (98% good INP, 75ms median), and 45.5% record them in classic scripts (98%).

Read the Wix LoAF invoker breakdown →
Related signals INP phase breakdown → Yielding strategy → Blocking frame breakdown → Scheduling API use → By Arjen Karel · 212,308 crawled sites (197,524 with all devices Chrome field data, 101,382 sites with Long Animation Frame (LoAF) script invoker type, October 2026) · How we measured