Flow Analysis
Map every step to complete key tasks—identify unnecessary stepsEach step is a potential dropout—minimize count and frictionQuestion every required field—if not essential now, defer or removeIdentify points requiring user memory—provide recognition instead
Mental Model Alignment
Use vocabulary users would expect—not internal/technical termsMatch familiar patterns before inventing—innovation has learning costConsistent metaphors throughout—don't mix paradigms in same productAlign with platform conventions—users bring expectations from other apps
Friction Reduction
Smart defaults reduce decisions—good default better than more optionsPre-fill from available context—location, previous selections, account dataAuto-save progress—never lose user workDon't ask for information already available—or not yet needed
Progressive Disclosure
Show only what's needed for current task—hide advanced options until relevantReveal complexity gradually—basic path first, power features discoverableEmpty states guide to first action—not just "Nothing here"Teach by doing, not explaining—inline hints over tutorials
Feedback Design
Every action gets acknowledgment—visual, haptic, or audibleProgress indication for waits over 1 secondError messages: what happened + what to do nextSuccess confirmation for significant actions
Error Prevention
Design to prevent errors—constraints, confirmations, smart defaultsConfirmation dialogs only for destructive/irreversible actionsUndo available for reversible actions—reduces fear of exploringInline validation catches errors before submission
Cognitive Load
One primary action per screen—clear visual hierarchyGroup related information—chunking aids comprehensionLimit simultaneous choices—too many options cause paralysisConsistent patterns across product—learned once, applied everywhere
Edge Cases to Design
Empty state: first time, cleared, filtered with no resultsLoading state: skeleton preferred over spinner for known layoutsError state: what went wrong, how to recoverPartial state: some data available, some loading/failedOffline state: what works, what's queued, what's unavailable
Reversibility
Trash over permanent delete—recovery possiblePreview before commit—show effect of actionDraft states for complex work—don't require completion in one sessionSettings and decisions easy to change—not buried or locked
Task Completion
Define what success looks like for each flowFirst value delivered quickly—quick win before complex setupClear next step always visible—no dead endsCompletion feels complete—confirmation, celebration for big tasks
Accessibility Integration
Keyboard/switch navigation works for all flowsScreen reader announces what's needed—labels, states, updatesSufficient contrast without relying on color aloneRespects user preferences—motion, text size, dark mode
Copy and Labels
Button labels describe outcome—"Save Changes" not "Submit"Headings scannable—user finds what they need quicklyError text actionable—not just "Invalid input"Microcopy reduces uncertainty—helper text where questions arise
Consistency Checks
Same words for same concepts—create glossary if neededSame interaction patterns—swipe/tap/long-press mean same thingsVisual similarity reflects functional similarityExceptions rare and justified