Make recurring actions predictable through consistent labels, placement, and outcomes.
Common actions help people create, change, share, or remove content. Use a consistent label and placement when an action has the same meaning across screens. Choose its emphasis by importance in the current task, not by how often its implementation is reused.
Use a visible action for a frequent or important operation, such as “Add member” or “Save changes.” Put less frequent related commands in a menu when keeping all of them visible would obscure the task. Keep the primary action discoverable without requiring a context menu.
Use a link for a destination. A setting that stays on or off needs a value control rather than a command whose label never reveals the current value.
| Need | Composition |
|---|---|
| Perform an operation | Button, with an application callback |
| Group related visible actions | ControlGroup containing Buttons |
| Offer secondary commands | Menu with stable item IDs and callbacks |
| Navigate to another location | Link |
| Confirm a consequential decision | An action followed by the Dialogs pattern |
Button's role="destructive" describes intent; it does not delete anything. ControlGroup can supply Button size, tint, and disabled state. Keep grouping separate from authorization and command execution.
Figure in preparation
Common actions: component composition
A comparison of primary, secondary, and pending project commands.
For “Archive project,” preserve the project identity while the request runs. Remove it from the active list only according to the application's persistence strategy. If an undo is available, keep enough information to restore the project and describe any time limit. Liquidify does not maintain an undo history.
Use Button loading while its operation is pending. The callback does not manage that state or catch rejected promises. If a request fails, restore an available action and show what remains unchanged. If the outcome is uncertain, check the current server state before asking people to repeat a potentially duplicated operation.
Distinguish “Cancel” before execution from “Undo” after completion. Cancellation of a presentation does not itself abort a request. Explain an unavailable action using the Disabled states pattern.
Use verbs that name the result, such as “Download report,” rather than “Go.” Distinguish “Remove from collection” from “Delete file” when only one destroys the underlying item. Use a specific undo label when it helps identify what will be restored.
Keep DOM order consistent with the visual order of actions. Give icon-only controls accessible names and preserve visible focus. A ControlGroup provides grouping and shared configuration; it does not supply a toolbar arrow-key model. Use normal button keyboard behavior unless the application implements and verifies a different composite pattern.
After removing a focused item, move focus to a sensible remaining item or heading. An outcome message should not unexpectedly take focus from someone continuing their task.
Read Button guidance for roles, variants, and loading semantics. Use the component catalog for exact props, including Menu's item structure.