-
-
Notifications
You must be signed in to change notification settings - Fork 920
Description
Version
v5
Reanimated Version
v3
Gesture Handler Version
v2
Platforms
iOS, Android
What happened?
When rendering the bottom-sheet handle container the app throws ref.current.unstable_getBoundingClientRect is not a function (it is undefined) from useBoundingClientRect.ts. The hook attempts to call ref.current.unstable_getBoundingClientRect() but the property is undefined on the ref, causing a runtime crash.
Environment
React Native: 0.82.1
Platform: iOS Simulator (example: iPhone 16 Pro)
Screenshot: Simulator Screenshot - iPhone 16 Pro - 2025-11-08 at 08.38.40.png (attached)
Component: BottomSheetHandleContainerComponent → useBoundingClientRect.ts (shown in stacktrace)
Stack trace lines (from screenshot): useBoundingClientRect.ts (61:64) → BottomSheetHandleContainer.tsx (16:16) → <View_withRef /> (View.js:27)
Exact error message
ref.current.unstable_getBoundingClientRect is not a function (it is undefined)
Reproduction steps
- Create a React Native app with RN 0.82.1 using community cli.
- Setup reanimated following v3 on the docs.
- Install gesture handler and write the following usage example as defined in the docs with all the right imports.
const App = () => {
// ref
const bottomSheetRef = useRef<BottomSheet>(null);
// callbacks
const handleSheetChanges = useCallback((index: number) => {
console.log('handleSheetChanges', index);
}, []);
// renders
return (
<GestureHandlerRootView style={styles.container}>
<BottomSheet
ref={bottomSheetRef}
onChange={handleSheetChanges}
>
<BottomSheetView style={styles.contentContainer}>
<Text>Awesome 🎉</Text>
</BottomSheetView>
</BottomSheet>
</GestureHandlerRootView>
);
};Upon loading the app, you will be greeted by this screen
Reproduction sample
https://snack.expo.dev/@tylerdgenius/bottom-sheet---issue-reproduction-template
Relevant log output
console.js:662 TypeError: ref.current.unstable_getBoundingClientRect is not a function (it is undefined)
at anonymous (useBoundingClientRect.ts:61:64)
at react_stack_bottom_frame (ReactFabric-dev.js:15977:26)
at runWithFiberInDEV (ReactFabric-dev.js:683:21)
at commitHookEffectListMount (ReactFabric-dev.js:9659:46)
at commitHookLayoutEffects (ReactFabric-dev.js:9609:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10133:36)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10136:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10244:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10307:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10131:43)
at recursivelyTraverseLayoutEffects (ReactFabric-dev.js:10688:36)
at commitLayoutEffectOnFiber (ReactFabric-dev.js:10213:43)
at flushLayoutEffects (ReactFabric-dev.js:12545:40)
at commitRoot (ReactFabric-dev.js:12488:27)
at commitRootWhenReady (ReactFabric-dev.js:11738:17)
at performWorkOnRoot (ReactFabric-dev.js:11700:34)
at performSyncWorkOnRoot (ReactFabric-dev.js:3088:24)
at flushSyncWorkAcrossRoots_impl (ReactFabric-dev.js:2942:42)
at processRootScheduleInMicrotask (ReactFabric-dev.js:2973:36)
at anonymous (ReactFabric-dev.js:3108:47) Error Stack:
at BottomSheet (BottomSheet.tsx:1827:19)
at App (App.tsx:21:11)
anonymous @ console.js:662
overrideMethod @ backend.js:17416
reactConsoleErrorHandler @ ExceptionsManager.js:184
anonymous @ setUpDeveloperTools.js:42
reportException @ ExceptionsManager.js:108
handleException @ ExceptionsManager.js:173
onUncaughtError @ ErrorHandlers.js:63
logUncaughtError @ ReactFabric-dev.js:6747
runWithFiberInDEV @ ReactFabric-dev.js:683
anonymous @ ReactFabric-dev.js:6777
callCallback @ ReactFabric-dev.js:3691
commitCallbacks @ ReactFabric-dev.js:3711
runWithFiberInDEV @ ReactFabric-dev.js:683
commitLayoutEffectOnFiber @ ReactFabric-dev.js:10229
flushLayoutEffects @ ReactFabric-dev.js:12545
commitRoot @ ReactFabric-dev.js:12488
commitRootWhenReady @ ReactFabric-dev.js:11738
performWorkOnRoot @ ReactFabric-dev.js:11700
performSyncWorkOnRoot @ ReactFabric-dev.js:3088
flushSyncWorkAcrossRoots_impl @ ReactFabric-dev.js:2942
processRootScheduleInMicrotask @ ReactFabric-dev.js:2973
anonymous @ ReactFabric-dev.js:3108
Welcome to React Native DevTools
Debugger integration: iOS Bridgeless (RCTHost)