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

Among sites recording Long Animation Frames, 45.5% (45,852) trigger long frames from DOM event listeners (90% good INP, 103ms median), 40.1% from classic script evaluation (93% good INP), and 30.1% from timer/rAF callbacks (93% good INP).

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

30.1% of sites use timer and rAF callbacks Long Animation Frame (LoAF) script invoker type, and 93% of those sites have a good INP, against 92% of all sites.

The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 100,740 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
1

INP pass rate

Sites with timer and rAF callbacks Long Animation Frame (LoAF) script invoker type have a good INP most often: 93%, against 92% of all sites. Sites with Promise resolution microtasks LoAF invokers have it least often, at 82%.

SitesGood, needs improvement, poor INPMedian
All sites126,76192%99ms
Timer / rAF callback (setTimeout / requestAnimationFrame) 30.1%19,34993%104ms
Classic <script> evaluation 40.1%25,21893%101ms
DOM event listener (click / scroll / input) 45.5%28,68090%103ms
ES module <script type="module"> evaluation 2.5%1,77385%125ms
Promise microtask resolution (then / async-await) 1.0%75582%128ms
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 100,740 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. Timer and rAF callbacks is 30.1% of sites.

Sites using each option (sites can use more than one) 100,740 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 · 210,902 crawled sites · 126,761 with phone field data · 100,740 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 45,852 sites (45.5% of LoAF sites), DOM event listeners trigger long frames (90% good INP, 103ms median). Classic script evaluation accounts for 40.1% (93% good INP) and timer/rAF user-callbacks account for 30.1% (93% good INP), while heavy module-script evaluation (2.5%) and unbatched Promise microtasks (1.0%) drop to 85% and 82% 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 (90% good INP) and 1.0% in Promise microtasks (82% good INP).

The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 100,740 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,048 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,048 WordPress sites recording LoAF entries, 40.8% record long frames in setTimeout/requestAnimationFrame callbacks (96% good INP), 38.5% during classic <script> evaluation (97%), and 36.1% in DOM event listeners (96%).

Read the WordPress LoAF invoker breakdown →
Shopify 5,428 stores
93% vs 91% good INP (classic script vs event listener LoAF)

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

Across 5,428 Shopify stores with Long Animation Frames, 58.3% record long frames during classic script evaluation (93% good INP, 114ms median), 38.2% in DOM event listeners (91% good INP, 119ms median), and 31.7% in timer callbacks (90%).

Read the Shopify LoAF invoker breakdown →
React & Next.js 5,840 sites
59.8% / 44.3% event listener / classic script LoAF on React

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

Across 5,840 React sites recording Long Animation Frames, 59.8% record long frames in DOM event listeners (93% good INP, 89ms median), 44.3% during script evaluation (92% good INP), and 18.8% in timer callbacks (93%).

Wix 3,502 sites
74.2% / 45.5% event listener / classic script LoAF on Wix

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

Across LoAF Wix sites, 7.1% record long timer callbacks (94% good INP), 74.2% record long frames in event listeners (97% good INP, 80ms 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 · 210,902 crawled sites (126,761 with phone Chrome field data, 100,740 sites with Long Animation Frame (LoAF) script invoker type, October 2026) · How we measured