LoAF script invokers on React sites

Among sites recording Long Animation Frames, 59.8% (3,490) trigger long frames from DOM event listeners (93% good INP, 89ms median), 44.3% from classic script evaluation (92% good INP), and 18.8% from timer/rAF callbacks (93% good INP).

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 →

59.8% of React sites use DOM event listeners Long Animation Frame (LoAF) script invoker type, and 93% 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 · 5,840 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
1

INP pass rate

Sites with DOM event listeners Long Animation Frame (LoAF) script invoker type have a good INP most often: 93%, against 92% of all React sites. Sites with classic script evaluation LoAF invokers have it least often, at 92%.

SitesGood, needs improvement, poor INPMedian
All React sites5,48892%90ms
ES module <script type="module"> evaluation 0.3%15100%132ms
DOM event listener (click / scroll / input) 59.8%1,96493%89ms
Timer / rAF callback (setTimeout / requestAnimationFrame) 18.8%67193%105ms
Classic <script> evaluation 44.3%1,45192%90ms
Promise microtask resolution (then / async-await) 0.8%2974%117ms
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 5,840 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: 59.8% of React sites.

Sites using each option (sites can use more than one) 5,840 sites
DOM event listener (click / scroll / input) 59.8% Classic <script> evaluation 44.3% Timer / rAF callback (setTimeout / requestAnimationFrame) 18.8%
DOM event listener (click / scroll / input) 59.8% Classic <script> evaluation 44.3% Timer / rAF callback (setTimeout / requestAnimationFrame) 18.8% Promise microtask resolution (then / async-await) 0.8% ES module <script type="module"> evaluation 0.3%
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 5,840 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
3

Long Animation Frame (LoAF) script invoker type per platform

Wix sets the Long Animation Frame (LoAF) script invoker type to DOM event listeners on 74% of its sites, and 96% of Wix sites have a good INP, against 92% of all sites.

PlatformLong Animation Frame (LoAF) script invoker type on its sitesGood INP
React sites with Long Animation Frame (LoAF) script invoker type 5,840 sitesDOM event listener (click / scroll / input) 60%Classic <script> evaluation 44%Timer / rAF callback (setTimeout / requestAnimationFrame) 19%92%
Wix 3,502 sitesDOM event listener (click / scroll / input) 74%Classic <script> evaluation 46%96%
WordPress 1,383 sitesTimer / rAF callback (setTimeout / requestAnimationFrame) 43%Classic <script> evaluation 38%DOM event listener (click / scroll / input) 35%96%
DOM event listener (click / scroll / input) Classic <script> evaluation Timer / rAF callback (setTimeout / requestAnimationFrame) Promise microtask resolution (then / async-await) ES module <script type="module"> evaluation
The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 5,840 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
4

LoAF script invoker or the platform

Does the platform explain the Long Animation Frame (LoAF) script invoker type difference?

On Wix, 97% of sites with DOM event listeners Long Animation Frame (LoAF) script invoker type have a good INP, against 98% of Wix sites with classic script evaluation. Within Wix, sites with DOM event listeners and classic script evaluation have a good INP about equally often. On WordPress, 95% of sites with DOM event listeners Long Animation Frame (LoAF) script invoker type have a good INP, against 97% of WordPress sites with classic script evaluation. Within WordPress, sites with DOM event listeners and classic script evaluation have a good INP about equally often.

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 3,490 sites (59.8% of LoAF sites), DOM event listeners trigger long frames (93% good INP, 89ms median). Classic script evaluation accounts for 44.3% (92% good INP) and timer/rAF user-callbacks account for 18.8% (93% good INP), while heavy module-script evaluation (0.3%) and unbatched Promise microtasks (0.8%) drop to 100% and 74% good INP.

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 5,840 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Understanding Long Animation Frame script invokers

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, 59.8% trigger long frames in event listeners (93% good INP) and 0.8% in Promise microtasks (74% good INP).

The State of Web Vitals · October 2026 · React: 9,570 crawled sites · 5,488 with phone field data · 5,840 sites with Long Animation Frame (LoAF) script invoker typeBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals INP phase breakdown → Yielding strategy → Blocking frame breakdown → Scheduling API use → By Arjen Karel · 9,570 crawled React sites (5,488 with phone Chrome field data, 5,840 sites with Long Animation Frame (LoAF) script invoker type, October 2026) · How we measured