My learning 0 of 20 lessons complete
Start lesson 1 →
Back to compare picker

Popover vs Menu button vs Modal dialog vs Sheet

Use a popover for small anchored contextual content or light controls, a menu button for command lists, a modal dialog for blocking compact tasks, and a sheet for roomier temporary child tasks.

Learn the decision

Match the interaction to the person's task

Use a popover for small anchored contextual content or light controls, a menu button for command lists, a modal dialog for blocking compact tasks, and a sheet for roomier temporary child tasks.

Popover

Use it when: A local control needs brief explanatory content or light editing while page context remains visible.

Make this state clear: Closed trigger state with visible label, icon name, or field relationship.

Observe the result: 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.

Study the full pattern →

Menu button

Use it when: A local object or toolbar has three to eight secondary commands.

Make this state clear: Closed trigger state with visible or accessible name.

Observe the result: A user opens Report actions, arrows to Duplicate report, activates it, and focus returns to the Report actions trigger with a status update.

Study the full pattern →

Modal dialog

Use it when: A short task must interrupt normal page interaction but should return users to the same context afterward.

Make this state clear: Closed page state with an obvious invoking control.

Observe the result: Opening moves focus to the display-name field, Tab remains inside the layer, Escape cancels, and closing returns focus to Open dialog.

Study the full pattern →

Sheet

Use it when: The surface needs adaptive size, edge attachment, drag or detent behavior, or a clear temporary child-task mode.

Make this state clear: Closed parent state with an opener tied to the object, field, or task that launches the sheet.

Observe the result: Opening the sheet focuses the first useful field, expanding the sheet preserves typed notes, Escape triggers discard review when edits are dirty, and Save returns focus to the claim row.

Study the full pattern →

Practice the judgment: Imagine this situation: A local date explanation is implemented as a modal dialog, interrupting the form even though page context should remain usable. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension PopoverMenu buttonModal dialogSheet
UI or UX UI + UX - Small anchored contextual overlayUI + UX - Button-controlled popup menu of actions or linksUI + UX - Focused modal task layerUI + UX - Adaptive temporary sheet for a context-bound child task
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.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 titled layer above a dimmed or otherwise unavailable page, with clear task content, named actions, visible close or cancel affordance, and stable scroll boundaries.Render a sheet as a titled adaptive surface with clear edge or window attachment, visible close or back controls, stable actions, and sizing that matches the task.
UX guidance Make opening, light dismissal, Escape, outside click, anchor scrolling, focus order, and focus return predictable so the surface feels contextual rather than interruptive.Make dismissal, activation, focus return, unavailable actions, and high-risk command handoff predictable so the menu behaves like a command chooser rather than a hidden form.Use the modal interruption only for compact tasks that genuinely need temporary focus before the user returns to the page.Use sheets for short child tasks that need more room than a dialog while preserving parent context after the task closes.
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.A table row has a Report actions button that opens a compact menu with Open, Rename, Duplicate, Archive, and an unavailable Export item.Account settings opens in a titled dialog with one display-name field, Save, Cancel, close control, and dimmed inactive page context.A review follow-up sheet opens from a claim row with the title Schedule follow-up for Claim C-1042, fields, close control, compact and expanded sizes, and sticky Save and Cancel actions.
Bad UI Escape closes the layer but focus disappears or jumps to the top of the page.A primary Save action is hidden behind More while lower-priority icons remain visible.A vague popup titled Popup floats over active page controls and offers only OK.A swipe-dismiss sheet contains unsaved form fields but disappears immediately when the user drags or presses Escape.
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.A user opens Report actions, arrows to Duplicate report, activates it, and focus returns to the Report actions trigger with a status update.Opening moves focus to the display-name field, Tab remains inside the layer, Escape cancels, and closing returns focus to Open dialog.Opening the sheet focuses the first useful field, expanding the sheet preserves typed notes, Escape triggers discard review when edits are dirty, and Save returns focus to the claim row.
Bad UX The user scrolls and the popover stays in the old position, so it appears to describe the wrong field.A user tabs into a menu and lands in a text input because the menu contains unrelated form controls.Users can click background Delete or Navigate controls while the modal is still open.The sheet blocks the queue even though the user's main task is comparing records, or it contains full navigation that should belong elsewhere.
Best fit A local control needs brief explanatory content or light editing while page context remains visible.A local object or toolbar has three to eight secondary commands.A short task must interrupt normal page interaction but should return users to the same context afterward.The surface needs adaptive size, edge attachment, drag or detent behavior, or a clear temporary child-task mode.
Avoid when The content is essential instruction that must remain visible for task completion.The job is choosing a form value, selecting several values, or browsing a long list.The workflow is long, multi-step, shareable, or needs browser navigation.The content is mainly destination navigation.
Required state Closed trigger state with visible label, icon name, or field relationship.Closed trigger state with visible or accessible name.Closed page state with an obvious invoking control.Closed parent state with an opener tied to the object, field, or task that launches the sheet.
Accessibility burden Use a real button or equivalent control as the trigger whenever possible.Use an actual button for the trigger when possible.Use dialog semantics with an accessible name from the visible title.Give the sheet a visible heading and use it as the accessible name.
Common misuse Using a popover as a hidden modal, drawer, sheet, command menu, or full workflow.Using a menu button for long value selection that should be a select, listbox, combobox, or multi-select.Using a modal as a generic container for routine information that could stay inline.Using a sheet as a catch-all panel for navigation, filters, help, settings, and unrelated actions.

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
Make opening, light dismissal, Escape, outside click, anchor scrolling, focus order, and focus return predictable so the surface feels contextual rather than interruptive.
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
Escape closes the layer but focus disappears or jumps to the top of the page.
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.

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
Make dismissal, activation, focus return, unavailable actions, and high-risk command handoff predictable so the menu behaves like a command chooser rather than a hidden form.
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
A primary Save action is hidden behind More while lower-priority icons remain visible.
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.

Modal dialog

UI or UX
UI + UX - Focused modal task layer
UI guidance
Render a titled layer above a dimmed or otherwise unavailable page, with clear task content, named actions, visible close or cancel affordance, and stable scroll boundaries.
UX guidance
Use the modal interruption only for compact tasks that genuinely need temporary focus before the user returns to the page.
Good UI
Account settings opens in a titled dialog with one display-name field, Save, Cancel, close control, and dimmed inactive page context.
Bad UI
A vague popup titled Popup floats over active page controls and offers only OK.
Good UX
Opening moves focus to the display-name field, Tab remains inside the layer, Escape cancels, and closing returns focus to Open dialog.
Bad UX
Users can click background Delete or Navigate controls while the modal is still open.
Best fit
A short task must interrupt normal page interaction but should return users to the same context afterward.
Avoid when
The workflow is long, multi-step, shareable, or needs browser navigation.
Required state
Closed page state with an obvious invoking control.
Accessibility burden
Use dialog semantics with an accessible name from the visible title.
Common misuse
Using a modal as a generic container for routine information that could stay inline.

Sheet

UI or UX
UI + UX - Adaptive temporary sheet for a context-bound child task
UI guidance
Render a sheet as a titled adaptive surface with clear edge or window attachment, visible close or back controls, stable actions, and sizing that matches the task.
UX guidance
Use sheets for short child tasks that need more room than a dialog while preserving parent context after the task closes.
Good UI
A review follow-up sheet opens from a claim row with the title Schedule follow-up for Claim C-1042, fields, close control, compact and expanded sizes, and sticky Save and Cancel actions.
Bad UI
A swipe-dismiss sheet contains unsaved form fields but disappears immediately when the user drags or presses Escape.
Good UX
Opening the sheet focuses the first useful field, expanding the sheet preserves typed notes, Escape triggers discard review when edits are dirty, and Save returns focus to the claim row.
Bad UX
The sheet blocks the queue even though the user's main task is comparing records, or it contains full navigation that should belong elsewhere.
Best fit
The surface needs adaptive size, edge attachment, drag or detent behavior, or a clear temporary child-task mode.
Avoid when
The content is mainly destination navigation.
Required state
Closed parent state with an opener tied to the object, field, or task that launches the sheet.
Accessibility burden
Give the sheet a visible heading and use it as the accessible name.
Common misuse
Using a sheet as a catch-all panel for navigation, filters, help, settings, and unrelated actions.
Decision rules
  • Choose popover when a trigger, field, selected object, or inline marker needs a small nearby surface that keeps the page usable and explains or edits only that local context.
  • Choose menu button when the popup is a short action or navigation command list with menu semantics, active item movement, item activation, and no rich form layout.
  • Choose modal dialog when the user must complete or cancel a compact task before interacting with the page behind it.
  • Choose sheet when the temporary child task needs more room, stronger dismissal rules, adaptive sizing, sticky actions, or protected unsaved work handling.
  • Do not use a popover for required critical information that disappears before the user can read or act on it; put essential instruction inline or in the task surface.
  • Do not put long forms, tables, destructive reviews, or multi-step workflows in a popover; move them to a dialog, sheet, drawer, or page.
  • If the content is only a label or short noninteractive hint, keep it as inline text or a tooltip-style hint rather than a richer popover surface.
  • If the surface contains commands, decide whether users expect menu keyboard behavior; if yes, use a menu button instead of a general popover.
  • If outside click or Escape would discard changes, the surface has outgrown ordinary light-dismiss popover behavior.
  • When the popover closes, restore focus to the invoker or the next logical local target and keep the anchor relationship visible.
Inspect live examples
Failure modes
  • A local date explanation is implemented as a modal dialog, interrupting the form even though page context should remain usable.
  • A popover contains command menu roles, form fields, and links at once, so keyboard users cannot predict the interaction model.
  • A long edit workflow is squeezed into a tiny anchored layer with hidden actions and no state protection.
  • A popover opens detached from its trigger after scrolling, leaving users unsure which field it belongs to.
  • Required eligibility instructions appear only in a dismissible hover layer and vanish before touch or keyboard users can use them.
  • Closing the popover drops focus at the top of the page instead of returning to the trigger.

Saved items