Optimisation plugins moving your scripts
Combine, defer and especially "delay JavaScript until user interaction" are the single biggest cause of animation that works locally and dies in production. Delayed scripts run long after page load, so ScrollTrigger measures a page the user has already scrolled. Exclude the GSAP handles and your animation handle from combining and delay, then purge and retest signed out.
