Back to Blog
CSSAnimationPerformanceOptimization

CSS Animation Performance

Optimize CSS animations for smooth 60fps. From compositor layers to will-change to debugging jank.

B
Bootspring Team
Engineering
April 2, 2021
6 min read

Smooth animations require understanding browser rendering. Here's how to achieve 60fps.

The Rendering Pipeline

JavaScript → Style → Layout → Paint → Composite Layout triggers: width, height, margin, padding, top, left Paint triggers: color, background, box-shadow, border-radius Composite only: transform, opacity

Prefer Transform and Opacity

Loading code block...

Transform vs Position

Loading code block...

Will-Change Property

Loading code block...

Hardware Acceleration

Loading code block...

Contain Property

Loading code block...

Reduce Paint Areas

Loading code block...

Animation Timing

Loading code block...

Reduce Complexity

Loading code block...

Stagger Animations

Loading code block...
Loading code block...

Reduce Motion Preference

Loading code block...

Debugging Performance

Loading code block...

Animation Checklist

Loading code block...

Best Practices

Do: ✓ Animate transform and opacity ✓ Use will-change sparingly ✓ Keep animations under 300ms ✓ Respect reduced motion preference Avoid: ✗ Animating layout properties ✗ Large box-shadows during animation ✗ will-change on many elements ✗ Long animation durations Debug: ✓ Use Chrome Performance tab ✓ Enable paint flashing ✓ Check for layer promotion ✓ Monitor frame rate

Conclusion

Performant animations use transform and opacity, which skip layout and paint. Use will-change sparingly, contain elements to limit recalculation, and always test with DevTools. Respect reduced motion preferences for accessibility.

Share this article

Help spread the word about Bootspring

Related articles