| name | performance-optimization |
| description | Use when animation runs slow, janky, or causes frame drops |
Performance Optimization
Diagnose and fix slow or janky animations using Disney's 12 principles.
Problem Indicators
- Frame rate drops below 60fps
- Stuttering or choppy motion
- UI feels sluggish
- Battery drain on mobile
- Layout thrashing
Diagnosis by Principle
Straight Ahead vs Pose-to-Pose
Issue: Calculating every frame in real-time
Fix: Use pose-to-pose (keyframe) animation. Let the browser interpolate between states using CSS transitions or will-change.
Timing
Issue: Too many simultaneous animations
Fix: Stagger animations. Offset start times by 50-100ms to reduce concurrent calculations.
Secondary Action
Issue: Too many secondary effects
Fix: Remove non-essential secondary animations on low-power devices. Use prefers-reduced-motion query.
Solid Drawing
Issue: Animating expensive properties (width, height, top, left)
Fix: Only animate transform and opacity. These are GPU-accelerated and skip layout/paint.
Staging
Issue: Animating off-screen elements
Fix: Only animate what's visible. Use Intersection Observer to pause off-screen animations.
Quick Fixes
- Replace JS animations with CSS - Browser-optimized
- Use
transform instead of position properties - GPU layer
- Add
will-change sparingly - Hints to browser
- Reduce simultaneous animations - Stagger or sequence
- Lower animation complexity on mobile - Detect device capability
Troubleshooting Checklist
Code Pattern
.element {
will-change: transform;
transition: transform 200ms ease-out;
}
.element:hover {
transform: translateY(-4px);
}
.element:hover {
top: -4px;
}