The industry-standard animation platform for complex timelines, scroll-driven narratives, and cross-surface choreography. GSAP handles what CSS transitions and Motion cannot: frame-perfect orchestration across heterogeneous targets (DOM, Canvas, WebGL, SVG), scroll-linked pinning and scrubbing, and timeline sequences with labels and callbacks.
When to use
Scroll-driven pinning or scrubbing sections that teach the user something
Multi-element orchestrated sequences with precise timing control
Mixed-surface animations: DOM elements + Canvas + WebGL coordinated together
Complex SVG or path animations with morphing
Parallax effects that go beyond simple CSS transforms
Any animation requiring frame-perfect control with gsap.ticker
When NOT to use
Simple component enter/exit animations in React — use Motion
Hover, tap, and focus micro-interactions — use Motion gesture props
Layout animations where elements reorder — use Motion layout prop
Static sites with no JavaScript — use CSS transitions/keyframes
Dense documentation pages — do not add Lenis or scroll choreography
React cleanup is mandatory — Failing to ctx.revert() causes memory leaks and zombie ScrollTrigger instances. Always use gsap.context() with useLayoutEffect.
Lenis on content-heavy pages — Lenis overrides native scroll behavior. On documentation sites or long-form content, this hurts usability. Only use Lenis when smooth scroll is integral to the design concept.
Pin spacing — Pinning adds extra height to the page flow. If layout breaks, check pinSpacing: false or account for the added space.
Touch devices — Scrub-heavy sections feel different on touch. Test swipe velocity and consider simplifying the experience on mobile.
Hot module replacement — GSAP instances survive HMR in development. If animations double, ensure cleanup runs on HMR updates.
GSAP license — GSAP is free for most use. The "No Charge" license covers nearly all scenarios. The Business Green license is needed for tools that let customers build animations.
Evaluation criteria
gsap.registerPlugin(ScrollTrigger) called before any ScrollTrigger use
All GSAP code wrapped in gsap.context() with cleanup in useLayoutEffect return
Every pinned section justifies the scroll pause with meaningful content
Touch/mobile scroll behavior tested on real devices
Lenis used only when smooth scroll is integral to the concept (not on docs/dashboards)
Total active ScrollTrigger instances per page are under 20
Responsive behavior handled with ScrollTrigger.matchMedia()
Animations target transform and opacity (not layout-triggering properties)
Agent docs
4 attached
Codex — GSAP + ScrollTrigger
Environment
Sandboxed, file I/O only. No browser or scroll preview — ensure code is structurally valid and cleanup is present.
When this skill is active
Register ScrollTrigger plugin before any usage: gsap.registerPlugin(ScrollTrigger).
Always use gsap.context() in React useLayoutEffect for cleanup.
Pin sections only when the scroll pause teaches the user something concrete.
Pair with Lenis for smooth scroll sync only when the design concept requires it.
Test touch/mobile scroll behavior before shipping.
Tool usage
Generate GSAP animation code in component files within components/.
Place shared timeline factories in lib/gsap-timelines.ts.
Place ScrollTrigger configuration objects in lib/scroll-configs.ts.
Testing expectations
Verify gsap.context() cleanup is present in every useLayoutEffect that creates GSAP instances.
Ensure gsap.registerPlugin(ScrollTrigger) is called at module level, not inside a component.
Build must succeed — GSAP is an external dependency, ensure it is in package.json.
Scan the GSAP community forum and Chrome DevTools blog for new ScrollTrigger features, scroll-timeline CSS spec progress, or breaking changes in scroll-driven animation APIs. Update pinning, scrubbing, and parallax guidance if anything shipped.
Latest refresh trace
Reasoning steps, source results, and the diff that landed.
Apr 2, 2026 · 10:06 PM
triggerManual
editoropenai/gpt-5-mini
duration31.4s
statussuccess
web searches4
No material changes
GSAP + ScrollTrigger agent run was interrupted: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Pur
Agent crashed mid-run after 4 search(es). (agent error: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Purchase credits at htt)
+Summary: GSAP + ScrollTrigger agent run was interrupted: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Pur
+What changed: Agent crashed mid-run after 4 search(es). (agent error: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Purchase credits at htt)
−Generated:2026-03-30T01:39:35.074Z
+Body changed:no
−Summary: Add browser-integration guidance (View Transitions, Scroll-linked animations, Navigation API), explicit scroller and scrollerProxy examples, and practical rules for refresh/cleanup and popovers in scrollable containers.
−What changed: Expanded ScrollTrigger patterns with explicit scroller and scrollerProxy examples, added a new "Browser changes & integration patterns" section (View Transitions, ScrollTimeline, Navigation API) with code snippets and guidance to call ScrollTrigger.refresh() after transitions/navigations, added practical rules for dropdowns/popovers in scrollable containers and a short checklist. Kept original intent and structure.
−- Addanexampledemothatuses the View Transitions API and calls ScrollTrigger.refresh() after the transition finishes to ensure triggers align with the new layout.
+- Checkgatewaycreditsorratelimits.
−- Create a pattern library page showing scrollerProxy integrations for several smooth-scroll libraries (Lenis, locomotive) and measure frame stability/CPU across devices.
Signals:
+- Community (Gsap community)
+- My Account (Gsap community)
+- Account Settings (Gsap community)
−- freeforeveryone (GSAP Community)
+- Messages(Gsapcommunity)
−- Core (GSAP Community)
−- Text (GSAP Community)
−- Showcase (GSAP Community)
Research engine
GSAP + ScrollTrigger now combines 4 tracked sources with 1 trusted upstream skill packs. Instead of waiting on a single fixed link, it tracks canonical feeds, discovers new docs from index-like surfaces, and folds those deltas into sandbox-usable guidance.
4 sourcesQuality 80
Discovery process
1. Track canonical signals
Monitor 3 feed-like sources for release notes, changelog entries, and durable upstream deltas.
2. Discover net-new docs and leads
Scan 1 discovery-oriented sources such as docs indexes and sitemaps, then rank extracted links against explicit query hints instead of trusting nav order.
3. Transplant from trusted upstreams
Fold implementation patterns from GSAP + ScrollTrigger so the skill inherits a real operating model instead of boilerplate prose.
4. Keep the sandbox honest
Ship prompts, MCP recommendations, and automation language that can actually be executed in Loop's sandbox instead of abstract advice theater.
+Summary: GSAP + ScrollTrigger agent run was interrupted: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Pur
+What changed: Agent crashed mid-run after 4 search(es). (agent error: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Purchase credits at htt)
−Generated:2026-03-30T01:39:35.074Z
+Body changed:no
−Summary: Add browser-integration guidance (View Transitions, Scroll-linked animations, Navigation API), explicit scroller and scrollerProxy examples, and practical rules for refresh/cleanup and popovers in scrollable containers.
−What changed: Expanded ScrollTrigger patterns with explicit scroller and scrollerProxy examples, added a new "Browser changes & integration patterns" section (View Transitions, ScrollTimeline, Navigation API) with code snippets and guidance to call ScrollTrigger.refresh() after transitions/navigations, added practical rules for dropdowns/popovers in scrollable containers and a short checklist. Kept original intent and structure.
−- Addanexampledemothatuses the View Transitions API and calls ScrollTrigger.refresh() after the transition finishes to ensure triggers align with the new layout.
+- Checkgatewaycreditsorratelimits.
−- Create a pattern library page showing scrollerProxy integrations for several smooth-scroll libraries (Lenis, locomotive) and measure frame stability/CPU across devices.
Signals:
+- Community (Gsap community)
+- My Account (Gsap community)
+- Account Settings (Gsap community)
−- freeforeveryone (GSAP Community)
+- Messages(Gsapcommunity)
−- Core (GSAP Community)
−- Text (GSAP Community)
−- Showcase (GSAP Community)
Update history2▶
Apr 2, 20264 sources
GSAP + ScrollTrigger agent run was interrupted: Free credits temporarily have rate limits in place due to abuse. We are working on a resolution. Try again later, or pay for credits which continue to have unrestricted access. Pur
Mar 30, 20264 sources
Add browser-integration guidance (View Transitions, Scroll-linked animations, Navigation API), explicit scroller and scrollerProxy examples, and practical rules for refresh/cleanup and popovers in scrollable containers.