docs: add ux guidelines
This commit is contained in:
+645
@@ -0,0 +1,645 @@
|
|||||||
|
# Comprehensive UX Practices for Web Applications
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
This document consolidates many of the most important practical UX principles for modern web applications.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 1. Core UX Principles
|
||||||
|
|
||||||
|
## 1.1 Visibility of System Status
|
||||||
|
|
||||||
|
Users should always understand:
|
||||||
|
|
||||||
|
* What the system is doing
|
||||||
|
* Whether an action succeeded
|
||||||
|
* Whether work is still in progress
|
||||||
|
* Whether an error occurred
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Show loading indicators immediately
|
||||||
|
* Show success confirmations after important actions
|
||||||
|
* Show inline validation messages
|
||||||
|
* Display progress for long-running tasks
|
||||||
|
* Use skeleton loading states instead of blank screens
|
||||||
|
* Prevent silent failures
|
||||||
|
* Avoid ambiguous UI states
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Buttons with no feedback after clicking
|
||||||
|
* Infinite spinners without explanation
|
||||||
|
* Hidden background operations
|
||||||
|
* Saving without visible confirmation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1.2 Predictability and Consistency
|
||||||
|
|
||||||
|
Users build mental models quickly.
|
||||||
|
|
||||||
|
Breaking established expectations increases cognitive load and causes mistakes.
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Use consistent layouts
|
||||||
|
* Keep interaction patterns stable
|
||||||
|
* Reuse common UI conventions
|
||||||
|
* Keep naming and terminology consistent
|
||||||
|
* Use standard keyboard shortcuts
|
||||||
|
* Make similar components behave similarly
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Different button styles for identical actions
|
||||||
|
* Inconsistent navigation behavior
|
||||||
|
* Custom controls that ignore platform conventions
|
||||||
|
* Unexpected modal behavior
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1.3 Recognition Over Recall
|
||||||
|
|
||||||
|
Interfaces should minimize memory requirements.
|
||||||
|
|
||||||
|
Users should recognize options instead of remembering information.
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Show recent searches
|
||||||
|
* Use autocomplete
|
||||||
|
* Display contextual hints
|
||||||
|
* Preserve previously entered values
|
||||||
|
* Use visible labels
|
||||||
|
* Keep important actions visible
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Placeholder-only labels
|
||||||
|
* Hidden functionality
|
||||||
|
* Requiring users to remember previous state
|
||||||
|
* Removing useful context during workflows
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1.4 Error Prevention
|
||||||
|
|
||||||
|
Preventing mistakes is better than handling mistakes.
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Disable impossible actions
|
||||||
|
* Validate input early
|
||||||
|
* Warn before destructive operations
|
||||||
|
* Use constrained input formats
|
||||||
|
* Use safe defaults
|
||||||
|
* Prefer undo over confirmation dialogs
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Destructive actions near common actions
|
||||||
|
* Easy accidental deletion
|
||||||
|
* Poor validation timing
|
||||||
|
* Irreversible operations without recovery
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2. Input and Form UX
|
||||||
|
|
||||||
|
Forms are one of the most important and failure-prone areas in web applications.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2.1 Input Focus Behavior
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Autofocus the primary field when appropriate
|
||||||
|
* Preserve focus during rerenders
|
||||||
|
* Preserve cursor position
|
||||||
|
* Support keyboard-first workflows
|
||||||
|
* Use logical tab ordering
|
||||||
|
|
||||||
|
### Auto-Selecting Input Text
|
||||||
|
|
||||||
|
Auto-selecting text on focus is context-dependent.
|
||||||
|
|
||||||
|
### Good Use Cases
|
||||||
|
|
||||||
|
* Quantity fields
|
||||||
|
* Rename dialogs
|
||||||
|
* Editable defaults
|
||||||
|
* Quick replacement workflows
|
||||||
|
* Temporary values users often replace entirely
|
||||||
|
|
||||||
|
### Bad Use Cases
|
||||||
|
|
||||||
|
* Long textareas
|
||||||
|
* Complex text editing
|
||||||
|
* Fields users commonly partially edit
|
||||||
|
* Rich text editing
|
||||||
|
|
||||||
|
### Principle
|
||||||
|
|
||||||
|
Only auto-select when full replacement is more likely than partial editing.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2.2 Labels and Placeholders
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Always use visible labels
|
||||||
|
* Use placeholders only as supplementary examples
|
||||||
|
* Keep labels visible after typing
|
||||||
|
* Associate labels correctly for accessibility
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Placeholder-only forms
|
||||||
|
* Ambiguous labels
|
||||||
|
* Labels that disappear during editing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2.3 Validation
|
||||||
|
|
||||||
|
### Recommended Validation Timing
|
||||||
|
|
||||||
|
| Validation Type | Timing |
|
||||||
|
| ------------------- | --------- |
|
||||||
|
| Format validation | Immediate |
|
||||||
|
| Semantic validation | On blur |
|
||||||
|
| Server validation | On submit |
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Show errors near the relevant field
|
||||||
|
* Explain how to fix issues
|
||||||
|
* Preserve entered values after errors
|
||||||
|
* Validate incrementally
|
||||||
|
* Use clear language
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Generic “Invalid input” messages
|
||||||
|
* Clearing form data after errors
|
||||||
|
* Delayed validation surprises
|
||||||
|
* Validation that interrupts typing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2.4 Input Types
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
Use appropriate HTML input types:
|
||||||
|
|
||||||
|
* `email`
|
||||||
|
* `tel`
|
||||||
|
* `number`
|
||||||
|
* `date`
|
||||||
|
* `password`
|
||||||
|
* `search`
|
||||||
|
|
||||||
|
### Benefits
|
||||||
|
|
||||||
|
* Better mobile keyboards
|
||||||
|
* Native validation
|
||||||
|
* Improved accessibility
|
||||||
|
* Better autofill support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2.5 Form Submission
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Enter submits forms when expected
|
||||||
|
* Escape cancels dialogs
|
||||||
|
* Show loading states during submission
|
||||||
|
* Prevent duplicate submissions
|
||||||
|
* Preserve draft state
|
||||||
|
* Allow keyboard submission
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Disabled submit buttons without explanation
|
||||||
|
* Hidden validation failures
|
||||||
|
* Silent submission failures
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2.6 Dropdowns and Selection UX
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Use radio buttons for small option sets
|
||||||
|
* Use searchable selects for large datasets
|
||||||
|
* Prefer autocomplete for many options
|
||||||
|
* Show selected state clearly
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Massive unsearchable dropdowns
|
||||||
|
* Nested dropdown hierarchies
|
||||||
|
* Multi-select controls without search
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 3. Navigation UX
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3.1 Orientation
|
||||||
|
|
||||||
|
Users should always know:
|
||||||
|
|
||||||
|
* Where they are
|
||||||
|
* How they got there
|
||||||
|
* What they can do next
|
||||||
|
* How to go back
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Highlight active navigation
|
||||||
|
* Use breadcrumbs when helpful
|
||||||
|
* Use meaningful page titles
|
||||||
|
* Preserve navigation consistency
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3.2 Navigation Structure
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Keep hierarchy shallow
|
||||||
|
* Group related actions
|
||||||
|
* Use descriptive names
|
||||||
|
* Keep primary actions stable
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Deep nesting
|
||||||
|
* Ambiguous navigation labels
|
||||||
|
* Constantly moving actions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3.3 URL Design
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Use readable URLs
|
||||||
|
* Make URLs shareable
|
||||||
|
* Preserve app state in URLs when useful
|
||||||
|
* Support browser history correctly
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Opaque generated URLs
|
||||||
|
* Broken back button behavior
|
||||||
|
* Losing state during navigation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 4. Interaction Design
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4.1 Click Targets
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Large clickable areas
|
||||||
|
* Adequate spacing between actions
|
||||||
|
* Clear hover/focus states
|
||||||
|
* Touch-friendly sizing
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Tiny clickable regions
|
||||||
|
* Overlapping interactive elements
|
||||||
|
* Hidden hit areas
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4.2 Feedback
|
||||||
|
|
||||||
|
Every interaction should produce feedback.
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Hover states
|
||||||
|
* Active states
|
||||||
|
* Loading indicators
|
||||||
|
* Success states
|
||||||
|
* Error states
|
||||||
|
* Optimistic updates when appropriate
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Dead-feeling interfaces
|
||||||
|
* Invisible processing
|
||||||
|
* Delayed reactions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4.3 Destructive Actions
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Require confirmation for dangerous actions
|
||||||
|
* Prefer undo systems
|
||||||
|
* Visually distinguish destructive buttons
|
||||||
|
* Separate destructive actions spatially
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Immediate irreversible deletion
|
||||||
|
* Dangerous actions near common actions
|
||||||
|
* Ambiguous destructive wording
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4.4 Modal UX
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Trap keyboard focus
|
||||||
|
* Support Escape to close
|
||||||
|
* Restore focus after closing
|
||||||
|
* Prevent background interaction
|
||||||
|
* Keep modal purpose focused
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Nested modals
|
||||||
|
* Full workflows inside modals
|
||||||
|
* Losing unsaved work accidentally
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 5. Performance UX
|
||||||
|
|
||||||
|
Performance is a UX feature.
|
||||||
|
|
||||||
|
Users interpret slowness as unreliability.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5.1 Perceived Performance
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Show immediate visual response
|
||||||
|
* Use optimistic UI updates
|
||||||
|
* Preload likely next content
|
||||||
|
* Stream content progressively
|
||||||
|
* Use skeleton loaders
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Blank screens during loading
|
||||||
|
* Long blocking operations
|
||||||
|
* Frozen interfaces
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5.2 Layout Stability
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Prevent layout shift
|
||||||
|
* Reserve image dimensions
|
||||||
|
* Avoid moving buttons during loading
|
||||||
|
* Keep skeletons aligned with final layout
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Jumping content
|
||||||
|
* Shifting controls
|
||||||
|
* Reflow-heavy rendering
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5.3 Responsiveness
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Keep UI interactive during async operations
|
||||||
|
* Avoid blocking the main thread
|
||||||
|
* Debounce expensive operations
|
||||||
|
* Virtualize large lists
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* UI freezes
|
||||||
|
* Excessive rerenders
|
||||||
|
* Laggy typing experiences
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 6. Accessibility
|
||||||
|
|
||||||
|
Accessibility improves usability for everyone.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6.1 Keyboard Accessibility
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Full keyboard navigation
|
||||||
|
* Visible focus indicators
|
||||||
|
* Logical tab order
|
||||||
|
* Keyboard shortcuts for power users
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Mouse-only workflows
|
||||||
|
* Hidden focus state
|
||||||
|
* Keyboard traps
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6.2 Semantic HTML
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Use proper semantic elements
|
||||||
|
* Use buttons for actions
|
||||||
|
* Use links for navigation
|
||||||
|
* Use headings correctly
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Clickable divs without accessibility support
|
||||||
|
* Fake buttons
|
||||||
|
* Missing semantic structure
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6.3 Visual Accessibility
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Sufficient color contrast
|
||||||
|
* Support reduced motion
|
||||||
|
* Avoid color-only communication
|
||||||
|
* Use scalable typography
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Tiny text
|
||||||
|
* Low contrast interfaces
|
||||||
|
* Flashing animations
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6.4 Screen Reader Support
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Proper labels
|
||||||
|
* Meaningful alt text
|
||||||
|
* ARIA only when necessary
|
||||||
|
* Correct live regions for updates
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Unlabeled controls
|
||||||
|
* Excessive ARIA misuse
|
||||||
|
* Non-announced state changes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 7. Enterprise Application UX
|
||||||
|
|
||||||
|
Enterprise UX differs significantly from marketing-oriented consumer interfaces.
|
||||||
|
|
||||||
|
Power users often prioritize efficiency over visual minimalism.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7.1 Dense Information Design
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Efficient data density
|
||||||
|
* Resizable tables
|
||||||
|
* Sticky headers
|
||||||
|
* Multi-column layouts
|
||||||
|
* High information throughput
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Excessive whitespace
|
||||||
|
* Oversimplified dashboards
|
||||||
|
* Hidden operational controls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7.2 Table UX
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Sorting
|
||||||
|
* Filtering
|
||||||
|
* Column resizing
|
||||||
|
* Pagination or virtualization
|
||||||
|
* Keyboard navigation
|
||||||
|
* Export functionality
|
||||||
|
* Persistent user preferences
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Non-sortable enterprise tables
|
||||||
|
* Horizontal scrolling nightmares
|
||||||
|
* Missing filtering
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7.3 Power User Workflows
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Keyboard shortcuts
|
||||||
|
* Bulk actions
|
||||||
|
* Batch editing
|
||||||
|
* Command palettes
|
||||||
|
* State persistence
|
||||||
|
* Fast navigation
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Forced wizard workflows
|
||||||
|
* Excessive confirmations
|
||||||
|
* Repetitive manual work
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 8. Mobile UX
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8.1 Touch Design
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Large touch targets
|
||||||
|
* Thumb-friendly layouts
|
||||||
|
* Avoid hover dependencies
|
||||||
|
* Mobile-friendly spacing
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Tiny controls
|
||||||
|
* Hover-only interactions
|
||||||
|
* Precision-dependent gestures
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8.2 Mobile Forms
|
||||||
|
|
||||||
|
### Good Practices
|
||||||
|
|
||||||
|
* Mobile keyboard optimization
|
||||||
|
* Minimal typing
|
||||||
|
* Autofill support
|
||||||
|
* Step-by-step flows when necessary
|
||||||
|
|
||||||
|
### Bad Practices
|
||||||
|
|
||||||
|
* Long complex forms
|
||||||
|
* Tiny input fields
|
||||||
|
* Excessive required typing
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 9. Cognitive Psychology and UX
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9.1 Hick’s Law
|
||||||
|
|
||||||
|
More choices increase decision time.
|
||||||
|
|
||||||
|
### Applications
|
||||||
|
|
||||||
|
* Reduce unnecessary options
|
||||||
|
* Group related actions
|
||||||
|
* Prioritize primary actions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9.2 Fitts’s Law
|
||||||
|
|
||||||
|
Closer and larger targets are easier to use.
|
||||||
|
|
||||||
|
### Applications
|
||||||
|
|
||||||
|
* Large primary buttons
|
||||||
|
* Edge/corner placement for important actions
|
||||||
Reference in New Issue
Block a user