Community Framer Motion Best Practices
Comprehensive performance optimization guide for Framer Motion animations in React applications. Contains 42 rules across 9 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
-
Adding animations to React components with Framer Motion
-
Optimizing bundle size for animation-heavy applications
-
Preventing unnecessary re-renders during animations
-
Implementing layout transitions or shared element animations
-
Building scroll-linked or gesture-based interactions
Rule Categories by Priority
Priority Category Impact Prefix
1 Bundle Optimization CRITICAL bundle-
2 Re-render Prevention CRITICAL rerender-
3 Animation Properties HIGH anim-
4 Layout Animations HIGH layout-
5 Scroll Animations MEDIUM-HIGH scroll-
6 Gesture Optimization MEDIUM gesture-
7 Spring & Physics MEDIUM spring-
8 SVG & Path Animations LOW-MEDIUM svg-
9 Exit Animations LOW exit-
Quick Reference
- Bundle Optimization (CRITICAL)
-
bundle-lazy-motion
-
Use LazyMotion and m component instead of motion
-
bundle-dynamic-features
-
Dynamically import motion features
-
bundle-dom-animation
-
Use domAnimation for basic animations
-
bundle-use-animate-mini
-
Use mini useAnimate for simple cases
-
bundle-strict-mode
-
Enable strict mode to catch accidental imports
- Re-render Prevention (CRITICAL)
-
rerender-motion-value
-
Use useMotionValue instead of useState
-
rerender-use-transform
-
Derive values with useTransform
-
rerender-stable-callbacks
-
Keep animation callbacks stable
-
rerender-variants-object
-
Define variants outside component
-
rerender-animate-prop
-
Use stable animate values
-
rerender-motion-value-event
-
Use motion value events
- Animation Properties (HIGH)
-
anim-transform-properties
-
Animate transform properties
-
anim-opacity-filter
-
Prefer opacity and filter for visual effects
-
anim-hardware-acceleration
-
Leverage hardware acceleration
-
anim-will-change
-
Use willChange prop judiciously
-
anim-independent-transforms
-
Animate transforms independently
-
anim-keyframes-array
-
Use keyframe arrays for sequences
- Layout Animations (HIGH)
-
layout-dependency
-
Use layoutDependency to limit measurements
-
layout-position-size
-
Use layout="position" or "size" appropriately
-
layout-group
-
Group related layout animations
-
layout-id-shared
-
Use layoutId for shared element transitions
-
layout-scroll
-
Add layoutScroll to scrollable ancestors
- Scroll Animations (MEDIUM-HIGH)
-
scroll-use-scroll
-
Use useScroll hook for scroll-linked animations
-
scroll-use-spring-smooth
-
Smooth scroll animations with useSpring
-
scroll-element-tracking
-
Track specific elements entering viewport
-
scroll-offset-configuration
-
Configure scroll offsets
-
scroll-container-ref
-
Track scroll within specific containers
- Gesture Optimization (MEDIUM)
-
gesture-while-props
-
Use whileHover/whileTap instead of handlers
-
gesture-variants-flow
-
Let gesture variants flow to children
-
gesture-drag-constraints
-
Use dragConstraints ref for boundaries
-
gesture-drag-elastic
-
Configure dragElastic for natural feel
-
gesture-tap-cancel
-
Use onTapCancel for interrupted gestures
- Spring & Physics (MEDIUM)
-
spring-physics-based
-
Use physics-based springs for interruptibility
-
spring-damping-ratio
-
Configure damping to control oscillation
-
spring-mass-inertia
-
Adjust mass for heavier/lighter feel
-
spring-use-spring-hook
-
Use useSpring for reactive values
- SVG & Path Animations (LOW-MEDIUM)
-
svg-path-length
-
Use pathLength for line drawing animations
-
svg-motion-components
-
Use motion.path and motion.circle
-
svg-viewbox-animation
-
Animate viewBox for zoom effects
-
svg-morph-matching-points
-
Match point counts for morphing
- Exit Animations (LOW)
-
exit-animate-presence
-
Wrap conditional renders with AnimatePresence
-
exit-unique-keys
-
Provide unique keys for AnimatePresence children
-
exit-mode-wait
-
Use mode="wait" for sequential transitions
How to Use
Read individual reference files for detailed explanations and code examples:
-
Section definitions - Category structure and impact levels
-
Rule template - Template for adding new rules
Reference Files
File Description
references/_sections.md Category definitions and ordering
assets/templates/_template.md Template for new rules
metadata.json Version and reference information