← Back to list
⚡

gsap-plugins Checked

Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Dragga…
⚡ Productivity skills By calesthio Version v1.0.0 Added 2026-09-07 Updated 2026-09-07 Source ↗
8.6Overall rating
2Views
6Downloads
56.5kStars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "gsap-plugins" skill by following the instructions at https://skill123.me/install/gsap-plugins.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/gsap-plugins.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 8 KB
📊 Static rating
8.6/10
Trigger
9.0
Structure
8.0
Workflow
6.4
Content
10.0
Engineering
10.0
Security
10.0

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, ScrambleText, SVG and physics plugins, CustomEase, EasePack, CustomWiggle, CustomBounce, GSDevTools. Use when the user asks about a GSAP plugin, scroll-to, flip animations, draggable, SVG drawing, or plugin registration.

GSAP Plugins

Documentation

Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, ScrambleText, SVG and physics plugins, CustomEase, EasePack, CustomWiggle, CustomBounce, GSDevTools. Use when the user asks about a GSAP plugin, scroll-to, flip animations, draggable, SVG drawing, or plugin registration.

GSAP Plugins

When to Use This Skill

Apply when using or reviewing code that uses GSAP plugins: registering plugins, scroll-to, flip/FLIP animations, draggable elements, SVG (DrawSVG, MorphSVG, MotionPath), text (SplitText, ScrambleText), physics, easing plugins (CustomEase, EasePack, CustomWiggle, CustomBounce), or GSDevTools. ScrollTrigger has its own skill (gsap-scrolltrigger).

**Related skills:** For core tweens use **gsap-core**; for ScrollTrigger use **gsap-scrolltrigger**; for React use **gsap-react**.

Registering Plugins

Register each plugin once so GSAP (and bundlers) know to include it. Use **gsap.registerPlugin()** with every plugin used in the project:


import gsap from "gsap";
import { ScrollToPlugin } from "gsap/ScrollToPlugin";
import { Flip } from "gsap/Flip";
import { Draggable } from "gsap/Draggable";

gsap.registerPlugin(ScrollToPlugin, Flip, Draggable);
  • ✅ Register before using the plugin in any tween or API call.
  • ✅ In React, register at top level or once in the app (e.g. before first useGSAP); do not register inside a component that re-renders. useGSAP is a plugin that needs to be registered before use.

Scroll

### ScrollToPlugin

Animates scroll position (window or a scrollable element). Use for “scroll to element” or “scroll to position” without ScrollTrigger.


gsap.registerPlugin(ScrollToPlugin);

gsap.to(window, { duration: 1, scrollTo: { y: 500 } });
gsap.to(window, { duration: 1, scrollTo: { y: "#section", offsetY: 50 } });
gsap.to(scrollContainer, { duration: 1, scrollTo: { x: "max" } });

**ScrollToPlugin — key config (scrollTo object):**

| Option | Description |

|--------|-------------|

| x, y | Target scroll position (number), or "max" for maximum |

| element | Selector or element to scroll to (for scroll-into-view) |

| offsetX, offsetY | Offset in pixels from the target position |

### ScrollSmoother

Smooth scroll wrapper (smooths native scroll). Requires ScrollTrigger and a specific DOM structure (content wrapper + smooth wrapper). Use when smooth, momentum-style scroll is needed. See GSAP docs for setup; register after ScrollTrigger. DOM structure would look like:


<body>
	<div id="smooth-wrapper">
		<div id="smooth-content">
			<!--- ALL YOUR CONTENT HERE --->
		</div>
	</div>
	<!-- position: fixed elements can go outside --->
</body>

DOM / UI

### Flip

View full documentation

Capture state with Flip.getState(), then apply changes (e.g. layout or class changes), then use Flip.from() to animate from the previous state to the new state (FLIP: First, Last, Invert, Play). Use when animating between two layout states (lists, grids, expanded/collapsed).


gsap.registerPlugin(Flip);

const state = Flip.getState(".item");
// change DOM (reorder, add/remove, change classes)
Flip.from(state, { duration: 0.5, ease: "power2.inOut" });

**Flip — key config (Flip.from vars):**

| Option | Description |

|--------|-------------|

| absolute | Use position: absolute during the flip (default: false) |

| nested | When true, only the first level of children is measured (better for nested transforms) |

| scale | When true, scale elements to fit (avoids stretch); default true |

| simple | When true, only position/scale are animated (faster, less accurate) |

| duration, ease | Standard tween options |

#### More information

https://gsap.com/docs/v3/Plugins/Flip

### Draggable

Makes elements draggable, spinnable, or throwable with mouse/touch. Use for sliders, cards, reorderable lists, or any drag interaction.


gsap.registerPlugin(Draggable, InertiaPlugin);

Draggable.create(".box", { type: "x,y", bounds: "#container", inertia: true });
Draggable.create(".knob", { type: "rotation" });

**Draggable — key config options:**

| Option | Description |

|--------|-------------|

| type | "x", "y", "x,y", "rotation", "scroll" |

| bounds | Element, selector, or { minX, maxX, minY, maxY } to constrain drag |

| inertia | true to enable throw/momentum (requires InertiaPlugin) |

| edgeResistance | 0–1; resistance when dragging past bounds |

| cursor | CSS cursor during drag |

| onDragStart, onDrag, onDragEnd | Callbacks; receive event and target |

| onThrowUpdate, onThrowComplete | Callbacks when inertia is active |

### Inertia (InertiaPlugin)

Works with Draggable for momentum after release, or track the inertia/velocity of any property of any object so that it can then seamlessly glide to a stop using a simple tween. Register with Draggable when using inertia: true:


gsap.registerPlugin(Draggable, InertiaPlugin);
Draggable.create(".box", { type: "x,y", inertia: true });

Or track velocity of a property:


InertiaPlugin.track(".box", "x");

Then use "auto" to continue the current velocity and glide to a stop:


gsap.to(obj, { inertia: { x: "auto" } });

### Observer

Normalizes pointer and scroll input across devices. Use for swipe, scroll direction, or custom gesture logic without tying directly to scroll position like ScrollTrigger.


gsap.registerPlugin(Observer);

Observer.create({
  target: "#area",
  onUp: () => {},
  onDown: () => {},
  onLeft: () => {},
  onRight: () => {},
  tolerance: 10
});

**Observer — key config options:**

| Option | Description |

|--------|-------------|

| target | Element or selector to observe |

| onUp, onDown, onLeft, onRight | Callbacks when swipe/scroll passes tolerance in that direction |

| tolerance | Pixels before direction is detected; default 10 |

| type | "touch", "pointer", or "wheel" (default: "touch,pointer") |

Text

### SplitText

Splits an element’s text into characters, words, and/or lines (each in its own element) for staggered or per-unit animation. Use when animating text character-by-character, word-by-word, or line-by-line. Returns an instance with **chars**, **words**, **lines** (and **masks** when mask is set). Restore original markup with **revert()** or let **gsap.context()** revert. Integrates with **gsap.context()**, **matchMedia()**, and **useGSAP()**. API: **SplitText.create(target, vars)** (target = selector, element, or array).


gsap.registerPlugin(SplitText);

const split = SplitText.create(".heading", { type: "words, chars" });
gsap.from(split.chars, { opacity: 0, y: 20, stagger: 0.03, duration: 0.4 });
// later: split.revert() or let gsap.context() cleanup revert

With **onSplit()** (v3.13.0+), animations run on each split and on re-split when **autoSplit** is used; returning a tween/timeline from **onSplit()** lets SplitText clean up and sync progress on re-split:


SplitText.create(".split", {
  type: "lines",
  autoSplit: true,
  onSplit(self) {
    return gsap.from(self.lines, { y: 100, opacity: 0, stagger: 0.05, duration: 0.5 });
  }
});

**SplitText — key config (SplitText.create vars):**

| Option | Description |

|--------|-------------|

| **type** | Comma-separated: "chars", "words", "lines". Default "chars,words,lines". Only split what is needed (e.g. "words, chars" if not using lines) for performance. Avoid chars-only without words/lines or use **smartWrap: true** to prevent odd line breaks. |

| **charsClass**, **wordsClass**, **linesClass** | CSS class on each split element. Append "++" to add an incremented class (e.g. linesClass: "line++" → line1, line2, …). |

| **aria** | "auto" (default), "hidden", or "none". Accessibility: "auto" adds aria-label on the split element and aria-hidden on line/word/char elements so screen readers read the label; "hidden" hides all from readers; "none" leaves aria unchanged. Use "none" plus a screen-reader-only duplicate if nested links/semantics must be exposed. |

| **autoSplit** | When true, reverts and re-splits when fonts finish loading or when the element width changes (and lines are split), avoiding wrong li

Score breakdown

Trigger
9.0
Description enumerates all plugin names and use keywords; ScrollTrigger exclusion stated; boundary otherwise via related skills.
Structure
8.0
426-line single file within limits; catalog organization fine but no references layer for the large topic.
Workflow
6.4
Per-plugin usage patterns and detailed caveats, but reference lookup style without task steps or verification.
Content
10.0
Consistent tables and runnable snippets; precise caveats like drawSVG segment semantics.
Engineering
10.0
Valid frontmatter with license; all doc links official gsap.com.
Security
10.0
No scripts, secrets, or injection; purely educational content.
Comprehensive official GSAP plugin catalog covering ScrollTo, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, SVG, physics, and dev tools, with config tables and caveats. Single-file reference at 426 lines, no progressive disclosure or workflow layer.