Validate at a useful moment
Validate on blur or submit. Avoid interrupting the user before a value can be complete.
Reusable interaction and page-level decisions for common product flows, including their loading, empty, error, and permission states.
Common workflows behave consistently across products.
Teams design the complete state model before the happy path ships.
Patterns compose public primitives without creating hidden component APIs.
Every data-backed surface declares what the user sees before, during, and after work.
| State | Communicate | Primary action | Preferred primitive |
|---|---|---|---|
| Initial | Purpose and first useful action | Start or create | EmptyState |
| Loading | Structure and progress without layout shift | Usually none | Skeleton or inline pending state |
| Success | Result and next step | Continue or inspect | Notice or refreshed content |
| Empty result | Why no match exists | Clear filters or change query | EmptyState |
| Recoverable error | What failed and how to retry | Retry | Notice or inline field message |
| Diagnostic error | Summary plus inspectable details | Copy report or retry | ErrorReport |
| Offline | Connection dependency and preserved work | Retry when online | Notice with local state |
| Permission denied | Missing access and request path | Request access | EmptyState or dedicated page |
Validation stays close to the field while submission status remains clear at the form level.
Validate on blur or submit. Avoid interrupting the user before a value can be complete.
Field errors remain visible until the condition is resolved and are associated through description semantics.
A failed submission must not erase work. Focus the first actionable error when useful.
Disable or guard repeated submissions and communicate pending state in the action label.
| Risk | Pattern | Confirmation |
|---|---|---|
| Low and reversible | Immediate action plus undo | No blocking dialog |
| Material but recoverable | ConfirmDialog with consequence | Explicit action label |
| Permanent or high impact | ConfirmDialog plus typed or secondary verification | Name the object and outcome |
Stable page skeletons reduce navigation and density decisions while leaving room for product content.
| Archetype | Required regions | Responsive priority |
|---|---|---|
| Directory | Title, search/filter, result summary, list, empty/error states | Keep search and first results above the fold. |
| Detail | Breadcrumb/back, identity, status, primary actions, grouped details | Keep identity before actions and secondary metadata. |
| Editor | Title/status, workspace, controls, validation, save state | Preserve the work area and collapse secondary controls. |
| Settings | Local navigation, grouped fields, save feedback | Stack navigation before fields without losing location. |
| Dashboard | Time/scope controls, summary, trends, exceptions | Prioritize exceptions and readable comparisons. |
| Onboarding | Progress, one decision, help, safe exit | One column and one primary action. |