SKILL — Mobile UX
Pixel's mobile design knowledge. Mobile is not a shrunk-down desktop — it's a fundamentally different context with different constraints and behaviors.
iOS Human Interface Guidelines — Key Rules
Navigation
- Use UINavigationController patterns (stack-based navigation with back buttons)
- Tab Bar at the bottom for top-level destinations (3-5 items)
- Large titles that shrink on scroll for primary views
- Swipe-from-left-edge for back navigation (never override this)
- Modals for focused, interruptive tasks (with clear dismiss)
Visual Design
- System fonts (SF Pro) or high-quality custom fonts
- Vibrancy and materials (translucent backgrounds for depth)
- Safe area compliance (notch, Dynamic Island, home indicator)
- Rounded corners matching device hardware radius
Interaction
- 44pt minimum touch targets
- Standard gestures (tap, long press, swipe, pinch)
- Haptic feedback for meaningful interactions
- Pull-to-refresh for refreshable lists
- Swipe actions on list items (delete, archive, etc.)
Layout
- Full-width on phones
- Sidebar + content on iPad (UISplitViewController pattern)
- Sheet presentations (detents: medium, large) for supplementary content
Navigation Patterns
Tab Bar (Bottom Navigation)
When: Primary navigation between top-level sections
- 3–5 items maximum
- Icon + label for each tab
- Active tab: filled icon + brand color
- Inactive tab: outline icon + muted color
- Maintains state per tab (each tab has its own navigation stack)
- This is the default navigation pattern. Use it unless you have a specific reason not to.
Stack Navigation
When: Drilling into detail from a list or category
- Back button in top-left
- Title centered (iOS) or left-aligned (Android/Material)
- Right side for contextual actions (edit, share, more)
- Swipe-from-left-edge to go back (iOS)
- Deep stacks (4+ levels) suggest the information architecture needs rethinking
Modal
When: Focused tasks that interrupt the main flow
- Appears from bottom (iOS sheet) or center (dialog)
- Clear dismiss action (X button top-left, or swipe down)
- Should be completable without navigating away
- Use sparingly — modals are interruptive
- Full-screen modals for complex tasks (forms, editors)
Bottom Sheet
When: Contextual actions or supplementary content
- Slides up from bottom
- Detents: peek (compact), half, full
- Swipe down to dismiss
- Great for filters, options, detail previews
- Should not contain complex navigation (that's a modal)
NEVER: Hamburger Menu
Do not use hamburger menus (☰). They hide navigation, reduce discoverability, and create extra taps. Research consistently shows lower engagement with hamburger menus. Use a tab bar instead.
If you have more than 5 top-level sections, reconsider your information architecture. Most apps don't actually need more than 5.
Gesture Design
Standard Gestures (Never Override)
| Gesture |
Standard Behavior |
| Tap |
Select, activate |
| Long press |
Context menu, reorder |
| Swipe left/right |
List actions (delete, archive) |
| Swipe from left edge |
Navigate back (iOS) |
| Pull down |
Refresh content |
| Pinch |
Zoom (maps, images) |
| Two-finger scroll |
Scroll within scroll (avoid this scenario) |
Gesture Design Rules
- Gestures must be discoverable — Never make gesture the ONLY way to perform an action. Always provide a visible button alternative.
- Gestures must be forgiving — Accidental swipes should be reversible (undo).
- Gestures should feel physical — The UI should follow the finger, not jump.
- Standard gestures first — Only invent custom gestures if standard ones don't fit.
- Provide feedback — Haptic, visual, or both when a gesture triggers an action.
Mobile-Specific Concerns
Performance Perception
- Skeleton screens > spinners (feels faster)
- Optimistic updates for actions (show success immediately, rollback on failure)
- Lazy load content below the fold
- Cache previously loaded data
- Progressive loading for images
Thumb-Friendly Design
┌─────────────────────┐
│ ❌ Hard to reach │
│ │
│ ⚠️ OK zone │
│ │
│ ✅ Easy zone │
│ ┌─────────────┐ │
│ │ Primary CTA │ │
│ └─────────────┘ │
│ [Tab] [Tab] [Tab] │
└─────────────────────┘
- Primary actions at the bottom
- Navigation at the bottom
- Settings, less-used actions at the top
- Bottom sheets for actions, not top dropdowns
Keyboard Handling
- Inputs should not be obscured by keyboard
- Scroll content up when keyboard appears
- Appropriate keyboard type per input (email, number, phone, URL)
- Return key action matches form flow (Next → Next → Done)
- Dismiss keyboard on tap outside
Offline Behavior
- Show cached content when offline
- Queue actions for when connectivity returns
- Clear offline indicator (subtle banner, not blocking modal)
- Never show an error screen for expected offline use
Common Mobile Mistakes
- Desktop patterns on mobile — Hover states, right-click menus, tooltips don't work on touch.
- Too much content per screen — Mobile is sequential. Show less, let users drill in.
- Small touch targets — Anything under 44px will cause tap errors and frustration.
- Hamburger menus — Hidden navigation = unused navigation. Use tab bars.
- No loading states — Mobile networks are slow. Every async operation needs a loading state.
- Fixed position everything — Fixed headers + fixed tab bars + fixed CTAs = no room for content.
- Ignoring safe areas — Content behind notches and home indicators looks broken.
- Horizontal scrolling — Almost never appropriate on mobile (except carousels with clear affordance).
- Complex forms on one screen — Break long forms into steps/pages. One concept per screen.
- No empty states — First-time users see empty screens with no guidance. Always design the empty state.
1---2name: mobile-ux3description: SKILL — Mobile UX4---5# SKILL — Mobile UX67Pixel's mobile design knowledge. Mobile is not a shrunk-down desktop — it's a fundamentally different context with different constraints and behaviors.89---1011## iOS Human Interface Guidelines — Key Rules1213### Navigation14- Use **UINavigationController** patterns (stack-based navigation with back buttons)15- **Tab Bar** at the bottom for top-level destinations (3-5 items)16- Large titles that shrink on scroll for primary views17- Swipe-from-left-edge for back navigation (never override this)18- Modals for focused, interruptive tasks (with clear dismiss)1920### Visual Design21- System fonts (SF Pro) or high-quality custom fonts22- Vibrancy and materials (translucent backgrounds for depth)23- Safe area compliance (notch, Dynamic Island, home indicator)24- Rounded corners matching device hardware radius2526### Interaction27- 44pt minimum touch targets28- Standard gestures (tap, long press, swipe, pinch)29- Haptic feedback for meaningful interactions30- Pull-to-refresh for refreshable lists31- Swipe actions on list items (delete, archive, etc.)3233### Layout34- Full-width on phones35- Sidebar + content on iPad (UISplitViewController pattern)36- Sheet presentations (detents: medium, large) for supplementary content3738---3940## Navigation Patterns4142### Tab Bar (Bottom Navigation)43**When**: Primary navigation between top-level sections44- 3–5 items maximum45- Icon + label for each tab46- Active tab: filled icon + brand color47- Inactive tab: outline icon + muted color48- Maintains state per tab (each tab has its own navigation stack)49- **This is the default navigation pattern.** Use it unless you have a specific reason not to.5051### Stack Navigation52**When**: Drilling into detail from a list or category53- Back button in top-left54- Title centered (iOS) or left-aligned (Android/Material)55- Right side for contextual actions (edit, share, more)56- Swipe-from-left-edge to go back (iOS)57- Deep stacks (4+ levels) suggest the information architecture needs rethinking5859### Modal60**When**: Focused tasks that interrupt the main flow61- Appears from bottom (iOS sheet) or center (dialog)62- Clear dismiss action (X button top-left, or swipe down)63- Should be completable without navigating away64- Use sparingly — modals are interruptive65- Full-screen modals for complex tasks (forms, editors)6667### Bottom Sheet68**When**: Contextual actions or supplementary content69- Slides up from bottom70- Detents: peek (compact), half, full71- Swipe down to dismiss72- Great for filters, options, detail previews73- Should not contain complex navigation (that's a modal)7475### NEVER: Hamburger Menu76**Do not use hamburger menus (☰).** They hide navigation, reduce discoverability, and create extra taps. Research consistently shows lower engagement with hamburger menus. Use a tab bar instead.7778If you have more than 5 top-level sections, reconsider your information architecture. Most apps don't actually need more than 5.7980---8182## Gesture Design8384### Standard Gestures (Never Override)85| Gesture | Standard Behavior |86|---------|-------------------|87| Tap | Select, activate |88| Long press | Context menu, reorder |89| Swipe left/right | List actions (delete, archive) |90| Swipe from left edge | Navigate back (iOS) |91| Pull down | Refresh content |92| Pinch | Zoom (maps, images) |93| Two-finger scroll | Scroll within scroll (avoid this scenario) |9495### Gesture Design Rules961. **Gestures must be discoverable** — Never make gesture the ONLY way to perform an action. Always provide a visible button alternative.972. **Gestures must be forgiving** — Accidental swipes should be reversible (undo).983. **Gestures should feel physical** — The UI should follow the finger, not jump.994. **Standard gestures first** — Only invent custom gestures if standard ones don't fit.1005. **Provide feedback** — Haptic, visual, or both when a gesture triggers an action.101102---103104## Mobile-Specific Concerns105106### Performance Perception107- Skeleton screens > spinners (feels faster)108- Optimistic updates for actions (show success immediately, rollback on failure)109- Lazy load content below the fold110- Cache previously loaded data111- Progressive loading for images112113### Thumb-Friendly Design114```115┌─────────────────────┐116│ ❌ Hard to reach │117│ │118│ ⚠️ OK zone │119│ │120│ ✅ Easy zone │121│ ┌─────────────┐ │122│ │ Primary CTA │ │123│ └─────────────┘ │124│ [Tab] [Tab] [Tab] │125└─────────────────────┘126```127- Primary actions at the bottom128- Navigation at the bottom129- Settings, less-used actions at the top130- Bottom sheets for actions, not top dropdowns131132### Keyboard Handling133- Inputs should not be obscured by keyboard134- Scroll content up when keyboard appears135- Appropriate keyboard type per input (email, number, phone, URL)136- Return key action matches form flow (Next → Next → Done)137- Dismiss keyboard on tap outside138139### Offline Behavior140- Show cached content when offline141- Queue actions for when connectivity returns142- Clear offline indicator (subtle banner, not blocking modal)143- Never show an error screen for expected offline use144145---146147## Common Mobile Mistakes1481491. **Desktop patterns on mobile** — Hover states, right-click menus, tooltips don't work on touch.1502. **Too much content per screen** — Mobile is sequential. Show less, let users drill in.1513. **Small touch targets** — Anything under 44px will cause tap errors and frustration.1524. **Hamburger menus** — Hidden navigation = unused navigation. Use tab bars.1535. **No loading states** — Mobile networks are slow. Every async operation needs a loading state.1546. **Fixed position everything** — Fixed headers + fixed tab bars + fixed CTAs = no room for content.1557. **Ignoring safe areas** — Content behind notches and home indicators looks broken.1568. **Horizontal scrolling** — Almost never appropriate on mobile (except carousels with clear affordance).1579. **Complex forms on one screen** — Break long forms into steps/pages. One concept per screen.15810. **No empty states** — First-time users see empty screens with no guidance. Always design the empty state.