gluestack-ui logopreview
Docs
Blog
Get Updates
Prompt to React Native
IntroductionQuick Start
InstallationTooling SetupVS Code ExtensionsFigma UI KitCLIgluestack-ui-nativewind-utils
AccessibilityUniversal
Benchmarks
Default TokensCustomizing ThemeDark Mode
All Components
HeadingrscTextrsc
BoxrscCenterrscDividerHStackrscVStackrscGridalpha, rsc
AlertProgressSpinnerToast
BadgeCardrscTablealphaTabsalpha
ButtonCheckboxDateTimePickerCalendarFormControlInputLinkPressableRadioSelectSliderSwitchTextarea
AlertDialogDrawerLiquid GlassMenuModalPopoverPortalTooltipImage Viewer
ActionsheetAccordionBottomSheetalpha
AvatarImageIconrsc
FabSkeletonalpha, rsc
useBreakPointValueuseMediaQuery
Dashboard AppKitchensink AppTodo AppStarter KitAppLighter
LinearGradient
Building Ecommerce App
Upgrade to v2Upgrade to v3Upgrade to v4FAQsReleasesChangelogRoadmapTroubleshootingDiscord FAQs

BottomSheet

A bottom sheet component for React Native built on top of
@gorhom/bottom-sheet
with gluestack-ui styling and NativeWind className support.
Important Note
Note: BottomSheet is not supported in Next.js. It is intended for React Native and Expo (mobile/web via React Native) environments only.
@gorhom/bottom-sheet
relies on React Native Reanimated and Gesture Handler which are not compatible with Next.js.
This is an illustration of the BottomSheet component.
React Native / Expo onlyThis component is not supported in Next.js. Preview it in a React Native or Expo environment.

With Search Input

A bottom sheet with a keyboard-aware search input using BottomSheetTextInput. Typing filters the list in real time without dismissing the keyboard.
React Native / Expo onlyThis component is not supported in Next.js. Preview it in a React Native or Expo environment.

With Footer

A bottom sheet with a sticky BottomSheetFooter containing action buttons. Items can be multi-selected without closing the sheet, and the Confirm button shows the selected count.
React Native / Expo onlyThis component is not supported in Next.js. Preview it in a React Native or Expo environment.

With Snap Points

A bottom sheet with multiple snap points controlled programmatically via a ref. Demonstrates open, close, expand, collapse, and snapToIndex using the imperative BottomSheetRef handle.
React Native / Expo onlyThis component is not supported in Next.js. Preview it in a React Native or Expo environment.

Installation

Run the following command:

npx gluestack-ui@alpha add bottomsheet
This command will copies all the code from git repo — excluding the docs and examples folders — into your project's
components/ui
directory.

API Reference

To use this component in your project, include the following import statement in your file.
import {
  BottomSheet,
  BottomSheetBackdrop,
  BottomSheetContent,
  BottomSheetDragIndicator,
  BottomSheetFlatList,
  BottomSheetFooter,
  BottomSheetItem,
  BottomSheetItemText,
  BottomSheetPortal,
  BottomSheetScrollView,
  BottomSheetSectionList,
  BottomSheetTextInput,
  BottomSheetTrigger,
} from '@/components/ui/bottomsheet';
export default () => (
  <BottomSheet>
    <BottomSheetTrigger>
      <Text>Open BottomSheet</Text>
    </BottomSheetTrigger>
    <BottomSheetPortal
      snapPoints={['25%', '50%']}
      backdropComponent={BottomSheetBackdrop}
      handleComponent={BottomSheetDragIndicator}
    >
      <BottomSheetContent>
        <BottomSheetItem>
          <BottomSheetItemText>Item 1</BottomSheetItemText>
        </BottomSheetItem>
        <BottomSheetItem>
          <BottomSheetItemText>Item 2</BottomSheetItemText>
        </BottomSheetItem>
        <BottomSheetItem>
          <BottomSheetItemText>Item 3</BottomSheetItemText>
        </BottomSheetItem>
      </BottomSheetContent>
    </BottomSheetPortal>
  </BottomSheet>
);

Component Props

This section provides a comprehensive reference list for the component props, detailing descriptions, properties, types, and default behavior for easy project integration.

BottomSheet

The root context provider for the entire BottomSheet. Accepts a
ref
to control the sheet imperatively.

Props

PropTypeDefaultDescription
defaultSnapIndex
number0The index of snapPoints at which the bottom sheet initially opens when triggered.
onOpen
() => void-Callback fired when the bottom sheet opens.
onClose
() => void-Callback fired when the bottom sheet closes.
onChange
(index: number) => void-Callback fired whenever the sheet snaps to a new index. Receives the current snap index (-1 when closed).

Ref Methods

BottomSheet
forwards a ref exposing the following imperative methods:
MethodSignatureDescription
open
(index?: number) => voidOpens the bottom sheet. Optionally pass a snap index; defaults to defaultSnapIndex.
close
() => voidCloses the bottom sheet.
snapToIndex
(index: number) => voidSnaps the sheet to the given snap point index.
expand
() => voidExpands the sheet to the highest snap point.
collapse
() => voidCollapses the sheet to the lowest snap point.

BottomSheetTrigger

Wraps React Native's
Pressable
. Pressing it opens the bottom sheet.
PropTypeDefaultDescription
index
number-Snap index to open the sheet at. Overrides defaultSnapIndex when provided.
Also inherits all props of React Native's
Pressable
.

BottomSheetPortal

The actual gorhom BottomSheet container. Inherits all props from
gorhom BottomSheet
.
PropTypeDefaultDescription
snapPoints
Array<string | number>-Required. Points for the bottom sheet to snap to. Accepts numbers or percentage strings (e.g. '50%').
enablePanDownToClose
booleantrueEnables closing the sheet by panning downward.
enableDynamicSizing
booleanfalseEnables the sheet height to be determined dynamically by its content.
closeOnBackdropPress
booleantrueCloses the sheet when the backdrop is pressed.
backgroundClassName
string-NativeWind className applied to the sheet background surface.
handleIndicatorClassName
string-NativeWind className applied to the drag handle indicator.

BottomSheetBackdrop

Renders a semi-transparent backdrop behind the sheet. Inherits all props from
gorhom BottomSheetBackdrop
.
PropTypeDefaultDescription
disappearsOnIndex
number-1Snap index at which the backdrop disappears.
appearsOnIndex
number0Snap index at which the backdrop appears.
opacity
number0.5Opacity of the backdrop overlay.
pressBehavior
'close' | 'collapse' | 'none''close'Defines what happens when the backdrop is pressed.

BottomSheetDragIndicator

The drag handle shown at the top of the sheet. Inherits all props from
gorhom BottomSheetHandle
.

BottomSheetContent

The scrollable content area inside the sheet. Inherits all props from
gorhom BottomSheetView
.
PropTypeDefaultDescription
focusScope
booleantrueWhen true, wraps content in a FocusScope on web for keyboard accessibility (traps focus and restores it on close).

BottomSheetFooter

A sticky footer pinned to the bottom of the sheet. Inherits all props from
gorhom BottomSheetFooter
.

BottomSheetItem

A pressable row item inside the sheet content. Inherits all props from React Native's
Pressable
.
PropTypeDefaultDescription
closeOnSelect
booleantrueAutomatically closes the sheet when the item is pressed.

BottomSheetItemText

The text label for a
BottomSheetItem
. Inherits all props from React Native's
Text
.

BottomSheetScrollView

Direct re-export of
gorhom BottomSheetScrollView
. Use inside
BottomSheetPortal
for scrollable content.

BottomSheetFlatList

Direct re-export of
gorhom BottomSheetFlatList
. Use inside
BottomSheetPortal
for list content.

BottomSheetSectionList

Direct re-export of
gorhom BottomSheetSectionList
. Use inside
BottomSheetPortal
for sectioned list content.

BottomSheetTextInput

Direct re-export of
gorhom BottomSheetTextInput
. Use this instead of the standard
TextInput
inside the sheet to avoid keyboard layout issues.
Edit this page on GitHub
Go backAccordion
Up nextAvatar
Go backAccordion
Up nextAvatar