This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
BottomSheet
A SwiftUI BottomSheet component that presents content from the bottom of the screen.
Expo UI BottomSheet matches the official SwiftUI sheet API and presents content from the bottom of the screen.
Installation
If you are installing this in an existing React Native app, make sure to install expo in your project.
Usage
Basic bottom sheet
Bottom sheet that fits content
Use the fitToContents prop to automatically size the sheet to fit its content.
Bottom sheet with presentation detents
Use the presentationDetents modifier on Group to control the available heights. You can use:
'medium': System medium height (approximately half screen)'large': System large height (full screen){ fraction: number }: Fraction of screen height (0-1){ height: number }: Fixed height in points
Bottom sheet with detent selection tracking
Pass selection and onSelectionChange options to presentationDetents to programmatically control which detent the sheet snaps to.
Bottom sheet with background interaction
Use the presentationBackgroundInteraction modifier to allow interactions with content behind the sheet.
Non-dismissible bottom sheet
Use the interactiveDismissDisabled modifier to prevent users from dismissing the sheet by swiping.
Bottom sheet with React Native content
Use RNHostView to embed React Native components inside the bottom sheet. Set matchContents to automatically size the host view to fit its content.
Bottom sheet with flexible React Native content
When using React Native content with flex: 1, omit the matchContents prop on RNHostView and use presentationDetents to control the sheet height.
API
import { BottomSheet } from '@expo/ui/swift-ui';
Component
Type: React.Element<BottomSheetProps>
BottomSheet presents content from the bottom of the screen.
React.ReactNodeThe children of the BottomSheet component.
Use Group to wrap your content and apply presentation modifiers
like presentationDetents, presentationDragIndicator,
presentationBackgroundInteraction, and interactiveDismissDisabled.
boolean • Default: falseWhen true, the sheet will automatically size itself to fit its content.
This sets the presentation detent to match the height of the children.
(isPresented: boolean) => voidCallback function that is called when the BottomSheet presented state changes.