User flows
A user flow is the path from a user's intent to its completion. Users do not experience screens in isolation; they experience the journey between them. Designing the flow (not just the screens) is what makes a task feel easy or maddening, and where drop-off is won or lost.
Method
- Start from the user's goal, and map the real path. What is the user trying to accomplish, and what are all the steps (decisions, inputs, waits) between starting and done? Map the actual flow, including the branches (guest vs account, valid vs invalid input) and the error and recovery paths, not just the happy line.
- Count and cut the steps. Every step, screen, field, and decision is friction and a chance to drop off. Question each: is it necessary here, can it be deferred, defaulted, combined, or removed? The shortest path that still gathers what is genuinely needed wins (see mobile-input-ux's field-cutting, user-activation's time-to-value).
- Design entry and exit for each step. How does the user arrive at this step, and where can they go from it (forward, back, cancel, save for later)? No step should be a dead end or a trap (see usability-heuristics' control-and-freedom). Deep links and refreshes should land somewhere sensible (see frontend-routing).
- Handle the unhappy paths as first-class. Invalid input, a failed payment, a lost connection, an abandoned-and-returned session: these are where flows break. Preserve the user's progress, explain what happened, and offer the way forward (see empty-and-error-states, optimistic-ui). A flow that only works when everything goes right is half-designed.
- Match effort to commitment. Do not demand a full signup before the user has seen value; defer heavy asks until the user is invested (let them try, then ask to save; see user-activation, mvp-scoping). Front-loading friction kills flows before the payoff.
- Show progress in long flows. Multi-step flows tell the user where they are and how much remains (a stepper, a progress bar), so the end feels reachable. Uncertainty about length causes abandonment (see empty-and-error-states, interaction-design).
Boundaries
- Flows are the connective structure; individual screens still need good layout, interaction, and copy (see visual-hierarchy, interaction-design, ux-writing). A perfect flow of bad screens still fails.
- Fewer steps is usually better but not always: a deliberate confirmation step for an irreversible action, or a moment that builds trust before a payment, earns its place. Cut friction, keep the friction that protects.
- Real drop-off is found in the data (funnel analysis) and in watching users, not only in design review (see user-activation, usability-testing).