Not all CSS properties animate equally. Understanding the rendering pipeline helps you create smooth 60fps animations.
The Three Layers
Layout Properties (Most Expensive)
Changing these triggers layout recalculation for the element AND its descendants:
Paint Properties (Medium)
Changing these triggers paint but not layout:
Composite Properties (Cheapest)
These go straight to the GPU compositor — no layout or paint:
Practical Examples
will-change: The Performance Hint
requestAnimationFrame
Measuring Performance
- Chrome DevTools → Performance → check "Paint flashing"
- Layers panel shows compositor layers and their memory cost
- Rendering tab → FPS meter for real-time monitoring
- Target: 16.67ms per frame (60fps), 6.94ms for 144fps displays