Skip to content

Releases: getsentry/sentry-react-native

8.16.0

25 Jun 12:37

Choose a tag to compare

Features

  • Capture errors that hit Expo Router's per-route ErrorBoundary (#6318)

    Wrap the boundary with Sentry.wrapExpoRouterErrorBoundary in your route file:

    // app/_layout.tsx
    import { ErrorBoundary as ExpoErrorBoundary } from 'expo-router';
    import * as Sentry from '@sentry/react-native';
    
    export const ErrorBoundary = Sentry.wrapExpoRouterErrorBoundary(ExpoErrorBoundary);

    Render-phase errors that reach the boundary are captured with route context (route.name, route.path, route.params), the in-flight navigation transaction is tagged as errored, and a breadcrumb is emitted. Concrete paths and params are gated behind sendDefaultPii.

Fixes

  • Fix fatal NSInvalidArgumentException crash in RNSentryReplayBreadcrumbConverter when a touch breadcrumb path contains a non-dictionary element (#6346)
  • Apply SENTRY_ENVIRONMENT, SENTRY_RELEASE and SENTRY_DIST build-time overrides to the JS bundled options to match the native SDKs (#6330)
  • Fix user geo being dropped from the native scope by forwarding it as a structured object instead of a JSON string (#6309)
  • Remove unused React/RCTTextView.h import that broke iOS builds on React Native 0.87, where the header was removed as part of the legacy architecture cleanup (#6322)

Internal

  • Hide the dataCollection option until it is fully supported in React Native. It is exposed by @sentry/core but is not yet honored by the native SDKs (iOS/Android) nor by the RN-specific sendDefaultPii gates, so setting it would silently have no effect. Use sendDefaultPii instead. (#6345)

Dependencies

8.14.1

24 Jun 15:17

Choose a tag to compare

Fixes

  • Fix Android Gradle source map upload being silently skipped on some occasions (#6320)

Dependencies

8.15.1

19 Jun 08:40

Choose a tag to compare

Fixes

  • Fix Android Gradle source map upload being silently skipped on some occasions (#6320)

8.15.0

18 Jun 12:48

Choose a tag to compare

Features

  • Add nativeStackAndroid support to NativeLinkedErrors, capturing the JVM stack trace of rejected native module promises as a linked exception (#6278)
  • Record XHR request/response headers and (optionally) bodies in Mobile Session Replay. Opt in via mobileReplayIntegration with networkDetailAllowUrls to capture headers; set networkCaptureBodies: true to also capture bodies. Other options: networkDetailDenyUrls, networkRequestHeaders, networkResponseHeaders. Authorization-like headers are always stripped, bodies are capped at ~150 KB. Covers XHR-based clients like axios; fetch will follow. See Network Details for details. (#6288)
  • Warn during dev builds when multiple versions of Sentry JS SDK are detected (#6269)

Fixes

  • Fix Android ClassCastException when syncing breadcrumbs with a numeric timestamp to the native scope (#6308)

Dependencies

8.14.0

11 Jun 11:28

Choose a tag to compare

Features

  • Correlate deep links with the navigation transaction they trigger. The next idle navigation span started within routeChangeTimeoutMs of a deep link arrival is tagged with navigation.trigger: 'deeplink', deeplink.url (sanitized, respects sendDefaultPii), and deeplink.dispatch_delay_ms (ms gap between URL received and navigation dispatched). Covers both cold start (Linking.getInitialURL()) and warm open ('url' event) paths, including the late-arrival case where Expo Router auto-handles the link before our getInitialURL() chain resolves (#6264)
  • Add memory, CPU, and frame measurements to Android profiling (#6250)
  • Add enableAutoConsoleLogs option to opt out of automatic console.* capture while keeping enableLogs: true for manual Sentry.logger.* calls (#6235)
  • Instrument Expo Router push, replace, navigate, back, and dismiss (in addition to prefetch) with breadcrumbs and spans, and tag the resulting idle navigation span with the initiating navigation.method (#6221)
    • Note: Expo Router span/breadcrumb attributes that may contain user identifiers (route.href, route.params, and concrete pathnames derived from string hrefs such as /users/42) are now gated behind sendDefaultPii. When sendDefaultPii is off (the default), prefetch spans for string hrefs use route.name: 'unknown' and omit route.href. Templated object hrefs (e.g. { pathname: '/users/[id]' }) are unaffected.
  • Warn when Gradle resolves sentry-android to a version incompatible with the SDK (#6238)
  • Attach the active TurboModule method to native crash reports as contexts.turbo_module + turbo_module.name / turbo_module.method tags (#6227)

Fixes

  • Exclude additional server-only modules (express, postgresjs, requestdata, consola, spanStreaming) from native bundles (#6263)
  • Enable fetch instrumentation when Expo SDK 56's native expo/fetch is active (#6226)
  • Resolve sentry-cli in isolated dependency layouts (#6242)

Internal

  • Convert sentry.gradle to Kotlin DSL (sentry.gradle.kts) (#6119)
    • The old sentry.gradle is kept as a shim forwarding to the new .kts file for backward compatibility

Dependencies

8.13.0

28 May 14:23
153fed1

Choose a tag to compare

Features

  • Add breadcrumbs for dispatched React Navigation events (#6218)
  • Add Sentry.NavigationContainer drop-in wrapper for React Navigation (#6199)
  • Opt-in: consume sentry-cocoa via Swift Package Manager. Set SENTRY_USE_SPM=1 before pod install to pull Sentry from sentry-cocoa's SPM package as a binary xcframework instead of the CocoaPods source build (#6182)
  • Add disableAutoUpload option to Expo plugin to disable source map and debug symbol uploads (#6195)
  • Expose pauseAppHangTracking and resumeAppHangTracking APIs on iOS (#6192)
  • Better route and dynamic param extraction for Expo Router (#6197)

Fixes

  • Rethrow native exceptions from Sentry's Expo host handler so Android crashes terminate the process instead of leaving the app on a blank screen (#6228)
  • Bound TTID/TTFD to prevent inflated transactions (#6210)
  • Return NO from requiresMainQueueSetup to avoid unnecessary dispatch_sync on the main queue during bridge init (#6202)

Dependencies

8.12.0

21 May 09:32

Choose a tag to compare

Features

  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination (#6090)
    • New ready prop. When a screen has multiple async data sources, mount one <TimeToFullDisplay ready={...} /> per source — TTID/TTFD is recorded only when every instance reports ready === true.
    • The existing record prop is unchanged BUT it is now deprecated in favor of ready.
  • Extract text content from children of touched components as a label fallback for touch breadcrumbs (#6106)
  • Auto-inject sentry-label from static text content at build time when annotateReactComponents is enabled (#6141)
  • Respect Replay Mask boundaries when reading sentry-label for touch breadcrumbs (#6142)
  • Add textComponentNames option to annotateReactComponents for custom text components (#6169)
  • Add first-class expoRouterIntegration() with auto-registration (#6189)
  • Expose addConsoleInstrumentationFilter from @sentry/core (#6180)
  • Expose experimental captureSurfaceViews option for Android Session Replay (#6175)
  • Add OTA SDK version to native sdk.packages when JS bundle version differs from built-in version (#6191)

Fixes

  • Deduplicate native HTTP breadcrumbs that duplicate JS XHR/fetch breadcrumbs (#6132)
  • Fix duplicate JS error reporting on iOS New Architecture when the native SDK is initialized early via sentry.options.json ("Capture App Start Errors"). It's done by applying the ExceptionsManager.reportException C++ wrapper filter in both init paths (#6145)
  • Fix boolean options from sentry.options.json being ignored on Android when using RNSentrySDK.init (#6130)
  • Fix includeWebFeedback: false Metro config option causing crash at startup (#6150)
  • Fix sentry-expo-upload-sourcemaps failing for projects with devEngines.packageManager set to non-npm managers (#6155)
  • Fix Metro serializer wrapper breaking getModulesRunBeforeMainModule for third-party plugins like react-native-worklets bundleMode (#6188)

Dependencies

8.11.1 (Stable)

11 May 14:46

Choose a tag to compare

Fixes

  • Fix iOS crash with AVAssetDownloadTask in urlSessionTask:setState: (#6133)

Dependencies

8.11.0

07 May 12:04

Choose a tag to compare

Warning

⚠️ Known Issue (iOS): Apps using sentry-react-native 8.10.0+ may crash when using AVAssetDownloadURLSession due to an issue in the sentry-cocoa SDK. Please use 8.11.1.

Features

  • Use accessibilityLabel, aria-label, and testID as fallback labels for touch breadcrumbs when sentry-label is not set (#6103)

Fixes

  • Fix the issue with uploading iOS Debug Symbols in EAS Build when using pnpm (#6076)
  • Improve frame delay collection performance by using sentry-java getFramesDelay API (#6074)

Dependencies

8.10.0

30 Apr 11:23

Choose a tag to compare

Warning

⚠️ Known Issue (iOS): Apps using sentry-react-native 8.10.0+ may crash when using AVAssetDownloadURLSession due to an issue in the sentry-cocoa SDK. Please use 8.11.1.

Features

  • Support SENTRY_RELEASE and SENTRY_DIST env vars in build scripts to override values in sentry.options.json at build time (#6070)
  • Add includeWebFeedback Metro config option to exclude @sentry-internal/feedback from the bundle (#6025)
  • Add rage tap detection — rapid consecutive taps on the same element emit ui.multiClick breadcrumbs and appear on the replay timeline with the rage click icon (#5992)

Fixes

  • Android build failure in expo-handler when Android SDK 31 is not installed by using safeExtGet for compileSdkVersion and minSdkVersion (#6061)
  • Stop the Hermes sampling profiler on React instance teardown to prevent pthread_kill SIGABRT when the JS thread is torn down with profiling active (#6035)
  • Restrict the URI scope of getDataFromUri on iOS and Android (#6045)
  • Restrict the Metro source-context middleware to files within the project root (#6044)
  • Escape name and version values when injecting release constants into the web bundle (#6044)
  • Mask the Sentry auth token in the sentry.gradle upload-task lifecycle log (#6057)
  • Discard invalid navigation/interaction transactions via an event processor instead of mutating the internal _sampled flag, removing misleading "dropped due to sampling" debug logs (#6051)

Dependencies