gsap-performance

Optimizes GSAP animations for smooth 60fps rendering using transforms, batching, and will-change.

Updated Sep 6, 2026
One-click install
npx skills add https://github.com/malikkotb/shellpluscore --skill gsap-performance-malikkotb
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gsap-performance
Source: https://github.com/malikkotb/shellpluscore/tree/main/.agents/skills/gsap-performance
Command: npx skills add https://github.com/malikkotb/shellpluscore --skill gsap-performance-malikkotb

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? GSAP animations can cause jank, dropped frames, and layout thrashing when they animate layout-heavy properties or create too many simultaneous tweens. This Skill provides concrete rules and patterns to keep animations on the compositor thread and running at 60fps. ## Core Features & Use Cases - Compositor-friendly properties: Guides you to animate transform and opacity (x, y, scale, rotation) instead of layout-triggering properties like width, height, top, and left. - Efficient update patterns: Covers gsap.quickTo() for frequently updated values like mouse followers, stagger for animating many elements, and will-change usage for layer promotion. - ScrollTrigger tuning: Advises on pin promotion, scrub values, and debounced ScrollTrigger.refresh() calls to reduce scroll-related work. - Use Case: A mouse-follower animation stutters because a new tween is created on every mousemove event. Apply this Skill to switch to gsap.quickTo() with a single reused tween, eliminating the jank. ## Quick Start Review my GSAP animation code and optimize it for smooth 60fps performance using transforms, quickTo, and proper cleanup.

Frequently Asked Questions about gsap-performance

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

FAQPage Schema
How do I make GSAP animations run at 60fps?

Animate only transform and opacity properties (x, y, scale, rotation) so work stays on the compositor and avoids layout and paint. Add will-change: transform in CSS on elements that animate, and avoid width, height, top, and left.

How to optimize GSAP mouse follower animations?

Use gsap.quickTo() for properties updated on every mousemove, such as x and y. It reuses a single tween instead of creating a new tween per event, which removes the jank caused by tween churn.

Should I use will-change on every animated element?

No. Apply will-change only to elements that actually animate, since it promotes elements to their own layer and consumes memory. Setting it everywhere 'just in case' wastes resources without benefit.

Why does my GSAP ScrollTrigger animation cause jank?

Jank often comes from pinning too many elements, calling ScrollTrigger.refresh() on every resize, or running heavy scrub animations. Pin only what is needed, use a small scrub value, and debounce refresh calls to fire only when layout actually changes.

When should I use stagger instead of multiple tweens?

Use stagger whenever many elements share the same animation, since it is more efficient than creating separate tweens with manual delays. For very long lists, also consider virtualization or animating only visible items.