Why it matters
Each WebGL context has its own GPU state and memory; browsers cap them (≈16) and mobile GPUs struggle with more than one.
How to fix it
Share one canvas/renderer across scenes (scissor/viewport per view) or render secondary visuals as video/images.
More smoothness rules
void smooth reports 13 rules in this category. How the page feels after it loads: dropped frames during a scripted scroll, long animation frames, INP of real clicks, shifts after input, animated layout properties, idle rAF loops and reduced-motion handling.
layout-shift-after-inputLayout shifts long after an interactionlayout-shift-on-scrollLayout shifts while scrollinganimate-layout-propertyAnimation of a layout-triggering propertytransition-alltransition: allwill-change-overusewill-change is applied too broadlyreduced-motion-ignoredAnimations keep running with prefers-reduced-motionraf-loop-idlerequestAnimationFrame loop runs while idlescroll-timeline-no-fallbackContent is invisible without scroll-driven-animation support