Animating layout properties like top, left or width directly forces the browser to recompute layout every frame — slow. FLIP leaves the instant layout jump as-is, then uses a transform to shift the element back by exactly (position before − position after), and animates that transform down to zero — since only transform is touched, the GPU handles it and it stays smooth.
Used for list reordering, a card expanding from a grid into a modal, and drag-and-drop reordering — anywhere layout changes instantly and you want it to read as movement. The name was coined by Paul Lewis at Google.
The squares below reorder every 2.4s — under the hood, the DOM jumps instantly and each element's before/after position is measured and corrected with a transform.
When to use
Reach for it when an element's position or size jumps instantly due to a layout change. For a simple move that a plain transition already covers, you don't need FLIP.