updated on:

28 Sep

,

2026

Bottom Sheet UI: Best Practices, Examples, and When to Use It

16

min to read

Table of contents

TL;DR

Bottom sheets are ideal for quick actions that shouldn't interrupt the current task. This guide explains when to use them instead of modals or full-screen pages, showcases real examples from apps like Apple Maps and Spotify, and covers the design patterns, accessibility guidelines, and implementation details that make them feel native.

You've used a bottom sheet today, probably more than once. You pulled one up in Apple Maps, opened a sharing menu, or adjusted filters while shopping without ever leaving the page. The pattern is everywhere, even if most people don't know its name.

PrimePro's bottom sheet
Bottom sheet for PrimePro

Knowing what a bottom sheet is is easy. Knowing when to use one instead of a modal, side drawer, or full-screen page is where good UX decisions happen. Get that choice wrong, and simple tasks suddenly feel slower, more confusing, or easier to dismiss by accident.

At Eleken, this is one of the most common UX decisions we help SaaS teams make during product audits. In this guide, you'll learn when bottom sheets are the right choice, the different types you'll encounter, how they should behave on iOS and Android, and the design mistakes that make them frustrating instead of useful. 

What a bottom sheet is

A bottom sheet is a panel that slides up from the bottom of the screen without taking users away from what they're doing. Instead of opening a new page or blocking the entire interface, it presents additional information or actions while keeping the current screen visible.

That's what makes it different from most other UI patterns: it preserves context. Users can complete a task, view more details, or decide without losing their place.

You'll see the pattern referred to by different names. Apple calls it a sheet in its Human Interface Guidelines, while Material Design uses bottom sheet UI UX. Some teams also say bottom drawer or bottom modal. Although the terminology varies, they're generally describing the same interaction pattern.

Here's how it compares to other UI patterns:

  • Bottom sheet keeps users in context while surfacing additional content or actions.
Mobbin's bottom sheet
Mobbin
  • Modal dialog blocks the rest of the interface until users respond.
Mobbin's bottom sheet
Mobbin
  • Side drawer slides in from the edge, typically for navigation.
Mobbin's side drawer slides example
Source
  • Full-screen page replaces the current screen entirely.
Mobbin's full-screen page example
Source
  • Popup interrupts users with information or actions they weren't actively requesting.
Mobbin's popup example
Source

The important distinction is the behavior. Two teams can both say "bottom sheet" and mean completely different interactions. That's why static specs are rarely enough. An interactive prototype removes ambiguity by showing exactly how the sheet opens, expands, dismisses, and behaves alongside the rest of the interface.

Modal vs. non-modal bottom sheets

Once you've decided a bottom sheet is the right pattern, there's one more choice to make: should users still be able to interact with the screen behind it?

That determines whether you need a modal or non-modal bottom sheet.

Modal vs. non-modal bottom sheets
Non-modal and modal bottom sheet

Modal bottom sheets

A modal bottom sheet UI temporarily takes focus. It appears over the interface, dims the background with a scrim, and prevents users from interacting with anything behind it until they complete or dismiss the sheet.

Use it for tasks that require immediate attention, such as:

  • sharing content,
  • selecting from a list of actions,
  • filling out a short form,
  • confirming an important action.

Think of it as a mobile-friendly alternative to a dialog.

A modal bottom sheet UI example
Source

Non-modal bottom sheets

A non-modal (or standard) bottom sheet stays on screen while leaving the rest of the interface interactive. Users can continue working with the underlying content without closing the sheet.

Maps are the classic example: you can read information about a location while still panning and zooming the map.

They're best for supporting content that complements the main task, such as:

  • map details,
  • music player controls,
  • live filters,
  • contextual information panels.

Material 3 also introduces an expanding bottom sheet, which starts collapsed and grows as users need more space. Rather than treating it as a separate pattern, it's helpful to think of it as a variation that combines the persistence of a non-modal sheet with the focus of a modal one.

bottom

A simple rule works almost every time:

  • Users should keep interacting with the current screen → use a non-modal bottom sheet.
  • Users should focus on the sheet before continuing → use a modal bottom sheet.

If you want to learn more about how to design smarter, watch the video below:

Bottom sheet UI examples worth stealing

Here are bottom sheets in real products, and the lesson each one teaches. 

Apple Maps and Google Maps: the info sheet that keeps the map alive

Both map apps are built around a non-modal bottom sheet, and they are the reference example for good reason. You search, tap a result, and a sheet rises with details. Crucially, the map stays interactive the whole time.

The Apple Maps bottom sheet UI leans hard on snap points. It peeks with a search bar and a few nearby suggestions. Drag it up, and you get more. Drag it down, and it tucks away so the map takes over. 

Apple Maps bottom sheet
Mobbin

Google Maps does the same dance with slightly different content. The genius is that the sheet never fully hijacks the screen. You are always one small drag from the map you came for.

Google Maps bottom sheet
Mobbin

Notice something else about these apps. The sheet is also the search home. Before you have tapped anything, the low peek state holds the search bar and a few suggestions. That is a subtle, smart decision. 

Instead of a separate search screen, the sheet is the search screen, the results screen, and the details screen, all the same surface, just at different heights. 

The takeaway: when the sheet's content supports the main screen instead of replacing it, go non-modal and lean on snap points. Let people choose how much they want to see, and let one sheet quietly do several jobs as it moves between states.

Spotify: the music player that lives in a sheet

Spotify's now-playing screen behaves like an expanding bottom sheet. There is a slim bar at the bottom showing the current track. Tap it or drag it up, and it grows into the full player with artwork, controls, and the queue below.

Mobbin

What is smart here is the peek. That little bar is a bottom sheet at its smallest snap point. It stays out of your way while you browse, but it is always one tap from expanding. The queue and lyrics live even further down, revealed by scrolling inside the expanded sheet.

This pattern shows up across media apps for a reason. Podcast players, audiobook apps, and video apps all use some version of the persistent mini-player that expands into a sheet. Users have learned it. When your media controls sit in a low-peek sheet, people know to tap it, and they know it will grow. You are borrowing a habit they already have.

The takeaway: a sheet does not have to be a pop-up you summon. It can be persistent, sitting quietly at a low peek height until someone wants more.

Instagram and social sharing: the share sheet

Tap Share on Instagram, X, LinkedIn, or almost any social app, and a modal bottom sheet appears with sharing options. Instead of navigating to a new screen, users can send a post to a friend, copy the link, save it, or share it elsewhere while keeping the original content visible in the background.

This works because sharing is a short, self-contained task. The dimmed background directs attention to the available actions without making users feel like they've left the post they're interacting with.

Tap Share on Instagram
Mobbin

Share sheets also demonstrate an important UX principle: prioritize the most likely actions. Instagram places high-frequency actions like Stories, Post, Copy Text, and Save front and center, while less common options remain available but don't compete for attention. Users complete the common task in one tap, while power users can still access everything else.

The takeaway: Bottom sheets are ideal for quick actions that support the current task. They keep users in context, reduce navigation, and make the most important actions immediately accessible.

Mobile filters: the filter sheet

Filtering is one of the best use cases for a modal bottom sheet mobile UI. In shopping, banking, and travel apps, tapping Filters opens a temporary workspace where users can adjust multiple options without leaving the results they're browsing.

The pattern works because filtering is a short, focused task. Users make a few selections, apply them, and immediately return to the updated results. A UI bottom sheet provides enough room for controls like checkboxes, sliders, and date pickers while keeping the interaction lightweight.

Mobile filters example
Mobbin

A well-designed mobile filter bottom sheet UI also makes smart use of space. Related filters are grouped into expandable sections, long lists scroll inside the sheet, and the primary action stays pinned to the bottom so it's always within reach.

One detail worth copying is live feedback. Instead of a generic Apply button, many apps update it dynamically, for example, "See 57 results." As users adjust filters, the result count changes instantly, giving immediate confidence that their selections are working before they close the sheet.

Mobile filter bottom sheet
Mobbin

The takeaway: Bottom sheets are ideal for dense but temporary tasks like filtering. Keep the primary action fixed, organize controls into clear groups, and provide immediate feedback so users always understand the impact of their choices.

The iOS share sheet and system action menus

Here is the pattern you have copied without realizing it. The iOS share sheet, the one that appears from Safari, Photos, and nearly every app, is a mobile bottom sheet UI. So are most of the action menus that slide up when you long-press or tap a "more" button.

These have shaped user expectations so thoroughly that people now assume actions come from the bottom. That is a gift. When your action menu behaves like the system one, users know how to use it before they have read a single label. Familiarity is a feature.

The iOS share sheet
Mobbin

The takeaway: match the platform's native sheet behavior for menus and actions. You inherit a mental model your users already have, for free.

Ride-hailing and booking: the confirmation sheet

Open a ride or a food delivery app and the bottom sheet is often running the whole flow. Pick a destination and a sheet shows ride options and prices. Choose one and the sheet updates to confirm. Watch the driver arrive, and the sheet tracks their progress, all while the map fills the rest of the screen.

The confirmation sheet example
Mobbin

This is the non-modal sheet at its most ambitious. It is not one sheet with one job. It is a persistent surface that changes content as the user moves through steps, while the map stays visible the entire time. The context- where you are and where your ride is- never disappears.

The takeaway: a bottom sheet can carry a whole multi-step flow, as long as the content behind it (usually a map) stays relevant at every step. When context matters throughout, keep it visible and let the sheet do the talking.

Designing a bottom sheet that feels native

A well-designed bottom sheet appears at the right size, behaves predictably, and gives users exactly what they need without pulling them away from their current task.

Here's what to get right.

1. Choose the right type of bottom sheet

Different tasks call for different sheet behaviors.

  • Standard sheet stays at a fixed partial height while keeping the underlying screen visible.
  • Half-height sheet covers roughly half the screen, making it ideal for menus, filters, and short forms.
  • Full-height sheet expands to fill the screen. At that point, ask whether it should simply become a new page.
  • Expandable sheet starts compact and grows as users drag or scroll.
  • Action sheet presents a short list of actions, such as Share or Delete, without complex interactions.
  • Multi-tab sheet groups related content into tabs or segmented controls inside the same sheet.

Many apps also use a peek (collapsed) state, a partially visible sheet that hints additional content is available. Apple Maps is one of the best examples.

Regardless of the type, most bottom sheets follow the same principle: progressive expansion. Rather than opening at one fixed height, they move between predefined states. iOS calls them detents. Material UI bottom sheet design calls them snap points. Different terminology, but the same idea.

A peek (collapsed) state example
Collapsed state

2. Design the container first

Before users read a single word, they recognize a bottom sheet UI design from its visual cues.

Rounded top corners, a visible drag handle, and a partially visible background communicate that this is a temporary layer, not a new screen.

Container, drag handle, and scrim
Container, drag handle, and scrim

If your sheet supports dragging, include a drag handle.

If it doesn't, don't show one. A handle that doesn't move is a broken expectation.

A close button is equally important. Swipe-to-dismiss feels natural to experienced users, but many people never discover the gesture. Always provide an obvious exit.

3. Keep the content focused

Bottom sheets work best for short, focused tasks.

Inside the sheet:

  • keep one clear primary action;
  • separate destructive actions visually;
  • use tabs or segmented controls only when switching between closely related content;
  • avoid long forms whenever possible.

If content exceeds the available space, let the content scroll, not the entire sheet. Keep headers and primary actions pinned so users never have to scroll just to reach Apply or Save.

Content scroll example
Mobbin

4. Design every state

A bottom sheet isn't just one screen.

Buttons, inputs, toggles, and other controls all need complete interaction states:

  • default
  • hover (where applicable)
  • active
  • disabled
  • loading
  • error

The sheet itself also needs consistent design tokens, such as spacing, corner radius, elevation, colors, and shadows, so it behaves like every other component in your design system instead of becoming a one-off exception.

A bottom sheet example
Source

5. Get the interaction details right

Small details make the difference between a sheet that feels native and one that feels awkward.

  • Limit snap points to two or three (collapsed, medium, full).
  • Make the collapsed state useful by showing a title or primary action, not just a thin strip.
  • Support both swipe-to-dismiss and a visible close button.
  • For modal sheets, let users dismiss by tapping the scrim.

Motion matters too. A good bottom sheet follows the user's finger, slows naturally, and settles into place. One that jumps abruptly or lags immediately feels off.

Bottom Sheet UI example
Source

6. Don't forget accessibility

Bottom sheets should be just as usable with assistive technologies.

Make sure modal sheets:

  • trap keyboard and screen-reader focus,
  • announce themselves when opened,
  • return focus to the triggering element when dismissed,
  • maintain minimum tap targets (44×44 pt on iOS, 48×48 dp on Android).

Because bottom sheets sit near the bottom of the screen, they're naturally thumb-friendly, but always verify that important actions remain reachable on real devices.

Bottom Sheet UI example
Dragging as a single-pointer alternative for any action

Test on a real phone

A bottom sheet that feels perfect in Figma can feel completely different in your hand.

Thumb reach, drag sensitivity, keyboard behavior, and scrolling are difficult to judge in static mockups. Before shipping, test on real devices to make sure the interactions feel as natural as they look.

Bottom Sheet UI example
Mobbin

What developers wish designers knew

Many bottom sheet issues appear during implementation. Understanding a few common engineering challenges makes handoff much smoother.

What developers wish designers knew
  • Treat sheet behavior as part of navigation.

Opening and closing a sheet affects browser history, mobile back gestures, and routing. If these states aren't clearly defined, users can end up with broken back-button behavior or empty screens after navigating.

  • Prototype the motion, not just the layout.

Specs like "medium height" or "expandable" mean different things across iOS, Android, and the web. Instead of describing motion in words, prototype how the sheet opens, snaps, expands, and dismisses.

  • Flag forms early.

Bottom sheets containing text inputs are significantly more complex than they appear. Keyboards, focus management, scrolling, and re-rendering can all affect the interaction. Calling these cases out during design gives developers time to plan around them instead of discovering issues during implementation.

Implementing bottom sheet UI: Material, shadcn, and Expo

Most design systems and frameworks ship a bottom sheet, and it helps to know how each thinks about the component so your designs hand off cleanly. 

Material

Material Design treats bottom sheets as first-class bottom sheet UI components, split into standard and modal (plus the expanding type in Material 3). The mental model matches everything above: standard sheets coexist with the screen and skip the scrim, modal sheets sit on top and block interaction.

Material Design
Source

If your team is on Android with Jetpack Compose, the modal version is a ModalBottomSheet you show and hide with sheet state, and it behaves much like a dialog. 

One detail worth knowing as a designer: Material caps the initial height of a modal bottom sheet at 50% of the screen, and content taller than that expands to full height and scrolls internally. So design your peek and your first snap point with that ceiling in mind. It is a constraint, but a sensible one.

Android bottom sheet UI
Android bottom sheet UI

Shadcn UI bottom sheet

On the web, the shadcn UI bottom sheet is the Drawer component, and it is built on top of Vaul, a lightweight drawer library by Emil Kowalski. It gives you touch-friendly dragging, swipe-to-dismiss, snap points, and background scaling out of the box, all styled with Tailwind so you are not fighting the component's own CSS.

Shadcn UI bottom sheet
Source

The pattern shadcn is best known for is the responsive one. You render a centered Dialog on desktop and a Drawer that slides up from the bottom on mobile, from essentially the same content. That is the cleanest answer to the "bottom sheets feel weird on desktop" problem: use a sheet where it fits and a modal where it does not. The Drawer also supports a direction prop, so the same primitive can slide from the bottom, top, or sides if you need it to.

Expo UI bottom sheet and React Native

For React Native and Expo, bottom sheets are gesture-driven and feel wonderfully native when done well. The Expo UI bottom sheet and popular libraries like gorhom's bottom-sheet handle the hard parts: the pan gestures, snap points, and smooth spring animations, so you can focus on content.

Expo UI bottom sheet
Source

Because these are built on native gesture handling, they feel closer to the system share sheet than anything you would get from a web view. If your product is a real mobile app rather than a responsive site, this is usually where you want to be. Design with snap points and a clear peek height, same as everywhere else, and let the library do the physics.

Across all three, notice the shared vocabulary: snap points, peek height, drag handle, modal versus standard. Learn the concepts once, and they transfer between every framework you will touch.

The use-it-or-skip-it decision guide

For each common case, there's one clear reason tied to context, risk, or dismissal behavior.

Verdict Why
Filters and sort controls Use it Low risk, and users benefit from glimpsing the results updating behind the sheet.
Product detail preview from a list Use it Lets users evaluate an item without losing the list they're browsing.
Payment confirmation Use it, but block easy dismissal Context matters here, but an accidental swipe-away is expensive. Require an explicit confirm or cancel.
Quick entry (add expense, create folder) Use it, if the form is short Fine for two or three fields. Once the keyboard and scrolling start fighting for space, move on.
Long or multi-step forms Skip it Use a full page or a wizard. A sheet can't give a five-step flow the room it needs.
Destructive delete Skip the swipe-dismiss sheet Reach for a confirmation modal or alert instead. Destructive actions want friction, not a gesture that fires by accident.
A single small choice (one setting, one date) Consider a popover or dropdown Sometimes a popover or dropdown menu is lighter than a full sheet.

The pattern across the whole table is this: the more the action costs to get wrong, the harder the sheet should be to dismiss, until eventually the sheet isn't the right container at all.

When a bottom sheet is the right call

A bottom sheet is an interaction pattern designed for one purpose: letting users complete a task without losing their place.

Use one when people need quick actions, lightweight forms, filters, or supporting information while staying connected to the screen they're already using. Choose a modal sheet when the task requires focus. Choose a non-modal sheet when users should keep interacting with the content behind it.

The details matter just as much as the pattern itself. Clear snap points, smooth gestures, pinned actions, accessible interactions, and thoughtful prototypes are what make a bottom sheet feel native instead of awkward.

If you're unsure which pattern fits your product or want to make sure it behaves as well as it looks, we can help. At Eleken, we help SaaS teams design interfaces that feel intuitive from the first tap, turning UI patterns into experiences users don't have to think about.

Share
written by:
image
Darina Silchenko

Senior UI/UX Designer and UI mentor at Eleken. 5 years experience, former UI teacher at Beetroot Academy. Inspired by bold design decision that pushes boundaries.

imageimage
reviewed by:
image
Natalia Yanchiy

Technical copywriter working closely with UI/UX designers to create clear, user-focused content for SaaS products. With 7+ years of experience in SaaS and product design environments, Natalia specializes in simplifying complex functionality and making digital experiences more intuitive, accessible, and easier to navigate.

imageimage

Got questions?

  • A bottom sheet is a panel that slides up from the bottom of the screen, overlays the current content, and keeps the background at least partly visible. That last part is the point: it lets a user act on something (a filter, a quick form, a share menu) without leaving their current context.

    You'll see the same pattern called a sheet, bottom drawer, or bottom modal, depending on the team and platform.

  • A bottom sheet is a surface that rises from the bottom edge of a screen to show extra content or actions while the main screen stays behind it. It's built for secondary tasks that support the current view rather than replace it, which is why apps use it for things like sort controls, settings, and short forms.

    Apple's guidelines call it a "Sheet," and Android's Material Design calls it a bottom sheet, but it's the same idea.

  • On Android, bottom sheets follow Material Design, which defines two kinds: a modal bottom sheet that blocks interaction with the background, and a standard bottom sheet that lets the user keep using the screen behind it.

    In modern apps, you'd typically implement one in Jetpack Compose, which handles the scrim, elevation, and drag handle for you, and set snap points to control where the sheet rests as it expands. Use the modal version for focused tasks like a payment confirmation, and the standard version when the user needs to keep seeing the content underneath.

  • The difference is context. A bottom sheet slides up from the bottom, keeps the background visible, and is meant for tasks the user chose to start, so it usually dismisses freely with a swipe or a tap outside.

    A dialog interrupts, sits centered over a dimmed screen, and demands a decision before the user can continue, which makes it the right choice for high-stakes or destructive actions where an accidental dismissal would be costly.

Explore our blog posts

By clicking “Accept All”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.