Screen and Flow Patterns
Mental model
Before anything is styled, two questions decide the shape of a product: which
screens exist, and what connects them. Getting this wrong is expensive in a
way visual decisions never are -- you can restyle a screen in an afternoon; you
cannot re-architect a flow after it ships without breaking people's habits.
- Name the screen type before designing it. Nearly every screen is an
instance of a known type with known states and a known failure mode. "A page
where users manage their team" is a List/Feed with an invite flow attached, and
saying so imports thirty solved decisions.
- A flow is a sequence with an exit at every step. If a step has no way back
and no way out, it is a trap, and traps are where support tickets come from.
- Design the states, not the screen. The happy path is the easy fifth of the
work. The other four fifths are empty, loading, error and partial.
- Density is a decision, not a consequence. Pick a tier and hold it.
Constants
Every screen ships all five. A screen specified only in its ideal state is not
specified.
Every screen passes through states. Model them explicitly to ensure all states are designed.
6.1 The Five Core States
[Initial] -> [Loading] -> [Loaded / Populated]
| |
v v
[Error] [Empty]
| |
v v
[Retry -> Loading] [Action -> Loading]
- Initial: Screen is mounted but no data request has fired yet. Often invisible (immediate transition to Loading).
- Loading: Data is being fetched. Show skeleton screens (preferred), spinner, or shimmer. Never show a blank screen.
- Loaded / Populated: Data received and displayed. The "happy" state. Most design time is spent here.
- Empty: Data request succeeded but returned zero items. Show empty state illustration + CTA.
- Error: Data request failed. Show error message + retry button. Distinguish between network error, server error, and permission error.
6.2 Extended States
- Refreshing: Pulling to refresh or background sync. Show inline indicator without replacing content.
- Partial Load: Some data loaded, more available. Infinite scroll loading indicator at bottom.
- Stale: Data is old. Show "last updated" timestamp. Background refresh in progress.
- Offline: No network connection. Show cached data with offline banner. Queue actions for sync.
- Permission Required: User has not granted necessary permission (location, camera, contacts). Show explanation + request button.
6.3 State Design Checklist
For every screen, verify you have designed:
Section 7: Information Density Levels
7.1 Three Density Tiers
| Tier |
Description |
Target Elements per Viewport |
Example Screen Types |
| Low |
Breathing room. One idea per fold. Marketing-oriented. |
3-5 |
Landing, onboarding, login, confirmation, empty state, error pages |
| Medium |
Balanced. Content-rich but not overwhelming. Scrolling expected. |
6-12 |
Profile, detail, settings, blog/article, checkout, contact |
| High |
Data-dense. Power users. Scanning and filtering essential. |
12-25+ |
Dashboard, analytics, file manager, data table, calendar, comparison |
7.2 Density Adjustments by Platform
- Mobile: Reduce density by 30-40% vs desktop. Stack columns. Collapse secondary info behind taps.
- Tablet: Intermediate density. Use split views to maintain context without overwhelming.
- Desktop: Highest density acceptable. Multi-column layouts, sidebars, persistent panels.
7.3 Density Controls for Users
- Comfortable / Cozy / Compact: Gmail-style density toggle. Adjusts row height and spacing.
- Card / List / Table: View mode toggle. Cards are lowest density, tables are highest.
- Show/Hide Columns: Let users configure which columns appear in data tables.
- Collapse Panels: Resizable and collapsible sidebars for user-controlled density.
Section 8: Platform-Specific Screen Conventions
Index
Screen types (32) -- full specification for each in
references/screen-type-catalog.md:
Landing · Home/Dashboard · List/Feed · Detail/Show · Profile · Settings ·
Search/Results · Checkout · Onboarding · Login · Sign-up · Forgot Password ·
Empty State · Error 404 · Error 500 · Maintenance · Loading/Splash ·
Notifications Center · Analytics/Reporting · File Manager · Editor/Canvas ·
Wizard/Multi-Step · Chat/Messaging · Calendar · Map View · Comparison ·
About/Team · Contact · Blog/Article · Product Gallery · Booking/Reservation ·
Confirmation/Success
Flow patterns (22) -- full specification for each in
references/user-flow-catalog.md:
Authentication · Onboarding · Purchase/Checkout · Search-Filter-Select · CRUD ·
Invite/Share · Communication · Notification-to-Action · Upgrade/Upsell ·
Cancellation/Churn · Help/Support · Data Import/Export · Review/Rating ·
Onboarding Checklist · Collaborative Editing · Subscription/Renewal · Referral ·
Multi-Device Handoff · Account Deletion · Error Recovery · Settings Management ·
Content Creation
UI elements (120+) across navigation, input, feedback, overlay and layout --
references/ui-element-deep-dive.md.
When documenting or communicating user flows, use these standardized conventions.
3.1 Node Types
- Start / End: Rounded rectangle (pill shape). Green for start, red for end.
- Screen / Page: Rectangle. Contains screen name. Color-coded by section.
- Decision: Diamond. Contains yes/no or conditional question.
- Action: Rectangle with rounded corners. User or system action.
- Sub-flow: Rectangle with double border. Links to separate flow diagram.
- Wait / Delay: Hourglass or clock icon. Async step (email verification, processing).
3.2 Path Types
- Happy Path: Solid green arrows. The primary expected journey.
- Error Path: Dashed red arrows. What happens when things fail.
- Alternative Path: Dotted blue arrows. Valid but less common routes.
- Escape Hatch: Gray arrows. Exit points (cancel, back, close).
3.3 Entry Points
- Direct URL: Globe icon. User arrives via typed URL or link.
- Deep Link: Chain icon. From push notification, email, or external app.
- Navigation: Menu icon. From in-app navigation.
- System Trigger: Gear icon. Automated redirect (session expire, maintenance).
3.4 Edge Case Annotations
- Conditional: Annotate arrows with conditions (e.g., "if cart > $50").
- Frequency: Label paths with expected traffic percentage (e.g., "80% of users").
- Data Dependencies: Note when a step requires data from a previous step.
- Timeout: Note time limits (e.g., "OTP expires in 10 min").
Section 4: UI Element Pattern Catalog (120+ Elements)
Reference architecture
| File |
Covers |
Lines |
references/screen-type-catalog.md |
32 screen types, fully specified |
1731 |
references/ui-element-deep-dive.md |
120+ elements, 26 in depth |
1259 |
references/user-flow-catalog.md |
22 flows step by step |
1116 |
references/inspiration-reference-guide.md |
where to look for precedent |
228 |
references/transitions-and-platform-conventions.md |
push, modal, tab, deep link; iOS/Android/web |
84 |
What every reference file contains
- Purpose -- the one job this screen or flow does
- The component hierarchy, named
- The state matrix: empty, loading, error, partial, ideal
- Accessibility requirements specific to the type
- Best-in-class examples, named
- The failure mode that type is known for
Routing
For deciding which screens a product needs and the full specification of
each: read references/screen-type-catalog.md.
For the sequence connecting them -- entry points, steps, decision points,
exits and error branches: read references/user-flow-catalog.md.
For a specific element -- navigation, input, feedback, overlay or layout:
read references/ui-element-deep-dive.md.
For how screens move between each other and what each platform expects:
read references/transitions-and-platform-conventions.md.
For precedent -- where to look and what to look for: read
references/inspiration-reference-guide.md.
Cross-References
page-composition-engine -- once the screen type is chosen, this composes it
navigation-pattern-encyclopedia -- the navigation connecting the screens
performance-states-patterns -- the empty, loading and error states in depth
ui-pattern-intelligence -- whether the pattern chosen is still current
mobile-ux-design -- the mobile form of each screen type
1---2name: screen-flow-patterns3description: Taxonomy of 25+ screen types, 15+ user flows, and 25+ UI element deep-dives with layout patterns, component hierarchies, state matrices, and best-in-class references. Use when deciding which screens a product needs and what connects them, before any visual design starts.4---5# Screen and Flow Patterns67## Mental model89Before anything is styled, two questions decide the shape of a product: **which10screens exist**, and **what connects them**. Getting this wrong is expensive in a11way visual decisions never are -- you can restyle a screen in an afternoon; you12cannot re-architect a flow after it ships without breaking people's habits.1314- **Name the screen type before designing it.** Nearly every screen is an15 instance of a known type with known states and a known failure mode. "A page16 where users manage their team" is a List/Feed with an invite flow attached, and17 saying so imports thirty solved decisions.18- **A flow is a sequence with an exit at every step.** If a step has no way back19 and no way out, it is a trap, and traps are where support tickets come from.20- **Design the states, not the screen.** The happy path is the easy fifth of the21 work. The other four fifths are empty, loading, error and partial.22- **Density is a decision, not a consequence.** Pick a tier and hold it.2324## Constants2526Every screen ships all five. A screen specified only in its ideal state is not27specified.282930Every screen passes through states. Model them explicitly to ensure all states are designed.3132### 6.1 The Five Core States3334```35[Initial] -> [Loading] -> [Loaded / Populated]36 | |37 v v38 [Error] [Empty]39 | |40 v v41 [Retry -> Loading] [Action -> Loading]42```43441. **Initial**: Screen is mounted but no data request has fired yet. Often invisible (immediate transition to Loading).452. **Loading**: Data is being fetched. Show skeleton screens (preferred), spinner, or shimmer. Never show a blank screen.463. **Loaded / Populated**: Data received and displayed. The "happy" state. Most design time is spent here.474. **Empty**: Data request succeeded but returned zero items. Show empty state illustration + CTA.485. **Error**: Data request failed. Show error message + retry button. Distinguish between network error, server error, and permission error.4950### 6.2 Extended States5152- **Refreshing**: Pulling to refresh or background sync. Show inline indicator without replacing content.53- **Partial Load**: Some data loaded, more available. Infinite scroll loading indicator at bottom.54- **Stale**: Data is old. Show "last updated" timestamp. Background refresh in progress.55- **Offline**: No network connection. Show cached data with offline banner. Queue actions for sync.56- **Permission Required**: User has not granted necessary permission (location, camera, contacts). Show explanation + request button.5758### 6.3 State Design Checklist5960For every screen, verify you have designed:61- [ ] Loading state (skeleton or spinner)62- [ ] Populated state (with real data, not lorem ipsum)63- [ ] Empty state (zero items, with helpful CTA)64- [ ] Error state (with clear message and retry)65- [ ] Partial/paginated state (loading more indicator)66- [ ] Offline state (if applicable)67- [ ] Permission request state (if applicable)6869---7071## Section 7: Information Density Levels727374### 7.1 Three Density Tiers7576| Tier | Description | Target Elements per Viewport | Example Screen Types |77|------|-------------|------|------|78| **Low** | Breathing room. One idea per fold. Marketing-oriented. | 3-5 | Landing, onboarding, login, confirmation, empty state, error pages |79| **Medium** | Balanced. Content-rich but not overwhelming. Scrolling expected. | 6-12 | Profile, detail, settings, blog/article, checkout, contact |80| **High** | Data-dense. Power users. Scanning and filtering essential. | 12-25+ | Dashboard, analytics, file manager, data table, calendar, comparison |8182### 7.2 Density Adjustments by Platform8384- **Mobile**: Reduce density by 30-40% vs desktop. Stack columns. Collapse secondary info behind taps.85- **Tablet**: Intermediate density. Use split views to maintain context without overwhelming.86- **Desktop**: Highest density acceptable. Multi-column layouts, sidebars, persistent panels.8788### 7.3 Density Controls for Users8990- **Comfortable / Cozy / Compact**: Gmail-style density toggle. Adjusts row height and spacing.91- **Card / List / Table**: View mode toggle. Cards are lowest density, tables are highest.92- **Show/Hide Columns**: Let users configure which columns appear in data tables.93- **Collapse Panels**: Resizable and collapsible sidebars for user-controlled density.9495---9697## Section 8: Platform-Specific Screen Conventions9899## Index100101**Screen types (32)** -- full specification for each in102`references/screen-type-catalog.md`:103104Landing · Home/Dashboard · List/Feed · Detail/Show · Profile · Settings ·105Search/Results · Checkout · Onboarding · Login · Sign-up · Forgot Password ·106Empty State · Error 404 · Error 500 · Maintenance · Loading/Splash ·107Notifications Center · Analytics/Reporting · File Manager · Editor/Canvas ·108Wizard/Multi-Step · Chat/Messaging · Calendar · Map View · Comparison ·109About/Team · Contact · Blog/Article · Product Gallery · Booking/Reservation ·110Confirmation/Success111112**Flow patterns (22)** -- full specification for each in113`references/user-flow-catalog.md`:114115Authentication · Onboarding · Purchase/Checkout · Search-Filter-Select · CRUD ·116Invite/Share · Communication · Notification-to-Action · Upgrade/Upsell ·117Cancellation/Churn · Help/Support · Data Import/Export · Review/Rating ·118Onboarding Checklist · Collaborative Editing · Subscription/Renewal · Referral ·119Multi-Device Handoff · Account Deletion · Error Recovery · Settings Management ·120Content Creation121122**UI elements (120+)** across navigation, input, feedback, overlay and layout --123`references/ui-element-deep-dive.md`.124125126When documenting or communicating user flows, use these standardized conventions.127128### 3.1 Node Types129- **Start / End**: Rounded rectangle (pill shape). Green for start, red for end.130- **Screen / Page**: Rectangle. Contains screen name. Color-coded by section.131- **Decision**: Diamond. Contains yes/no or conditional question.132- **Action**: Rectangle with rounded corners. User or system action.133- **Sub-flow**: Rectangle with double border. Links to separate flow diagram.134- **Wait / Delay**: Hourglass or clock icon. Async step (email verification, processing).135136### 3.2 Path Types137- **Happy Path**: Solid green arrows. The primary expected journey.138- **Error Path**: Dashed red arrows. What happens when things fail.139- **Alternative Path**: Dotted blue arrows. Valid but less common routes.140- **Escape Hatch**: Gray arrows. Exit points (cancel, back, close).141142### 3.3 Entry Points143- **Direct URL**: Globe icon. User arrives via typed URL or link.144- **Deep Link**: Chain icon. From push notification, email, or external app.145- **Navigation**: Menu icon. From in-app navigation.146- **System Trigger**: Gear icon. Automated redirect (session expire, maintenance).147148### 3.4 Edge Case Annotations149- **Conditional**: Annotate arrows with conditions (e.g., "if cart > $50").150- **Frequency**: Label paths with expected traffic percentage (e.g., "80% of users").151- **Data Dependencies**: Note when a step requires data from a previous step.152- **Timeout**: Note time limits (e.g., "OTP expires in 10 min").153154---155156## Section 4: UI Element Pattern Catalog (120+ Elements)157158## Reference architecture159160| File | Covers | Lines |161|---|---|---|162| `references/screen-type-catalog.md` | 32 screen types, fully specified | 1731 |163| `references/ui-element-deep-dive.md` | 120+ elements, 26 in depth | 1259 |164| `references/user-flow-catalog.md` | 22 flows step by step | 1116 |165| `references/inspiration-reference-guide.md` | where to look for precedent | 228 |166| `references/transitions-and-platform-conventions.md` | push, modal, tab, deep link; iOS/Android/web | 84 |167168## What every reference file contains1691701. Purpose -- the one job this screen or flow does1712. The component hierarchy, named1723. The state matrix: empty, loading, error, partial, ideal1734. Accessibility requirements specific to the type1745. Best-in-class examples, named1756. The failure mode that type is known for176177## Routing178179For **deciding which screens a product needs** and the full specification of180each: read `references/screen-type-catalog.md`.181182For **the sequence connecting them** -- entry points, steps, decision points,183exits and error branches: read `references/user-flow-catalog.md`.184185For **a specific element** -- navigation, input, feedback, overlay or layout:186read `references/ui-element-deep-dive.md`.187188For **how screens move between each other** and what each platform expects:189read `references/transitions-and-platform-conventions.md`.190191For **precedent** -- where to look and what to look for: read192`references/inspiration-reference-guide.md`.193194## Cross-References195196- `page-composition-engine` -- once the screen type is chosen, this composes it197- `navigation-pattern-encyclopedia` -- the navigation connecting the screens198- `performance-states-patterns` -- the empty, loading and error states in depth199- `ui-pattern-intelligence` -- whether the pattern chosen is still current200- `mobile-ux-design` -- the mobile form of each screen type