I got Webflow support to look into this and they informed me that the marquee component is stopping my hero text from animating in on page load. It works for all other components but any page with the marquee is broken until a user scrolls.
Is there a setting update I can pass to the component? I really don’t want to have to go through and update the animation to use GSAP over standard Webflow animations.
Site URL
Required: Please provide a staging/production URL where we can see the issue
Your setup (Lenis + GSAP + ScrollTrigger + IX2 + Marquee all on the same page) is pretty elaborate
The fact that it works on scroll shows it’s triggered by this line
lenis.on("scroll", ScrollTrigger.update);
Hero stays blank until you scroll, Lenis fires ScrollTrigger.update() , animations play then content appears
We need to refresh the ScrollTrigger. Add this after the Lenis setup, the requestAnimationFrame ensures the marquee has finished all DOM changes before ScrollTrigger.refresh() runs
Hey @jesse.muiruri I tried adding it at the end of the lenis code. Unfortunately, it doesn’t seem to have fixed the bug. This is the lenis code and where I imported your snippet.
The code is redundant and adds a second layer of hiding that interferes with the page-load animations. Intellimize already handles the flash of unstyled content with its own anti-flicker script
Here’s an explanation on what is potentially happening:
There’s a Intellimize Anti-Flicker + Webflow IX2 Timing Conflict
Intellimize anti-flicker, which runs async, hides the page while the animation plays. Webflow IX2 fires your hero animation during this window. The animation runs and completes but since the page is invisible, the user never sees it. By the time Intellimize removes the class and the page becomes visible, the animation is already done and the hero text just appears static.
On scroll Webflow IX2’s Scroll Into View trigger causes a fresh intersection check, Intellimize has long since removed the anti-flicker class, so this time the animation fires visibly.
The page’s redundant flicker-removal pattern (the code with the html { opacity: 0 }..) creates a second layer of hiding on top of Intellimize. The two are racing against each other and against Webflow IX2’s animation timing.
Keep this code since it helps recalculate page height after marquee initializes
I am having the same issue lately (component code update??). We are not using anything custom outside of webflow and the marquee. Pages with the marquee element, the hero does not animate until after user initiates scrolling. Pages without a marquee behave normally.
I am using the element trigger on the full section, with it sliding in from the bottom when scrolled into view. For the hero, this has normally been firing once the page loads since it is already in view.
Any guidance on how to solve this would be greatly appreciated!