designmotionhq

navigation

Tabs System

Tabs aren't a widget — they're a system. Stop letting them jump.

Key insights

  • The active indicator should slide, never teleport. Drive it with a spring and match its timing to the content fade — slow in, fast out.
  • When tabs overflow one screen, never wrap to a second line. Scroll horizontally, add edge fades to hint at what's off-screen, and put chevron buttons on desktop.
  • Make it keyboard-operable: arrows move between tabs, Home jumps to first, End to last, and Tab exits to the next focusable group.
  • The focus ring and the active state must never share a color — otherwise keyboard users can't tell where they are versus what's selected.
  • Content should never hard-cut on switch. Fade out, pause ~80ms, fade in, and match panel heights so nothing shifts.
  • Mobile isn't a shrunk desktop: use a segmented control under 5 tabs, a bottom sheet over 5, never a scaled-down bar.

Do / Don't

  • Do: Slide the active indicator with a spring, timed to match the content fade
  • Do: Scroll an overflowing tab row horizontally with edge fades and desktop chevrons
  • Do: Give the focus ring and active state distinct colors
  • Don't: Wrap an overflowing tab row onto a second line
  • Don't: Hard-cut content on switch — fade out, pause, fade in instead
  • Don't: Reuse the desktop tab bar shrunk down on mobile

Get the next pattern first

New breakdowns land in your inbox before anywhere else.

One new pattern breakdown per week. No spam, unsubscribe anytime.

Related patterns