Skip to content

[Bug]: ref.current.unstable_getBoundingClientRect is not a function thrown in useBoundingClientRect when rendering BottomSheetHandleContainer (RN 0.82.1, iOS Simulator) #2560

@tylerdgenius

Description

@tylerdgenius

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)

Image

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions