motion

Web animations with Motion (formerly Framer Motion) for React -- gestures, scroll effects, spring physics, layout animations, SVG, micro-interactions, loading states. Use when: drag-and-drop, scroll animations, modals, carousels, parallax, page transitions, hover effects, staggered lists, loading spinners, number counters. Troubleshoot: AnimatePresence exit, list performance, Tailwind conflicts, Next.js "use client", layout in scaled containers.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "motion" with this command: npx skills add oakoss/agent-skills/oakoss-agent-skills-motion

Motion

Overview

Motion (package: motion, formerly framer-motion) is the standard React animation library. Import from motion/react. Provides declarative props for gestures, scroll-linked animations, layout transitions, SVG path drawing, and spring physics. Uses a hybrid animation engine (WAAPI for transforms/opacity, ScrollTimeline for scroll-linked effects). Bundle ranges from 2.3 KB (useAnimate mini) to 34 KB (full), optimizable to 4.6 KB with LazyMotion. Compatible with React 18.2+, React 19, Next.js App Router, and Vite.

Do NOT use Motion for simple list add/remove animations (use AutoAnimate instead at 3.28 KB). Do NOT use for 3D (use Three.js / React Three Fiber).

Quick Reference

PatternAPI / Props
Fade in on mountinitial, animate, transition
Exit animationsAnimatePresence + exit prop (unique key required)
Staggered listvariants with staggerChildren
Hover / tap / focuswhileHover, whileTap, whileFocus
Dragdrag, dragConstraints, dragElastic
Scroll-triggeredwhileInView, viewport={{ once: true }}
Scroll-linked/parallaxuseScroll + useTransform
Progress indicatorscrollYProgress + scaleX
Layout animationlayout prop (FLIP technique)
Shared elementlayoutId (same ID across views)
Layout groupLayoutGroup wrapping sibling lists
Page transitionAnimatePresence + key={pathname}
SVG path drawingpathLength on motion.path
Animated counteruseSpring + useTransform
Imperative controluseAnimate hook returns [scope, animate]
Custom componentsmotion.create(Component) wraps any component
Bundle optimizationLazyMotion + domAnimation + m component (4.6 KB)
Reduced motionMotionConfig reducedMotion="user"

Common Mistakes

MistakeCorrect Pattern
AnimatePresence inside a conditionalKeep AnimatePresence mounted; place conditional content inside it
Missing unique key on AnimatePresence childrenAdd unique key to each direct child for exit animations
Tailwind transition-* classes with Motion animate propsRemove Tailwind transition classes to avoid stuttering
Importing from framer-motionUse import { motion } from "motion/react" (renamed late 2024)
Animating 50+ items without virtualizationUse react-window or @tanstack/react-virtual for large lists
Full 34 KB bundle for simple animationsUse LazyMotion + domAnimation (4.6 KB) or useAnimate (2.3 KB)
Missing "use client" in Next.js App RouterAdd directive or use motion/react-client import
Animating width/height directlyUse layout prop or transform: scale for GPU acceleration
No prefers-reduced-motion handlingWrap app in MotionConfig reducedMotion="user"

Delegation

  • Audit animation performance and bundle size: Use Explore agent to find heavy imports, missing LazyMotion, and reflow-triggering properties
  • Build complex multi-step animations: Use Task agent for scroll-linked parallax, shared layout transitions, and staggered sequences
  • Plan animation architecture for a new project: Use Plan agent to evaluate Motion vs AutoAnimate vs CSS-only based on requirements

If the design-system skill is available, delegate animation token definitions and motion design guidelines to it.

References

  • Core Patterns -- Animation patterns: fade, exit, stagger, gestures, modal, accordion, tabs, scroll, layout, drag, SVG, loading
  • Scroll Animations -- useScroll, useTransform, scroll-triggered, parallax, progress indicators, offset configuration
  • Performance -- LazyMotion, useAnimate, hardware acceleration, virtualization, production checklist
  • Next.js Integration -- App Router patterns, motion/react-client, Pages Router, known issues
  • Accessibility & CSS -- prefers-reduced-motion, MotionConfig, useReducedMotion, CSS keyframes, Tailwind animations
  • Library Selection Guide -- Motion vs AutoAnimate decision guide with feature comparison and use-case recommendations
  • Troubleshooting -- AnimatePresence bugs, Tailwind conflicts, layout glitches, React 19 issues, naming migration

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

github-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

tanstack-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

typescript-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

tanstack-devtools

No summary provided by upstream source.

Repository SourceNeeds Review