gsap-performance

Optimize GSAP animations to reduce jank and achieve smooth 60fps.

11|1|Updated Mar 20, 2026
One-click install
npx skills add https://github.com/kartojal/openvps --skill gsap-performance-kartojal
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gsap-performance
Source: https://github.com/kartojal/openvps/tree/main/.agents/skills/gsap-performance
Command: npx skills add https://github.com/kartojal/openvps --skill gsap-performance-kartojal

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Helps front-end developers and designers reduce animation jank and maintain smooth 60fps by providing GSAP-specific performance guidance that minimizes layout, paint, and compositor overhead.

Core Features & Use Cases

  • Prefer transforms and opacity to keep animation work on the compositor and avoid layout-heavy properties like width, height, top, and left.
  • will-change guidance: apply will-change sparingly to elements that will animate to hint layer promotion.
  • Batching and reads/writes: avoid layout thrashing by grouping DOM reads then writes or letting GSAP handle batched updates.
  • Large lists and staggers: use stagger, virtualization, or reuse timelines to avoid hundreds of simultaneous tweens.
  • Frequently-updated properties: use gsap.quickTo() for mouse followers and other high-frequency updates.
  • ScrollTrigger tips: limit pinning, use appropriate scrub values, and debounce ScrollTrigger.refresh() to reduce work.

Quick Start

Use the gsap-performance skill to analyze an animation and apply transforms and opacity, add will-change selectively, batch reads/writes, use stagger or gsap.quickTo(), and debounce ScrollTrigger.refresh to improve frame rate.

Frequently Asked Questions about gsap-performance

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my GSAP animation have jank and drop below 60fps?

GSAP animation jank usually occurs when animating layout-heavy properties like width or top instead of transforms and opacity, forcing the browser to recalculate layout instead of using the compositor. Shifting work to transforms keeps animations smooth at 60fps.

What's the best way to animate mouse followers in GSAP without dropping frames?

For high-frequency mouse followers, use gsap.quickTo() to update properties efficiently and avoid creating new tweens continuously. This method minimizes overhead and maintains smooth frame rates during rapid updates.

How do I stop layout thrashing when batching GSAP DOM reads and writes?

To stop layout thrashing, batch DOM reads first, then perform writes, or let GSAP handle batched updates automatically. Grouping these operations prevents the browser from repeatedly recalculating layout during animation sequences.

Does ScrollTrigger pinning and scrub affect scroll performance?

Yes, excessive ScrollTrigger pinning and aggressive scrub values can impact scroll performance. Limit pinning, use appropriate scrub values, and debounce ScrollTrigger.refresh() to reduce the amount of processing work done during scrolling.

How can I optimize large staggered lists in GSAP to avoid frame drops?

To optimize large staggered lists, use GSAP stagger configurations, implement DOM virtualization, or reuse timelines. This prevents hundreds of simultaneous tweens from overwhelming the browser and degrading animation frame rates.

When should I use will-change in GSAP animations?

Apply will-change sparingly only to elements that will actually animate to hint layer promotion to the compositor. Overusing will-change causes excessive memory consumption and can negatively impact overall page performance.