Help us improve
Share bugs, ideas, or general feedback.
From gsap-skills
Optimizes GSAP animations for 60fps: prefer transforms/opacity, avoid layout thrashing, apply will-change, batch reads/writes, use stagger/quickTo, ScrollTrigger tips.
npx claudepluginhub greensock/gsap-skills --plugin gsap-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/gsap-skills:gsap-performanceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Apply when optimizing GSAP animations for smooth 60fps, reducing layout/paint cost, or when the user asks about performance, jank, or best practices for fast animations.
Provides GSAP core API guidance: gsap.to(), from(), easing, stagger, matchMedia() for responsive/reduced-motion animations in JavaScript, React, Vue, Svelte, or vanilla DOM/SVG.
GSAP animation reference for HyperFrames compositions. Covers gsap.to(), from(), fromTo(), easing, stagger, timelines, and performance best practices.
GSAP animation reference for HyperFrames compositions. Covers gsap.to(), from(), fromTo(), easing, stagger, timelines, and performance best practices.
Share bugs, ideas, or general feedback.
Apply when optimizing GSAP animations for smooth 60fps, reducing layout/paint cost, or when the user asks about performance, jank, or best practices for fast animations.
Related skills: Build animations with gsap-core (transforms, autoAlpha) and gsap-timeline; for ScrollTrigger performance see gsap-scrolltrigger.
Animating transform (x, y, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY) and opacity keeps work on the compositor and avoids layout and most paint. Avoid animating layout-heavy properties when a transform can achieve the same effect.
GSAP’s x and y use transforms (translate) by default; use them instead of left/top for movement.
Use will-change in CSS on elements that will animate. It hints the browser to promote the layer.
will-change: transform;
GSAP batches updates internally. When mixing GSAP with direct DOM reads/writes or layout-dependent code, avoid interleaving reads and writes in a way that causes repeated layout thrashing. Prefer doing all reads first, then all writes (or let GSAP handle the writes in one go).
Prefer gsap.quickTo() for properties that are updated often (e.g. mouse-follower x/y). It reuses a single tween instead of creating new tweens on each update.
let xTo = gsap.quickTo("#id", "x", { duration: 0.4, ease: "power3" }),
yTo = gsap.quickTo("#id", "y", { duration: 0.4, ease: "power3" });
document.querySelector("#container").addEventListener("mousemove", (e) => {
xTo(e.pageX);
yTo(e.pageY);
});
scrub: 1) can reduce work during scroll; test on low-end devices.