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).
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.
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%.
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.
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).
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.
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%).
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%).
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%).
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%).
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.