Back to compare picker

Context menu vs Action menu vs Menu button vs Popover

Choose context menu when users invoke commands from a specific object, text selection, canvas item, table row, file, or map mark using right click, long press, context-menu key, or Shift+F10.

Decision dimensions

Dimension Context menuAction menuMenu buttonPopover
UI or UX UI + UX - Location-invoked contextual command menuUI + UX - Contextual command list for a resource or selectionUI + UX - Button-controlled popup menu of actions or linksUI + UX - Small anchored contextual overlay
UI guidance Render a context menu as a compact command menu anchored to the object, selection, pointer position, or focused item that invoked it, with clear item labels, disabled reasons, separators, and destructive separation.Render a compact menu of verb-led actions scoped to one resource, row, card, selected set, or page object, with clear section headings, object-aware labels, disabled reasons, and separated dangerous commands.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 popover as a compact surface visually tied to the trigger, field, selection, or object that opened it, with a clear title or labelled content when the body is more than a short sentence.
UX guidance Use a context menu when users need fast object-specific commands from a secondary invocation path such as right click, long press, context-menu key, or Shift+F10.Use an action menu when users need several contextual commands without keeping every command visible, and the list itself must explain scope, availability, risk, and outcome.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.Use a popover when users need local context, clarification, or a small edit without losing their place in the page.
Good UI A file row opens a context menu at the selected row with Open, Rename, Duplicate, Download, Archive, and Delete separated at the end.A Customer actions menu has Manage customer, Data requests, and Account risk sections, with Edit customer, Merge customer, Request data export, and Delete customer separated at the end.A table row has a Report actions button that opens a compact menu with Open, Rename, Duplicate, Archive, and an unavailable Export item.A Due date button in a task row opens a small popover beside the field with Today, Tomorrow, Friday, a custom date field, and a visible close control.
Bad UI Right clicking a row opens a menu beside the toolbar and still shows actions for the previously selected row.A More menu contains Open, Edit, View, Delete, Settings, Filter, Owner, and a search box with no sections or object names.An unlabeled ellipsis opens a loose panel of buttons, inputs, links, toggles, and destructive commands with no active item.A large floating panel appears in the middle of the screen with no arrow, no title, no trigger relationship, and hidden controls below the fold.
Good UX Right click on Forecast.xlsx opens commands for that file, Arrow keys move through items, Escape closes the menu, and focus returns to the file row.A user opens Customer actions, chooses Duplicate customer, and receives status that names the customer and keeps focus anchored to the action context.A user opens Report actions, arrows to Duplicate report, activates it, and focus returns to the Report actions trigger with a status update.Opening the due-date popover moves focus to the first date option, choosing Tomorrow updates the field, closes the layer, and returns focus to the Due date trigger.
Bad UX Keyboard invocation opens at the top-left corner with no visible relationship to the focused object.A user chooses Delete from a generic row menu and cannot tell whether it deletes the row, account, attached files, or selected customers.A user tabs into a menu and lands in a text input because the menu contains unrelated form controls.The user scrolls and the popover stays in the old position, so it appears to describe the wrong field.
Best fit Objects or selections have secondary commands that experienced users expect near the target.A resource, row, card, selected set, or local page object has several contextual commands.A local object or toolbar has three to eight secondary commands.A local control needs brief explanatory content or light editing while page context remains visible.
Avoid when The command is primary, urgent, safety-critical, or required for task completion.Only one or two commands are needed and visible buttons would be faster.The job is choosing a form value, selecting several values, or browsing a long list.The content is essential instruction that must remain visible for task completion.
Required state Resting object or selection state before invocation.Closed trigger or contextual entry point with resource scope.Closed trigger state with visible or accessible name.Closed trigger state with visible label, icon name, or field relationship.
Accessibility burden Support keyboard invocation through the context-menu key or Shift+F10 where the platform expects it.Give the trigger or menu an accessible name that includes the resource or selected-set scope.Use an actual button for the trigger when possible.Use a real button or equivalent control as the trigger whenever possible.
Common misuse Making right click or long press the only way to discover important commands.Treating the action menu as a junk drawer for every command that does not fit elsewhere.Using a menu button for long value selection that should be a select, listbox, combobox, or multi-select.Using a popover as a hidden modal, drawer, sheet, command menu, or full workflow.

Context menu

UI or UX
UI + UX - Location-invoked contextual command menu
UI guidance
Render a context menu as a compact command menu anchored to the object, selection, pointer position, or focused item that invoked it, with clear item labels, disabled reasons, separators, and destructive separation.
UX guidance
Use a context menu when users need fast object-specific commands from a secondary invocation path such as right click, long press, context-menu key, or Shift+F10.
Good UI
A file row opens a context menu at the selected row with Open, Rename, Duplicate, Download, Archive, and Delete separated at the end.
Bad UI
Right clicking a row opens a menu beside the toolbar and still shows actions for the previously selected row.
Good UX
Right click on Forecast.xlsx opens commands for that file, Arrow keys move through items, Escape closes the menu, and focus returns to the file row.
Bad UX
Keyboard invocation opens at the top-left corner with no visible relationship to the focused object.
Best fit
Objects or selections have secondary commands that experienced users expect near the target.
Avoid when
The command is primary, urgent, safety-critical, or required for task completion.
Required state
Resting object or selection state before invocation.
Accessibility burden
Support keyboard invocation through the context-menu key or Shift+F10 where the platform expects it.
Common misuse
Making right click or long press the only way to discover important commands.

Action menu

UI or UX
UI + UX - Contextual command list for a resource or selection
UI guidance
Render a compact menu of verb-led actions scoped to one resource, row, card, selected set, or page object, with clear section headings, object-aware labels, disabled reasons, and separated dangerous commands.
UX guidance
Use an action menu when users need several contextual commands without keeping every command visible, and the list itself must explain scope, availability, risk, and outcome.
Good UI
A Customer actions menu has Manage customer, Data requests, and Account risk sections, with Edit customer, Merge customer, Request data export, and Delete customer separated at the end.
Bad UI
A More menu contains Open, Edit, View, Delete, Settings, Filter, Owner, and a search box with no sections or object names.
Good UX
A user opens Customer actions, chooses Duplicate customer, and receives status that names the customer and keeps focus anchored to the action context.
Bad UX
A user chooses Delete from a generic row menu and cannot tell whether it deletes the row, account, attached files, or selected customers.
Best fit
A resource, row, card, selected set, or local page object has several contextual commands.
Avoid when
Only one or two commands are needed and visible buttons would be faster.
Required state
Closed trigger or contextual entry point with resource scope.
Accessibility burden
Give the trigger or menu an accessible name that includes the resource or selected-set scope.
Common misuse
Treating the action menu as a junk drawer for every command that does not fit elsewhere.

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.

Popover

UI or UX
UI + UX - Small anchored contextual overlay
UI guidance
Render a popover as a compact surface visually tied to the trigger, field, selection, or object that opened it, with a clear title or labelled content when the body is more than a short sentence.
UX guidance
Use a popover when users need local context, clarification, or a small edit without losing their place in the page.
Good UI
A Due date button in a task row opens a small popover beside the field with Today, Tomorrow, Friday, a custom date field, and a visible close control.
Bad UI
A large floating panel appears in the middle of the screen with no arrow, no title, no trigger relationship, and hidden controls below the fold.
Good UX
Opening the due-date popover moves focus to the first date option, choosing Tomorrow updates the field, closes the layer, and returns focus to the Due date trigger.
Bad UX
The user scrolls and the popover stays in the old position, so it appears to describe the wrong field.
Best fit
A local control needs brief explanatory content or light editing while page context remains visible.
Avoid when
The content is essential instruction that must remain visible for task completion.
Required state
Closed trigger state with visible label, icon name, or field relationship.
Accessibility burden
Use a real button or equivalent control as the trigger whenever possible.
Common misuse
Using a popover as a hidden modal, drawer, sheet, command menu, or full workflow.
Decision rules
  • Choose context menu when users invoke commands from a specific object, text selection, canvas item, table row, file, or map mark using right click, long press, context-menu key, or Shift+F10.
  • Choose action menu when the design problem is the command list itself: object scope, grouping, disabled reasons, destructive separation, bulk labels, and result handling.
  • Choose menu button when the commands should be discoverable from a visible named trigger and must not depend on secondary click, long press, or keyboard context-menu shortcuts.
  • Choose popover when the anchored surface contains contextual information, light editing, or small controls rather than menuitem-style command activation.
  • A context menu must open at the invoked object or keyboard-focused item, not at a stale pointer location or unrelated toolbar button.
  • Provide an alternate visible route for important commands because many users will not discover right-click or long-press behavior.
  • Use the same eligible command set across pointer and keyboard invocation unless platform conventions require a documented difference.
  • Do not use a context menu for primary, urgent, onboarding, destructive-only, or form-completion actions that need visible affordance or stronger review.
  • When a context menu opens from keyboard, place focus in the menu and return focus to the invoking object on Escape or after safe activation.
  • If menu content needs inputs, previews, filters, date pickers, or long descriptions, it has moved beyond a context menu into popover, drawer, sheet, dialog, or page territory.
Inspect live examples
Failure modes
  • Right click on one row opens commands for a previously selected row.
  • Shift+F10 opens the context menu at the viewport corner instead of the focused object.
  • The only way to archive a file is a hidden context menu, so touch and keyboard users miss the command.
  • The context menu contains a search field, date picker, preview card, and destructive action in one mixed layer.
  • Pointer users and keyboard users see different command availability for the same selected object.
  • Escape closes the menu but drops focus at the top of the page instead of returning to the file or row.