Back to compare picker

Menu button vs Command palette vs Select vs Confirmation dialog

Prefer a menu button when one named trigger needs to reveal a compact set of local actions or command-like links tied to the current object, row, toolbar, or view.

Decision dimensions

Dimension Menu buttonCommand paletteSelectConfirmation dialog
UI or UX UI + UX - Button-controlled popup menu of actions or linksUI + UX - Modal command surfaceUI + UX - Single-choice dropdown controlUI + UX - Consequential alert decision
UI guidance Render a named button trigger, visible opened state, controlled popup, menu items, active item styling, disabled item state, separator or section grouping, and a safe way to distinguish destructive commands.Render a compact dialog-like command surface with a search input, current scope, typed command mode, active result, command metadata, and empty state.Render a persistent label, hint text, native closed value, finite option list, selected option, and validation state.Render an alert-style modal decision with a specific title, consequence description, safe cancellation, and a destructive action label that names the object or scope.
UX guidance Use a menu button when users need to reveal a short contextual set of commands or links from a single trigger without leaving the current object or toolbar context.Accelerate expert navigation and repeated actions across a large product while preserving ordinary navigation for novice and low-frequency users.Help users choose one value from a moderate known list without showing every option permanently.Interrupt users only when the action has a meaningful consequence that cannot be safely recovered afterward.
Good UI A table row has a Report actions button that opens a compact menu with Open, Rename, Duplicate, Archive, and an unavailable Export item.Centered command surface with input, shortcut hint, scope chip, grouped commands, command type labels, and a visible active row.Persistent label, hint text, visible selected value, readable options, and clear required validation state.Delete Research archive? explains that 14 notes and shared links will be permanently removed, offers Keep archive, and labels the danger action Delete archive.
Bad UI An unlabeled ellipsis opens a loose panel of buttons, inputs, links, toggles, and destructive commands with no active item.Huge branded modal that buries the input below decorative content.Placeholder as the only label.A popup says Are you sure? with OK and Cancel but does not name the project, notes, or irreversible outcome.
Good UX A user opens Report actions, arrows to Duplicate report, activates it, and focus returns to the Report actions trigger with a status update.Keyboard shortcut or visible trigger opens the palette, focus lands in the command input, arrows move the active row, and Enter activates the highlighted safe command.Users can open, scan, choose one value, and review the selected value after close.Cancel, Escape, and Keep archive leave the archive unchanged and return focus to Delete archive.
Bad UX A user tabs into a menu and lands in a text input because the menu contains unrelated form controls.Palette is the only way to reach important navigation.Hiding two obvious critical choices in a dropdown.Every archive, filter, and dismiss action opens the same confirmation until users click through automatically.
Best fit A local object or toolbar has three to eight secondary commands.Users need to traverse a broad product surface quickly.The user chooses one option from a moderate known list.The action is destructive, irreversible, costly, security-sensitive, privacy-affecting, or externally visible.
Avoid when The job is choosing a form value, selecting several values, or browsing a long list.The app has only a few obvious actions.The option set is short and comparison matters.The action is routine and easily reversible.
Required state Closed trigger state with visible or accessible name.Closed state with discoverable trigger.Closed state with empty option or current selected value.Pre-action state with an explicit consequential trigger.
Accessibility burden Use an actual button for the trigger when possible.Use dialog semantics with a clear name and modal behavior when the rest of the page is inert.Prefer native semantics or implement equivalent name, role, state, and keyboard behavior.Use alertdialog semantics or platform equivalent when the decision is urgent and requires a response.
Common misuse Using a menu button for long value selection that should be a select, listbox, combobox, or multi-select.Hiding basic navigation behind a keyboard-only palette.Custom select with no keyboard support or hidden selected state.Asking users to confirm every routine action until they stop reading.

Menu button

UI or UX
UI + UX - Button-controlled popup menu of actions or links
UI guidance
Render a named button trigger, visible opened state, controlled popup, menu items, active item styling, disabled item state, separator or section grouping, and a safe way to distinguish destructive commands.
UX guidance
Use a menu button when users need to reveal a short contextual set of commands or links from a single trigger without leaving the current object or toolbar context.
Good UI
A table row has a Report actions button that opens a compact menu with Open, Rename, Duplicate, Archive, and an unavailable Export item.
Bad UI
An unlabeled ellipsis opens a loose panel of buttons, inputs, links, toggles, and destructive commands with no active item.
Good UX
A user opens Report actions, arrows to Duplicate report, activates it, and focus returns to the Report actions trigger with a status update.
Bad UX
A user tabs into a menu and lands in a text input because the menu contains unrelated form controls.
Best fit
A local object or toolbar has three to eight secondary commands.
Avoid when
The job is choosing a form value, selecting several values, or browsing a long list.
Required state
Closed trigger state with visible or accessible name.
Accessibility burden
Use an actual button for the trigger when possible.
Common misuse
Using a menu button for long value selection that should be a select, listbox, combobox, or multi-select.

Command palette

UI or UX
UI + UX - Modal command surface
UI guidance
Render a compact dialog-like command surface with a search input, current scope, typed command mode, active result, command metadata, and empty state.
UX guidance
Accelerate expert navigation and repeated actions across a large product while preserving ordinary navigation for novice and low-frequency users.
Good UI
Centered command surface with input, shortcut hint, scope chip, grouped commands, command type labels, and a visible active row.
Bad UI
Huge branded modal that buries the input below decorative content.
Good UX
Keyboard shortcut or visible trigger opens the palette, focus lands in the command input, arrows move the active row, and Enter activates the highlighted safe command.
Bad UX
Palette is the only way to reach important navigation.
Best fit
Users need to traverse a broad product surface quickly.
Avoid when
The app has only a few obvious actions.
Required state
Closed state with discoverable trigger.
Accessibility burden
Use dialog semantics with a clear name and modal behavior when the rest of the page is inert.
Common misuse
Hiding basic navigation behind a keyboard-only palette.

Select

UI or UX
UI + UX - Single-choice dropdown control
UI guidance
Render a persistent label, hint text, native closed value, finite option list, selected option, and validation state.
UX guidance
Help users choose one value from a moderate known list without showing every option permanently.
Good UI
Persistent label, hint text, visible selected value, readable options, and clear required validation state.
Bad UI
Placeholder as the only label.
Good UX
Users can open, scan, choose one value, and review the selected value after close.
Bad UX
Hiding two obvious critical choices in a dropdown.
Best fit
The user chooses one option from a moderate known list.
Avoid when
The option set is short and comparison matters.
Required state
Closed state with empty option or current selected value.
Accessibility burden
Prefer native semantics or implement equivalent name, role, state, and keyboard behavior.
Common misuse
Custom select with no keyboard support or hidden selected state.

Confirmation dialog

UI or UX
UI + UX - Consequential alert decision
UI guidance
Render an alert-style modal decision with a specific title, consequence description, safe cancellation, and a destructive action label that names the object or scope.
UX guidance
Interrupt users only when the action has a meaningful consequence that cannot be safely recovered afterward.
Good UI
Delete Research archive? explains that 14 notes and shared links will be permanently removed, offers Keep archive, and labels the danger action Delete archive.
Bad UI
A popup says Are you sure? with OK and Cancel but does not name the project, notes, or irreversible outcome.
Good UX
Cancel, Escape, and Keep archive leave the archive unchanged and return focus to Delete archive.
Bad UX
Every archive, filter, and dismiss action opens the same confirmation until users click through automatically.
Best fit
The action is destructive, irreversible, costly, security-sensitive, privacy-affecting, or externally visible.
Avoid when
The action is routine and easily reversible.
Required state
Pre-action state with an explicit consequential trigger.
Accessibility burden
Use alertdialog semantics or platform equivalent when the decision is urgent and requires a response.
Common misuse
Asking users to confirm every routine action until they stop reading.
Decision rules
  • Prefer a menu button when one named trigger needs to reveal a compact set of local actions or command-like links tied to the current object, row, toolbar, or view.
  • Prefer a command palette when the command set is broad, searchable, shortcut-driven, cross-product, or mixed with distant navigation and object switching.
  • Prefer a select when the user is choosing a value for a labelled field and the result should be submitted or stored as data rather than executed as a command.
  • Prefer a confirmation dialog after a destructive or externally visible menu item is chosen and the user must review object, consequence, and recovery before the action runs.
  • Use visible buttons instead of a menu button when there are only one or two frequent safe actions and hiding them would make the workflow slower.
  • Do not use a menu button as a drawer, rich popover, editable form, table, or long browse surface; route those jobs to panels, dialogs, pages, listboxes, or search patterns.
  • A menu button trigger needs a clear name, aria-haspopup, synchronized expanded state, and reliable focus return; a select needs value state and form labeling; a confirmation dialog needs modal focus and consequence copy.
  • Menu items should be verbs or destinations with enough object context; select options should be values; command palette rows should explain scope and command type.
  • Keep destructive menu items separated or visually marked, but do not rely on color alone; confirmation or undo handles the consequence after the menu item is selected.
  • If the design depends on filtering, ranking, recents, shortcuts, or natural language matching, it has moved beyond a menu button into command palette territory.
Inspect live examples
Failure modes
  • A More button contains a long searchable product command list, so users cannot predict scope or find commands efficiently.
  • A menu button is used to choose a form value, but activation immediately commits without value review, validation, or field semantics.
  • A destructive Archive item runs directly from an overflow menu and users never see the affected object, count, or recovery path.
  • A command palette is used for a small row action set, forcing users into a modal search flow for local commands.
  • A select is rebuilt as an ARIA menu, so users hear command semantics when the actual task is choosing a value.
  • The trigger is an unlabeled icon with stale aria-expanded state and focus never returns after Escape.