Note
π Version 3.0 is here! Completely rebuilt for Fabric with new features like automatic ScrollView detection, native headers/footers, sheet stacking, and more. Read the announcement
The true native bottom sheet experience for your React Native Apps. π©
React Native True Sheet - IOS React Native True Sheet - Android React Native True Sheet - Web
- β‘ Powered by Fabric - Built on React Native's new architecture for maximum performance
- π Fully Native - Implemented in the native realm, zero JS hacks
- βΏ Accessible - Native accessibility and screen reader support out of the box
- π Flexible API - Use imperative methods or lifecycle events
- πͺ Liquid Glass - iOS 26+ Liquid Glass support out of the box, featured in Expo Blog
- π Reanimated - First-class support for react-native-reanimated
- π§ React Navigation - Built-in sheet navigator for seamless navigation integration
- π Web Support - Full web support out of the box
Important
Version 3.0+ requires React Native's New Architecture (Fabric) For the old architecture, use version 2.x. See the Migration Guide for upgrading.
- React Native 0.80+
- New Architecture enabled (default in RN 0.76+)
- Xcode 26.1+ (liquid glass support)
| TrueSheet | React Native | Expo SDK |
|---|---|---|
| 3.7+ | 0.80+ | 54+ |
| 3.6 | 0.79 | 52-53 |
npx expo install @lodev09/react-native-true-sheet
yarn add @lodev09/react-native-true-sheet cd ios && pod install
- Example
- Configuration
- Lifecycle Events
- React Navigation
- Troubleshooting
- Testing with Jest
- Migrating to v3
import { TrueSheet } from "@lodev09/react-native-true-sheet" export const App = () => { const sheet = useRef<TrueSheet>(null) // Present the sheet β const present = async () => { await sheet.current?.present() console.log('horray! sheet has been presented π©') } // Dismiss the sheet β const dismiss = async () => { await sheet.current?.dismiss() console.log('Bye bye π') } return ( <View> <Button onPress={present} title="Present" /> <TrueSheet ref={sheet} detents={['auto', 1]} > <Button onPress={dismiss} title="Dismiss" /> </TrueSheet> </View> ) }
See the contributing guide to learn how to contribute to the repository and the development workflow.
Made with β€οΈ by @lodev09