Duration & asymmetric timing

Slower entrances, faster exits, and the exceptions to both

Duration by component type

ComponentEnter durationExit durationNotes
Button press / micro-feedback50-100ms50-80msMust feel instant
Tooltip100-150ms75-100msFast in, faster out
Popover / dropdown150-200ms100-150msEmerges from trigger
Toast / notification200-250ms150-200msSlides from edge
Modal / dialog200-350ms150-200msScale + opacity
Drawer / sheet250-350ms200-250msSlides across significant distance
Page transition150-250ms100-150msKeep it tight

Nothing exceeds 400ms.

Enter slow, exit fast

1.5:1 to 2:1. Enter at 250ms, exit at 150ms. A drawer enters at 300ms, exits at 180ms.

The 300ms budget

Total animation time for any single interaction: 300ms max.

5 items staggered at 50ms = 250ms total. An 800ms stagger looks like a broken loader.

Duration and distance

More distance needs more time, but not linearly. A drawer sliding 300px: ~300ms. A tooltip appearing 8px below its trigger: 100ms. A panel sliding 600px: ~350ms, not 600ms.

Double the distance, add 30-50% more duration.

When to skip duration entirely

Toggle states, checkbox fills, colour transitions on hover, focus-visible outlines.