Skip to content

lodev09/react-native-true-sheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

React Native True Sheet

CI NPM Downloads

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 - IOSReact Native True Sheet - AndroidReact Native True Sheet - Web

Features

  • ⚑ 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

Installation

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.

Prerequisites

  • React Native 0.80+
  • New Architecture enabled (default in RN 0.76+)
  • Xcode 26.1+ (liquid glass support)

Compatibility

TrueSheet React Native Expo SDK
3.7+ 0.80+ 54+
3.6 0.79 52-53

Expo

npx expo install @lodev09/react-native-true-sheet

Bare React Native

yarn add @lodev09/react-native-true-sheet
cd ios && pod install

Documentation

Usage

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>
  )
}

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with ❀️ by @lodev09

About

The true native bottom sheet experience πŸ’©

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 14