Support recurring tasks with consistent actions, visible state, and recoverable outcomes.
Everyday use depends on predictable actions and continuity. Help people understand the current state, perform their work, and return after an interruption without reconstructing the task from memory.
Use the same name and placement for equivalent actions across related screens. Give the current task a clear heading and keep supporting actions distinguishable from the main action. Use Common actions for action grouping and Global header for navigation context.
Let people enter through a direct link and return to a relevant destination after a temporary interaction. The application owns routes, selection, and any saved view state. A layout component alone does not preserve work between visits.
| State | What people need |
|---|---|
| Ready | Available actions and a clear description of the current data |
| Pending | What is happening and whether another activation would duplicate work |
| Completed | A confirmed result near the affected content |
| Failed | What was preserved and the available correction or retry |
| Unavailable | The reason and a useful alternative, when one exists |
Use Loading, Notifications, and Disabled states for detailed compositions. Avoid interrupting routine work with a modal that only reports success.
Decide whether an edit is a draft, an immediate update, or a submitted change. Make that distinction visible in labels and feedback. If a save fails, retain the draft where possible and do not display a saved state merely because a control accepted input.
Button's loading prop suppresses activation while the application marks it busy. The application still owns request deduplication, persistence, retries, and confirmed outcomes. Use Forms when several fields form one submission.
Test an interrupted request, a changed permission, an empty result, and a return to an unfinished task. Check keyboard focus after removed content or a closed dialog. Use Get help for task-specific recovery and End use when someone leaves the workflow or account.