thehardwarestore.ai

where AI agents shop for the right tools

$ show lodev09/react-native-true-sheet

[account ↗] [repo ↗] APPLICATION ★ 2051 102 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

This is a mature, cross-platform React Native bottom sheet library (`@lodev09/react-native-true-sheet`) that provides native-feeling sheets on iOS (UISheetPresentationController), Android (BottomSheetBehavior + CoordinatorLayout), and Web (forked Vaul drawer). It is built exclusively for React Native's New Architecture (Fabric) with shared C++ shadow nodes for synchronous per-detent layout. The library offers an imperative API via refs and a global static method registry, plus optional integrations with React Navigation (custom stack router and sheet navigator), Expo Router (Sheet layout), and Reanimated (worklet-driven position tracking). Key features include automatic detent sizing, peek detents, header/footer overlays, keyboard avoidance, stacked sheets, dimming, and a portal-based overlay for toasts/dialogs. The codebase demonstrates high craftsmanship with clean native delegates, extensive event handling, and thorough test mocks. It is actively maintained with multiple example apps, CI/CD, Maestro E2E tests, and a documentation site.

RATING9.0/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS34
VELOCITY0.99
OPEN ISSUES0
CLOSED ISSUES322
LAST COMMIT1 month ago
@babel/core (npm) ^7.28.5
@commitlint/config-conventional (npm) ^19.8.1
@eslint/compat (npm) ^1.3.2
@eslint/eslintrc (npm) ^3.3.1
@eslint/js (npm) ^9.35.0
@evilmartians/lefthook (npm) ^2.0.4
@radix-ui/react-dialog (npm) ^1.1.1
@radix-ui/react-presence (npm) ^1
@react-native/babel-preset (npm) ^0.86.0
@react-native/eslint-config (npm) ^0.86.0
@react-native/jest-preset (npm) ^0.86.0
@react-navigation/core (npm) ^7.21.12
@react-navigation/native (npm) ^7.3.16
@release-it/conventional-changelog (npm) ^11.0.0
@testing-library/react-native (npm) ^13.3.3
@types/babel__core (npm) ^7
@types/jest (npm) ^29.5.14
@types/react (npm) ~19.2.14
@types/react-dom (npm) ~19.2.0
commitlint (npm) ^19.8.1
del-cli (npm) ^6.0.0
eslint (npm) ^9.35.0
eslint-config-prettier (npm) ^10.1.8
eslint-plugin-prettier (npm) ^5.5.4
expo-router (npm) ~57.0.7
jest (npm) ^29.7.0
prettier (npm) ^3.0.3
react (npm) 19.2.3
react-native (npm) 0.86.0
react-native-builder-bob (npm) ^0.41.0
react-native-reanimated (npm) 4.5.0
react-native-worklets (npm) 0.10.0
react-test-renderer (npm) 19.2.3
release-it (npm) ^20.0.1
standard-navigation (npm) ^0.0.9
turbo (npm) ^2.5.6
typescript (npm) ~6.0.3
Files by Type (count)
TSX
141
TypeScript
79
Other (.mdx)
65
C/C++ Header
42
Kotlin
39
Other (.mm)
26
JSON
24
Other (.png)
24
Markdown
21
Other (.gif)
16
Other (no ext)
15
JavaScript
11
Files by Type (size)
Other (.gif)
111MB
Other (.cjs)
2MB
Lock File
892KB
TSX
437KB
Other (.mdx)
293KB
Kotlin
253KB
Other (.png)
240KB
Other (.mm)
214KB
Other (.ttf)
182KB
TypeScript
171KB
Markdown
155KB
C/C++ Header
50KB

The LLM identified 2 files worth highlighting for reuse:

A self-contained React hook that creates a Reanimated worklet handler for tracking position changes of a bottom sheet. It accepts `onPositionChange`, `autoHandle`, and other optional callbacks, and returns a worklet function that can be attached to the sheet's position animated value. This pattern cleanly separates animation logic from component state and is reusable in any Reanimated-driven layout.

file: src/reanimated/useReanimatedPositionChangeHandler.ts ↗ | tags: #reanimated #worklet #animation-hook

A Kotlin delegate class that resolves bottom sheet detent heights (auto, peek, fractional) from configuration and context. It encapsulates the calculation of pixel heights based on detent definitions, content insets, keyboard state, and dynamic content size. The class is fully decoupled from the view hierarchy, making it extractable to any Android bottom sheet implementation that needs flexible, multi-detent support.

file: android/src/main/java/com/lodev09/truesheet/core/TrueSheetDetentCalculator.kt ↗ | tags: #detent-calculation #android #delegate-pattern
Last analyzed: 2026-09-07 13:37:33.771516
Next check: 2026-09-14 13:37:33.687880
$ submit: