lodev09/react-native-true-sheet

The true native bottom sheet experience πŸ’©

TypeScript

2,076

1,199 commits

updated Oct 12, 2026

See the code

README

React Native TrueSheet

CI NPM Downloads Ask DeepWiki

The true native bottom sheet experience for your React Native Apps. πŸ’©

React Native True Sheet - iPad
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
  • ⌨️ Keyboard Handling - Built-in keyboard handling with automatic adjustment
  • πŸ“ Side Sheets - Native side sheet support for iPad and Android tablets
  • πŸͺŸ 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

πŸŽ‰ What's New in v4

[!TIP] ✨ v4 is in beta! It rewrites the layout engine β€” the sheet now lays out synchronously per detent, so the container is sized to the sheet's visible height and tracks it in realtime while dragging.

  • πŸ“ Synchronous layout - Content resizes in the same frame as the sheet, no more lag
  • πŸ“ auto detent with scrollables - The sheet now sizes itself to a ScrollView/FlatList's content height
  • πŸ“œ scrollableRef - Pass a ScrollView/FlatList ref to wire nested scrolling, keyboard insets, and auto detent sizing
  • 🦢 Relative footers - Footers take up space below the content by default
  • 🧭 Expo Router - First-class support via the Sheet layout from /navigation/expo-router
  • 🍞 TrueSheetOverlay - Render toasts, dialogs, and other overlays above your sheets β€” no more FullWindowOverlay/Modal workarounds
  • πŸ” Element inspector - React Native's dev menu inspector now works inside a presented sheet
  • 🎨 Dim color and opacity - Customize the dim behind the sheet with dimColor and dimOpacity
npx expo install @lodev09/react-native-true-sheet@beta

See the Migration Guide to upgrade. v3 is still supported for React Native 0.81-0.86 (Expo SDK 54-57) and remains the latest release on npm.

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.82+ (0.81+ on v3)
  • New Architecture enabled
  • Xcode 26.1+

Compatibility

TrueSheetReact NativeExpo SDK
4.0+0.82+55+
3.7 - 3.110.81-0.8654-57
3.60.8052-53

Expo

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

Bare React Native

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

These install v3. For v4, append @beta β€” see πŸŽ‰ What's New in v4.

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

AI Skills

Skills are reusable AI capabilities that give your AI coding agent knowledge about TrueSheet. With the right skill loaded, your agent can pick the right patterns, avoid common mistakes, and generate correct code without you having to explain the library every time.

npx skills add lodev09/react-native-true-sheet

This will install the TrueSheet Usage skill into your project.

That map is awesome!

Yes it is! Checkout @lugg/maps, a universal maps library for React Native that I'm developing at Lugg.

Contributing

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

License

MIT


Made with ❀️ by @lodev09

android
bottom-sheet
ios
modal-sheet
native-sheet
react-native

lodev09/react-native-true-sheet

The true native bottom sheet experience πŸ’©

TypeScript

2,076

1,199 commits

updated Oct 12, 2026

See the code

README

React Native TrueSheet

CI NPM Downloads Ask DeepWiki

The true native bottom sheet experience for your React Native Apps. πŸ’©

React Native True Sheet - iPad
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
  • ⌨️ Keyboard Handling - Built-in keyboard handling with automatic adjustment
  • πŸ“ Side Sheets - Native side sheet support for iPad and Android tablets
  • πŸͺŸ 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

πŸŽ‰ What's New in v4

[!TIP] ✨ v4 is in beta! It rewrites the layout engine β€” the sheet now lays out synchronously per detent, so the container is sized to the sheet's visible height and tracks it in realtime while dragging.

  • πŸ“ Synchronous layout - Content resizes in the same frame as the sheet, no more lag
  • πŸ“ auto detent with scrollables - The sheet now sizes itself to a ScrollView/FlatList's content height
  • πŸ“œ scrollableRef - Pass a ScrollView/FlatList ref to wire nested scrolling, keyboard insets, and auto detent sizing
  • 🦢 Relative footers - Footers take up space below the content by default
  • 🧭 Expo Router - First-class support via the Sheet layout from /navigation/expo-router
  • 🍞 TrueSheetOverlay - Render toasts, dialogs, and other overlays above your sheets β€” no more FullWindowOverlay/Modal workarounds
  • πŸ” Element inspector - React Native's dev menu inspector now works inside a presented sheet
  • 🎨 Dim color and opacity - Customize the dim behind the sheet with dimColor and dimOpacity
npx expo install @lodev09/react-native-true-sheet@beta

See the Migration Guide to upgrade. v3 is still supported for React Native 0.81-0.86 (Expo SDK 54-57) and remains the latest release on npm.

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.82+ (0.81+ on v3)
  • New Architecture enabled
  • Xcode 26.1+

Compatibility

TrueSheetReact NativeExpo SDK
4.0+0.82+55+
3.7 - 3.110.81-0.8654-57
3.60.8052-53

Expo

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

Bare React Native

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

These install v3. For v4, append @beta β€” see πŸŽ‰ What's New in v4.

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

AI Skills

Skills are reusable AI capabilities that give your AI coding agent knowledge about TrueSheet. With the right skill loaded, your agent can pick the right patterns, avoid common mistakes, and generate correct code without you having to explain the library every time.

npx skills add lodev09/react-native-true-sheet

This will install the TrueSheet Usage skill into your project.

That map is awesome!

Yes it is! Checkout @lugg/maps, a universal maps library for React Native that I'm developing at Lugg.

Contributing

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

License

MIT


Made with ❀️ by @lodev09

android
bottom-sheet
ios
modal-sheet
native-sheet
react-native

Project health

Latest release

3.11.18 Β· Oct 2, 2026

Releases this year

78

Significant stargazers

Fernando Rojo

3,240 followers Β· starred Apr 2024

Brent Vatne

4,534 followers Β· starred Apr 2024

Corentin Leruth

115 followers Β· starred Apr 2024

Fero

69 followers Β· starred Aug 2025