Version 3.0 Release
True Sheet 3.0 is here!โ
We're thrilled to announce the biggest update yet! True Sheet has been completely rebuilt from the ground up for React Native's New Architecture (Fabric). This isn't just an update โ it's a whole new level of performance and native experience.


Powered by Fabricโ
Version 3 is built exclusively for React Native's New Architecture. Here's what that means for you:
- No Bridge โ Direct C++ communication between JavaScript and native code
- Blazing Fast โ Synchronous layout updates with Fabric
- Shared C++ Core โ State and shadow nodes shared between iOS and Android
- 100% Type-safe โ Full TypeScript support with Codegen-generated native interfaces
Requirements:
- React Native >= 0.76 (Expo SDK 52+)
- New Architecture enabled (default in RN 0.76+)
What's Newโ
Automatic ScrollView Detectionโ
Say goodbye to scrollRef! Scroll views are now automatically detected on iOS. Just use the scrollable prop and you're good to go:
<TrueSheet scrollable>
<ScrollView>{/* Your scrollable content */}</ScrollView>
</TrueSheet>
See the Scrolling guide for more details.
Native Header and Footerโ
Add fixed headers and footers that stay put while your content scrolls:
<TrueSheet
header={<MyHeader />}
footer={<MyFooter />}
>
<FlatList data={items} renderItem={renderItem} />
</TrueSheet>
See the Header guide and Footer guide for more details.
Sheet Stackingโ
Stack multiple sheets on top of each other on both iOS and Android! New focus events help you manage interactions:
onWillFocus/onDidFocusโ Sheet regains focusonWillBlur/onDidBlurโ Sheet loses focus
See the Stacking guide for more details.
Rich Event Systemโ
Track every moment of your sheet's lifecycle:
| Lifecycle | Drag | Position |
|---|---|---|
onMount | onDragBegin | onPositionChange |
onWillPresent | onDragChange | onDetentChange |
onDidPresent | onDragEnd | |
onWillDismiss | ||
onDidDismiss |
See the onMount guide for handling sheet readiness.
Reanimated v4 Integrationโ
Seamless animations with dedicated Reanimated components:
import {
ReanimatedTrueSheetProvider,
ReanimatedTrueSheet,
useReanimatedTrueSheet,
} from '@lodev09/react-native-true-sheet'
import Animated, { useAnimatedStyle, interpolate } from 'react-native-reanimated'
const App = () => (
<ReanimatedTrueSheetProvider>
<MySheet />
</ReanimatedTrueSheetProvider>
)
const MySheet = () => (
<ReanimatedTrueSheet detents={[0.3, 0.6, 1]}>
<AnimatedContent />
</ReanimatedTrueSheet>
)
const AnimatedContent = () => {
const { animatedIndex } = useReanimatedTrueSheet()
// Fade in as sheet expands from index 0 to 1
const animatedStyle = useAnimatedStyle(() => ({
opacity: interpolate(animatedIndex.value, [0, 1], [0, 1])
}))
return (
<Animated.View style={animatedStyle}>
<Text>I fade in as the sheet expands!</Text>
</Animated.View>
)
}
See the Reanimated guide for complete examples.
Draggable Controlโ
Need a static sheet? Disable dragging entirely:
<TrueSheet draggable={false} detents={[0.5, 1]}>
<Button title="Expand" onPress={() => sheet.current?.resize(1)} />
</TrueSheet>
See the Resizing guide for programmatic control.
Dimming Controlโ
Customize when the background dims based on detent index:
<TrueSheet detents={[0.3, 0.6, 1]} dimmedDetentIndex={1}>
{/* Dims only when at index 1 or above */}
</TrueSheet>
See the Dimming guide for more details.
Edge-to-Edge Support (Android)โ
TrueSheet automatically adapts to Android's edge-to-edge mode. Go full-screen with:
<TrueSheet edgeToEdgeFullScreen />
See the Edge-to-Edge guide for details.
Global Static Methodsโ
Present sheets from anywhere in your app using static methods:
// Register a named sheet
<TrueSheet name="my-sheet">
{/* content */}
</TrueSheet>
// Present from anywhere
TrueSheet.present('my-sheet')
See the Global Methods guide for more details.
React Native Screens Integrationโ
Navigate to other screens from within a sheet without any issues! The sheet will remain visible in the background when presenting modals on top.
This requires changes to react-native-screens. There is a pending PR that adds support for this. In the meantime, you can apply the patch from the example app.
See the React Navigation guide for more details.
Breaking Changesโ
Heads up! Version 3 includes some breaking changes:
- Fabric Required โ Old Paper architecture is no longer supported
- Prop Renames โ
sizesโdetents,initialIndexโinitialDetentIndex,onPresentโonDidPresent, and more - Detent Values โ Use fractional values (
0.5) instead of percentage strings ("50%") - Removed Props โ
scrollRef,grabberProps,contentContainerStyle
Check out the Migration Guide for the full list and step-by-step upgrade instructions.
Get Startedโ
yarn add @lodev09/react-native-true-sheet@^3.0.0
Or with Expo:
npx expo install @lodev09/react-native-true-sheet
Running into issues? Check out the Troubleshooting guide for common fixes.
Thank You!โ
A huge thanks to everyone who contributed, reported issues, and provided feedback. Your support makes True Sheet better with every release!
We're just getting started. Stay tuned for more exciting updates!
