Skip to content

[android] Some fatal JS crashes not reported to Sentry dashboard (working on iOS) #5205

@bestofaIl

Description

@bestofaIl

What React Native libraries do you use?

RN New Architecture

Are you using sentry.io or on-premise?

on-premise (Self-Hosted)

@sentry/react-native SDK Version

6.20.0

How does your development environment look like?

System:
  OS: macOS 15.3.2
  CPU: (11) arm64 Apple M3 Pro
  Memory: 345.23 MB / 18.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 23.11.0
    path: /opt/homebrew/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 10.9.2
    path: /opt/homebrew/bin/npm
  Watchman:
    version: 2025.04.14.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /usr/local/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.4
      - iOS 18.4
      - macOS 15.4
      - tvOS 18.4
      - visionOS 2.4
      - watchOS 11.4
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.3 AI-243.24978.46.2431.13363775
  Xcode:
    version: 16.3/16E140
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.15
    path: /usr/bin/javac
  Ruby:
    version: 3.4.5
    path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 18.0.0
    wanted: 18.0.0
  react:
    installed: 19.0.0
    wanted: 19.0.0
  react-native:
    installed: 0.79.1
    wanted: 0.79.1
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Sentry.init()

init({
      dsn: SENTRY_DATA_SOURCE_NAME,
      environment: getEnv(),
      onReady: options.onReady,
      debug: true,
    });

Steps to Reproduce

  1. In a React component, call a non-function property to force a crash:
export const ProfileScreen = () => {
  const { data: userData } = useValidateTokenQuery();
  // force a crash
  userData.data.phoneNumber();
  return <Text>Profile</Text>;
};
  1. Run the app in release build on Android.
  2. App crashes immediately.
  3. Event is not visible in Sentry dashboard.

ios works as expected.

Sentry.nativeCrash() successfully sends crash reports on both Android and iOS. This shows that the Sentry setup (initialization, DSN, integrations) is working correctly, and the issue is most likely specific to handling fatal JS exceptions on Android.

Adb logs:
[11:11:42] I | ReactNativeJS ▶︎ initialize sentry

[11:11:42] I | ReactNativeJS ▶︎ 'Sentry Logger [log]:', 'Using Hermes native promise rejection tracking'
│ 'Sentry Logger [log]:', 'Unhandled promise rejections will be caught by Sentry.'
│ 'Sentry Logger [log]:', 'Integration installed: ReactNativeErrorHandlers'
│ 'Sentry Logger [log]:', 'Integration installed: NativeLinkedErrors'
│ 'Sentry Logger [log]:', 'Integration installed: InboundFilters'
└ 'Sentry Logger [log]:', 'Integration installed: FunctionToString'

[11:11:42] I | ReactNativeJS ▶︎ 'Sentry Logger [log]:', 'Integration installed: Breadcrumbs'
│ 'Sentry Logger [log]:', 'Integration installed: Dedupe'
│ 'Sentry Logger [log]:', 'Integration installed: HttpContext'
│ 'Sentry Logger [log]:', 'Integration installed: Release'
│ 'Sentry Logger [log]:', 'Integration installed: EventOrigin'
│ 'Sentry Logger [log]:', 'Integration installed: SdkInfo'
│ 'Sentry Logger [log]:', 'Integration installed: ReactNativeInfo'
│ 'Sentry Logger [log]:', 'Integration installed: RewriteFrames'
│ 'Sentry Logger [log]:', 'Integration installed: DeviceContext'
└ 'Sentry Logger [log]:', 'Integration installed: ModulesLoader'

when crash occurs:
[11:12:33] E | ReactNativeJS ▶︎ TypeError: '+44 20 7123 4567' is not a function

│ This error is located at:
│ at anonymous (address at index.android.bundle:1:3252630)
│ at StaticContainer (address at index.android.bundle:1:1997500)
│ at EnsureSingleNavigator (address at index.android.bundle:1:1937898)
│ at SceneView (address at index.android.bundle:1:1994892)
│ at RNSScreenContentWrapper ()
│ at ScreenContentWrapper ()
│ at DebugContainer ()
│ at RNSScreen ()
│ at anonymous (address at index.android.bundle:1:603669)
│ at Suspender (address at index.android.bundle:1:2466073)
│ at Suspense ()
│ at Freeze (address at index.android.bundle:1:2466134)
│ at DelayedFreeze (address at index.android.bundle:1:2465289)
│ at InnerScreen (address at index.android.bundle:1:2462776)
│ at anonymous (address at index.android.bundle:1:2464575)
│ at ScreenStackItem (address at index.android.bundle:1:2472251)
│ at SceneView (address at index.android.bundle:1:2451191)
│ at RNSScreenStack ()
│ at anonymous (address at index.android.bundle:1:2471500)
│ at ScreenStack (address at index.android.bundle:1:2470480)
│ at RCTView ()
│ at anonymous (address at index.android.bundle:1:415634)
│ at SafeAreaProviderCompat (address at index.android.bundle:1:2065372)
│ at NativeStackView (address at index.android.bundle:1:2449657)
│ at PreventRemoveProvider (address at index.android.bundle:1:1943014)
│ at NavigationContent (address at index.android.bundle:1:1998983)
│ at anonymous (address at index.android.bundle:1:1998886)
│ at NativeStackNavigator (address at index.android.bundle:1:2478886)
│ at AppStack ()
│ at StaticContainer (address at index.android.bundle:1:1997500)
│ at EnsureSingleNavigator (address at index.android.bundle:1:1937898)
│ at SceneView (address at index.android.bundle:1:1994892)
│ at RNSScreenContentWrapper ()
│ at ScreenContentWrapper ()
│ at DebugContainer ()
│ at RNSScreen ()
│ at anonymous (address at index.android.bundle:1:603669)
│ at Suspender (address at index.android.bundle:1:2466073)
│ at Suspense ()
│ at Freeze (address at index.android.bundle:1:2466134)
│ at DelayedFreeze (address at index.android.bundle:1:2465289)
│ at InnerScreen (address at index.android.bundle:1:2462776)
│ at anonymous (address at index.android.bundle:1:2464575)
│ at ScreenStackItem (address at index.android.bundle:1:2472251)
│ at SceneView (address at index.android.bundle:1:2451191)
│ at RNSScreenStack ()
│ at anonymous (address at index.android.bundle:1:2471500)
│ at ScreenStack (address at index.android.bundle:1:2470480)
│ at RCTView ()
│ at anonymous (address at index.android.bundle:1:415634)
│ at SafeAreaProviderCompat (address at index.android.bundle:1:2065372)
│ at NativeStackView (address at index.android.bundle:1:2449657)
│ at PreventRemoveProvider (address at index.android.bundle:1:1943014)
│ at NavigationContent (address at index.android.bundle:1:1998983)
│ at anonymous (address at index.android.bundle:1:1998886)
│ at NativeStackNavigator (address at index.android.bundle:1:2478886)
│ at MainStack (address at index.android.bundle:1:2448262)
│ at ThemeProvider (address at index.android.bundle:1:1938629)
│ at EnsureSingleNavigator (address at index.android.bundle:1:1937898)
│ at BaseNavigationContainer (address at index.android.bundle:1:1907531)
│ at NavigationContainerInner (address at index.android.bundle:1:2006904)
│ at RootNavigationContainer ()
│ at PortalProviderComponent (address at index.android.bundle:1:2139458)
│ at AuthContext (address at index.android.bundle:1:2069637)
│ at Provider (address at index.android.bundle:1:2159026)
│ at ScreenModalContext (address at index.android.bundle:1:2069637)
│ at PortalProviderComponent (address at index.android.bundle:1:2139458)
│ at BottomSheetModalProviderWrapper (address at index.android.bundle:1:2141745)
│ at RCTView ()
│ at anonymous (address at index.android.bundle:1:415634)
│ at ScreenDimensionsWrapper (address at index.android.bundle:1:1897914)
│ at DimensionsContext (address at index.android.bundle:1:2069637)
│ at ScreenDimensionsProvider (address at index.android.bundle:1:1898081)
│ at RNCSafeAreaProvider ()
│ at SafeAreaProvider (address at index.android.bundle:1:1894159)
│ at anonymous (address at index.android.bundle:1:1884763)
│ at RNGestureHandlerRootView ()
└ at GestureHandlerRootView (address at index.android.bundle:1:1865570)

[11:12:33] E | ReactNativeJS ▶︎ at RCTView ()
│ at anonymous (address at index.android.bundle:1:415634)
└ at AppContainer (address at index.android.bundle:1:414784), js engine: hermes

[11:12:33] I | ReactNative ▶︎ [GESTURE HANDLER] Tearing down gesture handler registered for root view com.facebook.react.runtime.ReactSurfaceView{f9499ec V.E...... ......ID 0,0-1080,2340 #b}

Expected Result

Crash should be reported to Sentry dashboard (same as on iOS).

Actual Result

App crashes on Android, but no event is reported to Sentry.

Metadata

Metadata

Assignees

No fields configured for issues without a type.

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions