Mobile Design Patterns: A Practical Guide

Mobile is no longer a smaller version of desktop — it's a different interaction model with its own conventions, constraints, and patterns. This guide covers the patterns that consistently produce usable mobile UI.

Core Constraints

ConstraintSpecWhy
Tap target44pt / 48dp / 48 CSS px minThumb accuracy
Body font16px min (prevents iOS zoom on focus)Readability + UX
Thumb zoneBottom half of screen for primary actionsOne-handed reach
Safe areaenv(safe-area-inset-*)Notches, indicators
Viewportwidth=device-width, initial-scale=1Correct rendering
Color contrastWCAG AA 4.5:1 textOutdoor visibility

The Reliable Patterns

  • Bottom navigation for primary destinations (3-5 items). Always visible, thumb-reachable.
  • Sticky action bar for primary CTAs at the bottom of long content.
  • Full-screen modals instead of small floating dialogs. Easier to read, easier to dismiss.
  • Card lists over dense tables. Tap targets are bigger and content layout flexes.
  • Pull-to-refresh for feed-style content. Conventional and discoverable.
  • Bottom sheets for secondary actions, filters, or pickers — friendlier than full-screen modals for partial interactions.

The Antipatterns

  • Tiny tap targets crammed together.
  • Inputs smaller than 16px that trigger iOS zoom on focus.
  • Hamburger menus hiding all primary navigation.
  • Tooltips and hover-only interactions (no hover on touch).
  • Multi-column layouts forced onto narrow viewports.
  • Buttons in the top-right corner where thumbs can't reach.

Try It Yourself

Mock up mobile screens with screenshot frames using DesignKit.

Screenshot Mockup →

Frequently Asked Questions

44×44 pt (iOS) or 48×48 dp (Material). For web, 48×48 CSS pixels minimum.
env(safe-area-inset-*) gives space around notches and home indicators.
Bottom nav for 3-5 destinations. Hamburger for secondary. Bottom nav drives more engagement.
No — accessibility failure. Users with low vision need to zoom.
Stick to platform: swipe-back, swipe-dismiss, long-press, pull-to-refresh. Always offer button alternatives.