Back to compare picker

Sheet vs Drawer vs Modal dialog vs Alert dialog

Choose sheet when users need a temporary child task related to the current context, with enough room for a short form, picker, preview, or review flow and a clear dismissal path.

Decision dimensions

Dimension SheetDrawerModal dialogAlert dialog
UI or UX UI + UX - Adaptive temporary sheet for a context-bound child taskUI + UX - Supplemental edge panel for current-context detail or light actionsUI + UX - Focused modal task layerUI + UX - Blocking urgent-response modal
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.Render a drawer as an edge-aligned panel with a visible heading, selected-object identity, close control, stable width, and clear relationship to the page content it supplements.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 an alert dialog as a modal response surface with a condition-specific title, consequence text, role alertdialog or platform equivalent, inactive background, and buttons labelled by outcome.
UX guidance Use sheets for short child tasks that need more room than a dialog while preserving parent context after the task closes.Use drawers to preserve parent-page context while users inspect supplemental detail or perform simple adjacent actions.Use the modal interruption only for compact tasks that genuinely need temporary focus before the user returns to the page.Interrupt only when a current-workflow condition needs an explicit response before users can safely continue.
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.A right-side case details drawer opens from a table row, names Claim C-1042, shows status, owner, activity, and a close button while the table remains visible.Account settings opens in a titled dialog with one display-name field, Save, Cancel, close control, and dimmed inactive page context.A Session locked alert dialog says the editor is paused because the account opened elsewhere, offers Stay signed in and Sign out, and keeps the background editor unavailable.
Bad UI A panel titled Sheet opens with no selected object, no close affordance, and hidden actions below an inner scroll area.A panel slides over the table with the title Details, no close control, and no selected record name.A vague popup titled Popup floats over active page controls and offers only OK.A popup says Warning with only OK while the page behind it still accepts input.
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.Opening the drawer preserves the table filter and selected row, Next item updates the drawer title, Escape closes it, and focus returns to the selected row.Opening moves focus to the display-name field, Tab remains inside the layer, Escape cancels, and closing returns focus to Open dialog.Tab stays inside the dialog, Escape follows the safe cancel path, Stay signed in returns focus to the editor, and Sign out moves to the signed-out state.
Bad UX A user changes the appointment note, presses back, and loses the work without a decision point.The drawer keeps showing Claim C-1042 after the user selects Claim C-1043 in the table.Users can click background Delete or Navigate controls while the modal is still open.Users can click Delete, navigate away, or keep typing behind a blocking security message.
Best fit A user starts a short context-bound task that needs more room than a dialog but should not become a full page.Users need to inspect object detail, metadata, comments, history, or light actions while staying on the current page.A short task must interrupt normal page interaction but should return users to the same context afterward.An urgent current-workflow condition requires acknowledgement, cancellation, retry, sign-out, review, or another explicit response before continuation.
Avoid when The content is mainly destination navigation.The surface is mainly app navigation or destination switching.The content is only informational and does not require blocking the page.The message is urgent but users can keep working safely after seeing it.
Required state Closed parent state with an opener tied to the object, field, or task that launches the sheet.Closed state with a clear opener tied to a specific object or page section.Closed page state with an obvious invoking control.Normal workflow state with a visible invoking event or system condition.
Accessibility burden Give the sheet a visible heading and use it as the accessible name.Give the drawer a visible heading and expose it as the accessible name for the region or dialog-like surface.Use dialog semantics with an accessible name from the visible title.Use alertdialog semantics only for important modal messages that require a response.
Common misuse Using a sheet as a catch-all panel for navigation, filters, help, settings, and unrelated actions.Using a drawer as an unlabeled junk panel for unrelated commands, navigation, filters, and help.Using a modal as a generic container for routine information that could stay inline.Using an alert dialog as a dramatic version of a routine non-modal alert.

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 panel titled Sheet opens with no selected object, no close affordance, and hidden actions below an inner scroll area.
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
A user changes the appointment note, presses back, and loses the work without a decision point.
Best fit
A user starts a short context-bound task that needs more room than a dialog but should not become a full page.
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.

Drawer

UI or UX
UI + UX - Supplemental edge panel for current-context detail or light actions
UI guidance
Render a drawer as an edge-aligned panel with a visible heading, selected-object identity, close control, stable width, and clear relationship to the page content it supplements.
UX guidance
Use drawers to preserve parent-page context while users inspect supplemental detail or perform simple adjacent actions.
Good UI
A right-side case details drawer opens from a table row, names Claim C-1042, shows status, owner, activity, and a close button while the table remains visible.
Bad UI
A panel slides over the table with the title Details, no close control, and no selected record name.
Good UX
Opening the drawer preserves the table filter and selected row, Next item updates the drawer title, Escape closes it, and focus returns to the selected row.
Bad UX
The drawer keeps showing Claim C-1042 after the user selects Claim C-1043 in the table.
Best fit
Users need to inspect object detail, metadata, comments, history, or light actions while staying on the current page.
Avoid when
The surface is mainly app navigation or destination switching.
Required state
Closed state with a clear opener tied to a specific object or page section.
Accessibility burden
Give the drawer a visible heading and expose it as the accessible name for the region or dialog-like surface.
Common misuse
Using a drawer as an unlabeled junk panel for unrelated commands, navigation, filters, and help.

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 content is only informational and does not require blocking the page.
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.

Alert dialog

UI or UX
UI + UX - Blocking urgent-response modal
UI guidance
Render an alert dialog as a modal response surface with a condition-specific title, consequence text, role alertdialog or platform equivalent, inactive background, and buttons labelled by outcome.
UX guidance
Interrupt only when a current-workflow condition needs an explicit response before users can safely continue.
Good UI
A Session locked alert dialog says the editor is paused because the account opened elsewhere, offers Stay signed in and Sign out, and keeps the background editor unavailable.
Bad UI
A popup says Warning with only OK while the page behind it still accepts input.
Good UX
Tab stays inside the dialog, Escape follows the safe cancel path, Stay signed in returns focus to the editor, and Sign out moves to the signed-out state.
Bad UX
Users can click Delete, navigate away, or keep typing behind a blocking security message.
Best fit
An urgent current-workflow condition requires acknowledgement, cancellation, retry, sign-out, review, or another explicit response before continuation.
Avoid when
The message is urgent but users can keep working safely after seeing it.
Required state
Normal workflow state with a visible invoking event or system condition.
Accessibility burden
Use alertdialog semantics only for important modal messages that require a response.
Common misuse
Using an alert dialog as a dramatic version of a routine non-modal alert.
Decision rules
  • Choose sheet when users need a temporary child task related to the current context, with enough room for a short form, picker, preview, or review flow and a clear dismissal path.
  • Choose drawer when the surface primarily supports inspection or light action while the parent page remains the comparison anchor.
  • Choose modal dialog when the task is compact enough for a centered blocking layer and does not need sheet-specific sizing, detents, edge attachment, or swipe-style dismissal.
  • Choose alert dialog when the interruption is urgent and the user must respond before continuing, especially for security, destructive, or session decisions.
  • Use a modal sheet when changes behind the sheet would conflict with the child task; use a standard side sheet only when the main view and sheet can share space intentionally.
  • Do not use a sheet as a navigation drawer; destination lists need selected-route state, grouping, and close-after-navigation behavior.
  • Do not use a sheet for one-line contextual help; use tooltip, hover card, popover, or inline disclosure according to persistence and interaction needs.
  • If the sheet has unsaved edits, intercept drag, back, Escape, outside click, and close-button dismissal with a discard-or-continue path.
  • If the content grows into a multi-step workflow with progress, deep links, saved progress, or long reading, move it to a page rather than stretching the sheet.
  • When the sheet closes, restore focus and preserve the parent context that launched it instead of resetting filters, scroll, or selected objects.
Inspect live examples
Failure modes
  • A sheet can be swiped away while unsaved changes disappear without warning.
  • The sheet blocks the parent page even though the user needs side-by-side comparison, making a drawer or standard side sheet a better fit.
  • The sheet contains destination navigation, settings, unrelated actions, and the active task in one mixed panel.
  • A compact modal dialog is expanded into a large sheet without adding room-dependent content or adaptive behavior.
  • An urgent security response is hidden in a dismissible sheet instead of using an alert dialog.
  • The sheet opens at the wrong size for the content and hides primary actions below an inner scroll boundary.
  • Focus remains behind the sheet or returns to the top of the page after close.