Spawn hundreds of animated elements and watch frame rate collapse when you animate layout-triggering properties instead of compositor-only transform / opacity.
Increase the element count, switch to Layout, and compare the FPS meter. Compositor animations can stay near 60fps; layout forces reflow + paint every frame.
prefers-reduced-motion is on — animations are paused until you press Start.
Promotes layers early so the first frame is smoother — but each promoted layer costs GPU memory. Remove it after the animation ends in production.
Your mileage will vary. FPS depends on your CPU, GPU, browser, and how many other tabs are open. Use this demo to see the relative gap between compositor and layout animation — not as a benchmark score.
The render pipeline runs style → layout → paint → composite. Animating deeper stages costs more per frame.
transform (translate, scale, rotate)opacityfilter (often composited)translate / scale / rotate (individual)GPU can move pre-painted layers — no reflow, no repaint.
color, background-colorbox-shadow, outlineborder-radiusbackground-positionSkips layout but repaints pixels each frame.
width, heighttop, left, marginpadding, border-widthflex-basis, grid-template-*Reflow cascades to siblings — cost scales with DOM size.
Rule of thumb: animate transform and opacity for motion. Use layout properties only when geometry must actually change — and prefer display transitions with @starting-style over animating height when possible.