
Gsap Framer Scroll Animation
Give your agent a Motion v12 scroll-animation reference so it can ship parallax, reveal, and scroll-linked UI in React or Next.js without guessing hook APIs.
Overview
gsap-framer-scroll-animation is an agent skill most often used in Build (also Validate landing, Launch distribution) that teaches solo builders how to implement scroll-linked and parallax UI with Motion v12 hooks in Reac
Install
npx skills add https://github.com/github/awesome-copilot --skill gsap-framer-scroll-animationWhat is this skill?
- Full useScroll, useTransform, useSpring, and useMotionValueEvent reference for Motion v12 (`motion/react`) with legacy `
- Eight copy-paste recipes: progress bar, ScrollReveal, parallax, horizontal scroll, clip-path reveal, hide/show navbar, s
- Variants pattern for staggered children plus a dedicated accessibility section (`prefers-reduced-motion`) and Next.js Ap
- Common Copilot pitfalls section to avoid wrong packages, SSR motion values, and scroll container mistakes
- 8 scroll-animation recipes with Copilot-oriented prompts in the reference
- 11 major sections in the full Motion scroll reference TOC
- 2 distinct scroll-animation approaches documented (scroll-linked vs viewport-triggered)
Adoption & trust: 1.2k installs on skills.sh; 34.6k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want scroll-driven parallax, reveals, or progress effects in a React or Next.js app but keep mixing up Motion v12 imports, useScroll targets, and client-only boundaries.
Who is it for?
Solo builders shipping React or Next.js landing pages, marketing sites, or SaaS frontends who want Framer Motion–style scroll effects with documented recipes and pitfall guards.
Skip if: Teams on non-React stacks, projects that forbid scroll motion, or workflows that need GSAP-only timelines without Motion—this reference does not document GSAP APIs.
When should I use this skill?
When implementing scroll-linked, parallax, or reveal animations with Motion (Framer Motion) v12 in React or Next.js client components.
What do I get? / Deliverables
Your agent produces correct `motion/react` scroll recipes—reusable wrappers, stagger variants, and reduced-motion-safe components—ready to drop into client components in your repo.
- Scroll-linked UI components (e.g. progress bar, parallax layers, ScrollReveal wrapper)
- Variant-driven stagger layouts for scroll-triggered sections
- Accessibility-aware motion that respects `prefers-reduced-motion`
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Scroll animation is implemented in product UI code, so the canonical shelf is Build → frontend even when the page is a landing or marketing surface. The skill is entirely React/Motion hooks, variants, and client components—frontend engineering, not backend or ops.
Where it fits
Add staggered ScrollReveal blocks and a scroll progress bar on a pre-launch landing page without breaking the App Router layout.
Implement parallax layers and a hide-on-scroll navbar in the main marketing shell using documented useScroll offset recipes.
Polish a launch microsite with horizontal scroll storytelling and clip-path image reveals tied to scroll progress.
How it compares
Use as a structured Motion scroll cookbook instead of asking the model to improvise IntersectionObserver or CSS-only parallax each time.
Common Questions / FAQ
Who is gsap-framer-scroll-animation for?
It is for solo and indie builders using Claude Code, Cursor, or Codex on React or Next.js who need scroll-linked animation patterns without digging through Motion docs on every feature.
When should I use gsap-framer-scroll-animation?
Use it in Build when wiring frontend motion, in Validate when polishing a landing page hero and section reveals, and in Launch when upgrading distribution pages with parallax or scroll progress—any time you implement `useScroll` / `useTransform` in client components.
Is gsap-framer-scroll-animation safe to install?
Treat it like any third-party skill: review the Security Audits panel on this Prism page and skim the SKILL.md in your repo before letting an agent edit production UI.
SKILL.md
READMESKILL.md - Gsap Framer Scroll Animation
# Framer Motion (Motion v12) — Full Reference > Framer Motion was renamed to **Motion** in mid-2025. The npm package is now `motion`, > the import path is `motion/react`. All APIs are identical. `framer-motion` still works. ## Table of Contents 1. [Package & Import Paths](#package--import-paths) 2. [Two Types of Scroll Animation](#two-types-of-scroll-animation) 3. [useScroll — Options Reference](#usescroll--options-reference) 4. [useTransform — Full Reference](#usetransform--full-reference) 5. [useSpring for Smoothing](#usespring-for-smoothing) 6. [Recipes with Copilot Prompts](#recipes-with-copilot-prompts) - Scroll progress bar - Reusable ScrollReveal wrapper - Parallax layers - Horizontal scroll section - Image reveal with clipPath - Scroll-linked navbar (hide/show) - Staggered card grid - 3D tilt on scroll 7. [Variants Pattern for Stagger](#variants-pattern-for-stagger) 8. [Motion Value Events](#motion-value-events) 9. [Next.js & App Router Notes](#nextjs--app-router-notes) 10. [Accessibility](#accessibility) 11. [Common Copilot Pitfalls](#common-copilot-pitfalls) --- ## Package & Import Paths ```bash npm install motion # recommended (renamed 2025) npm install framer-motion # still works — same API ``` ```js // Recommended (Motion v12+) import { motion, useScroll, useTransform, useSpring, useMotionValueEvent } from 'motion/react'; // Legacy — still valid import { motion, useScroll, useTransform } from 'framer-motion'; ``` **Motion v12 new features (2025):** - Hardware-accelerated scroll via browser ScrollTimeline API - `useScroll` and `scroll()` now GPU-accelerated by default - New color types: `oklch`, `oklab`, `color-mix` animatable directly - Full React 19 + concurrent rendering support --- ## Two Types of Scroll Animation ### Scroll-triggered (fires once when element enters viewport) ```jsx <motion.div initial={{ opacity: 0, y: 50 }} whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true, margin: '-80px' }} transition={{ duration: 0.6, ease: [0.21, 0.47, 0.32, 0.98] }} > Content </motion.div> ``` `viewport.margin` — negative value triggers animation before element fully enters view. `viewport.once` — `true` means animate once, never reverse. ### Scroll-linked (continuous, tied to scroll position) ```jsx const { scrollYProgress } = useScroll(); const opacity = useTransform(scrollYProgress, [0, 1], [0, 1]); return <motion.div style={{ opacity }}>Content</motion.div>; ``` The value updates on every scroll frame — must use `style` prop, not `animate`. --- ## useScroll — Options Reference ```js const { scrollX, // Absolute horizontal scroll (pixels) scrollY, // Absolute vertical scroll (pixels) scrollXProgress, // Horizontal progress 0→1 between offsets scrollYProgress, // Vertical progress 0→1 between offsets } = useScroll({ // Track a scrollable element instead of the viewport container: containerRef, // Track an element's position within the container target: targetRef, // Define when tracking starts and ends // Format: ["target position container position", "target position container position"] offset: ['start end', 'end start'], // Common offset pairs: // ['start end', 'end start'] = track while element is anywhere in view // ['start end', 'end end'] = track from element entering to bottom of page // ['start start', 'end start'] = track while element exits top // ['center center', 'end start']= track from center-center to exit // Update when content size changes (small perf cost, false by default) trackContentSize: false, }); ``` **Offset string values:** - `start` = `0` = top/left edge - `center` = `0.5` = middle - `end` = `1` = bottom/right edge - Numbers 0–1 also work: `[0, 1]` = `['start', 'end']` --- ## useTransform — Full Reference ```js // Map a motion value from one range to another const y = useTransform(scrollYProgress, [0, 1], [0, -200]); // Multi-stop interpolation cons