Back to compare picker

Drawer vs Modal dialog vs Navigation drawer vs Filter panel

Choose drawer when users need to inspect, edit lightly, or act on page-adjacent detail while preserving the main content as visible context.

Decision dimensions

Dimension DrawerModal dialogNavigation drawerFilter panel
UI or UX UI + UX - Supplemental edge panel for current-context detail or light actionsUI + UX - Focused modal task layerUI + UX - Dismissible slide-in navigation sheetUI + UX - Grouped filter control panel for narrowing a current result set
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.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 navigation sheet that enters from the start edge or bottom, is opened by an explicit control, and presents grouped destination items with selected state.Render filter categories as labelled form controls in a panel adjacent to the result set on wide layouts, with a visible result count and active-filter summary near the results.
UX guidance 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.Use a navigation drawer for destinations that need to be available but not constantly visible, especially on constrained screens or complex apps with secondary sections.Use a filter panel to help users narrow the current list or search result set while preserving orientation, search query, sort order, pagination context, and selected values.
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.Account settings opens in a titled dialog with one display-name field, Save, Cancel, close control, and dimmed inactive page context.A mobile app bar menu button opens a left modal drawer with Inbox selected, grouped labels, account switcher, and a visible scrim behind it.A desktop search page shows a left filter panel with Status, Type, and Date groups, while active chips and the result count sit above the results.
Bad UI 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 hamburger opens a full-height list with no scrim, no close control, and no visible selected destination.A filter drawer closes with no active count, leaving users unaware that filters are still hiding records.
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.Opening moves focus to the display-name field, Tab remains inside the layer, Escape cancels, and closing returns focus to Open dialog.Users open the drawer, select Sent, the drawer closes, and Sent becomes the visible destination while Inbox scroll state is preserved.A user selects Status: Open and Type: Appeal, applies the batch, lands back at the result summary, and sees 12 records with both criteria removable.
Bad UX 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.Selecting a drawer item changes the destination behind the sheet but leaves the drawer covering the new page.Applying a filter silently resets the query, sort order, current page, and view density.
Best fit 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.A constrained app needs access to more destinations than fit in the visible navigation surface.Users need to narrow the current search results, browse results, table, card grid, or list by multiple criteria.
Avoid when The surface is mainly app navigation or destination switching.The content is only informational and does not require blocking the page.Users need constant visibility of the local hierarchy while working in a section.The result set is small enough that scanning is faster than filtering.
Required state Closed state with a clear opener tied to a specific object or page section.Closed page state with an obvious invoking control.Closed state with a clear opener such as a menu button.Default state with no user-applied filters and an explicit result count.
Accessibility burden 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.Give the opener an accessible name such as Open navigation menu.Use semantic form controls with fieldsets, legends, labels, and accessible names for filter categories and values.
Common misuse 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.Hiding the app's most important destinations in a drawer on mobile.Hiding active filters inside a closed panel with no count, chips, or result-state summary.

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.

Navigation drawer

UI or UX
UI + UX - Dismissible slide-in navigation sheet
UI guidance
Render a navigation sheet that enters from the start edge or bottom, is opened by an explicit control, and presents grouped destination items with selected state.
UX guidance
Use a navigation drawer for destinations that need to be available but not constantly visible, especially on constrained screens or complex apps with secondary sections.
Good UI
A mobile app bar menu button opens a left modal drawer with Inbox selected, grouped labels, account switcher, and a visible scrim behind it.
Bad UI
A hamburger opens a full-height list with no scrim, no close control, and no visible selected destination.
Good UX
Users open the drawer, select Sent, the drawer closes, and Sent becomes the visible destination while Inbox scroll state is preserved.
Bad UX
Selecting a drawer item changes the destination behind the sheet but leaves the drawer covering the new page.
Best fit
A constrained app needs access to more destinations than fit in the visible navigation surface.
Avoid when
Users need constant visibility of the local hierarchy while working in a section.
Required state
Closed state with a clear opener such as a menu button.
Accessibility burden
Give the opener an accessible name such as Open navigation menu.
Common misuse
Hiding the app's most important destinations in a drawer on mobile.

Filter panel

UI or UX
UI + UX - Grouped filter control panel for narrowing a current result set
UI guidance
Render filter categories as labelled form controls in a panel adjacent to the result set on wide layouts, with a visible result count and active-filter summary near the results.
UX guidance
Use a filter panel to help users narrow the current list or search result set while preserving orientation, search query, sort order, pagination context, and selected values.
Good UI
A desktop search page shows a left filter panel with Status, Type, and Date groups, while active chips and the result count sit above the results.
Bad UI
A filter drawer closes with no active count, leaving users unaware that filters are still hiding records.
Good UX
A user selects Status: Open and Type: Appeal, applies the batch, lands back at the result summary, and sees 12 records with both criteria removable.
Bad UX
Applying a filter silently resets the query, sort order, current page, and view density.
Best fit
Users need to narrow the current search results, browse results, table, card grid, or list by multiple criteria.
Avoid when
The result set is small enough that scanning is faster than filtering.
Required state
Default state with no user-applied filters and an explicit result count.
Accessibility burden
Use semantic form controls with fieldsets, legends, labels, and accessible names for filter categories and values.
Common misuse
Hiding active filters inside a closed panel with no count, chips, or result-state summary.
Decision rules
  • Choose drawer when users need to inspect, edit lightly, or act on page-adjacent detail while preserving the main content as visible context.
  • Choose modal dialog when the user must complete or cancel a focused task before returning to the page behind it.
  • Choose navigation drawer when the sliding surface contains destinations, account sections, or app navigation rather than contextual page detail.
  • Choose filter panel when the surface contains grouped criteria that narrow the current result list and must synchronize active counts, result counts, and clear behavior.
  • Use a non-modal or pinned drawer when users need to compare drawer content with rows, cards, charts, or page state behind it.
  • Use a modal drawer only when the drawer is temporary and background changes would conflict with the open panel; still provide a clear close path and focus return.
  • Do not put primary app destinations in a generic drawer; use navigation drawer, side navigation, bottom navigation, or global navigation depending on scope and frequency.
  • Do not use a drawer for one sentence of contextual help; use inline help, disclosure, popover, tooltip, or hover card based on interaction and persistence needs.
  • Do not use a drawer for irreversible confirmation or mandatory acknowledgement; use confirmation dialog or alert dialog so the response requirement is explicit.
  • When the drawer closes, preserve the selected object or page state and return focus to the opener or the related row instead of dropping users at the top of the page.
Inspect live examples
Failure modes
  • A details drawer opens with no close control or Escape path, trapping users beside the page.
  • The drawer covers the table users need for comparison and offers no pinned or side-by-side state.
  • A navigation menu is labelled as a drawer but lacks selected destination state, grouping, and route-change behavior.
  • A filter drawer hides active filters and result counts, so users cannot tell why records are missing.
  • A drawer launches a long multi-step workflow that needs a page, modal task, or saved progress.
  • The drawer stays open with stale details after the selected row changes behind it.
  • Closing the drawer loses focus and the user's selected object context.