Releases: getsentry/sentry-react-native
8.16.0
Features
-
Capture errors that hit Expo Router's per-route
ErrorBoundary(#6318)Wrap the boundary with
Sentry.wrapExpoRouterErrorBoundaryin 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 behindsendDefaultPii.
Fixes
- Fix fatal
NSInvalidArgumentExceptioncrash inRNSentryReplayBreadcrumbConverterwhen a touch breadcrumb path contains a non-dictionary element (#6346) - Apply
SENTRY_ENVIRONMENT,SENTRY_RELEASEandSENTRY_DISTbuild-time overrides to the JS bundled options to match the native SDKs (#6330) - Fix user
geobeing dropped from the native scope by forwarding it as a structured object instead of a JSON string (#6309) - Remove unused
React/RCTTextView.himport 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
dataCollectionoption until it is fully supported in React Native. It is exposed by@sentry/corebut is not yet honored by the native SDKs (iOS/Android) nor by the RN-specificsendDefaultPiigates, so setting it would silently have no effect. UsesendDefaultPiiinstead. (#6345)
Dependencies
8.14.1
8.15.1
8.15.0
Features
- Add
nativeStackAndroidsupport toNativeLinkedErrors, 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
mobileReplayIntegrationwithnetworkDetailAllowUrlsto capture headers; setnetworkCaptureBodies: trueto also capture bodies. Other options:networkDetailDenyUrls,networkRequestHeaders,networkResponseHeaders. Authorization-like headers are always stripped, bodies are capped at ~150 KB. Covers XHR-based clients likeaxios; 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
ClassCastExceptionwhen syncing breadcrumbs with a numeric timestamp to the native scope (#6308)
Dependencies
8.14.0
Features
- Correlate deep links with the navigation transaction they trigger. The next idle navigation span started within
routeChangeTimeoutMsof a deep link arrival is tagged withnavigation.trigger: 'deeplink',deeplink.url(sanitized, respectssendDefaultPii), anddeeplink.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 ourgetInitialURL()chain resolves (#6264) - Add memory, CPU, and frame measurements to Android profiling (#6250)
- Add
enableAutoConsoleLogsoption to opt out of automaticconsole.*capture while keepingenableLogs: truefor manualSentry.logger.*calls (#6235) - Instrument Expo Router
push,replace,navigate,back, anddismiss(in addition toprefetch) with breadcrumbs and spans, and tag the resulting idle navigation span with the initiatingnavigation.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 behindsendDefaultPii. WhensendDefaultPiiis off (the default), prefetch spans for string hrefs useroute.name: 'unknown'and omitroute.href. Templated object hrefs (e.g.{ pathname: '/users/[id]' }) are unaffected.
- Note: Expo Router span/breadcrumb attributes that may contain user identifiers (
- Warn when Gradle resolves
sentry-androidto 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.methodtags (#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/fetchis active (#6226) - Resolve
sentry-cliin isolated dependency layouts (#6242)
Internal
- Convert
sentry.gradleto Kotlin DSL (sentry.gradle.kts) (#6119)- The old
sentry.gradleis kept as a shim forwarding to the new.ktsfile for backward compatibility
- The old
Dependencies
8.13.0
Features
- Add breadcrumbs for dispatched React Navigation events (#6218)
- Add
Sentry.NavigationContainerdrop-in wrapper for React Navigation (#6199) - Opt-in: consume sentry-cocoa via Swift Package Manager. Set
SENTRY_USE_SPM=1beforepod installto pullSentryfrom sentry-cocoa's SPM package as a binary xcframework instead of the CocoaPods source build (#6182) - Add
disableAutoUploadoption to Expo plugin to disable source map and debug symbol uploads (#6195) - Expose
pauseAppHangTrackingandresumeAppHangTrackingAPIs 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
NOfromrequiresMainQueueSetupto avoid unnecessarydispatch_syncon the main queue during bridge init (#6202)
Dependencies
8.12.0
Features
- Multi-instance
<TimeToInitialDisplay>/<TimeToFullDisplay>coordination (#6090)- New
readyprop. When a screen has multiple async data sources, mount one<TimeToFullDisplay ready={...} />per source — TTID/TTFD is recorded only when every instance reportsready === true. - The existing
recordprop is unchanged BUT it is now deprecated in favor ofready.
- New
- Extract text content from children of touched components as a label fallback for touch breadcrumbs (#6106)
- Auto-inject
sentry-labelfrom static text content at build time whenannotateReactComponentsis enabled (#6141) - Respect Replay Mask boundaries when reading
sentry-labelfor touch breadcrumbs (#6142) - Add
textComponentNamesoption toannotateReactComponentsfor custom text components (#6169) - Add first-class
expoRouterIntegration()with auto-registration (#6189) - Expose
addConsoleInstrumentationFilterfrom@sentry/core(#6180) - Expose experimental
captureSurfaceViewsoption for Android Session Replay (#6175) - Add OTA SDK version to native
sdk.packageswhen 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 theExceptionsManager.reportExceptionC++ wrapper filter in both init paths (#6145) - Fix boolean options from
sentry.options.jsonbeing ignored on Android when usingRNSentrySDK.init(#6130) - Fix
includeWebFeedback: falseMetro config option causing crash at startup (#6150) - Fix
sentry-expo-upload-sourcemapsfailing for projects withdevEngines.packageManagerset to non-npm managers (#6155) - Fix Metro serializer wrapper breaking
getModulesRunBeforeMainModulefor third-party plugins likereact-native-workletsbundleMode(#6188)
Dependencies
8.11.1 (Stable)
8.11.0
Warning
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, andtestIDas fallback labels for touch breadcrumbs whensentry-labelis 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
getFramesDelayAPI (#6074)
Dependencies
8.10.0
Warning
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_RELEASEandSENTRY_DISTenv vars in build scripts to override values insentry.options.jsonat build time (#6070) - Add
includeWebFeedbackMetro config option to exclude@sentry-internal/feedbackfrom the bundle (#6025) - Add rage tap detection — rapid consecutive taps on the same element emit
ui.multiClickbreadcrumbs and appear on the replay timeline with the rage click icon (#5992)
Fixes
- Android build failure in
expo-handlerwhen Android SDK 31 is not installed by usingsafeExtGetforcompileSdkVersionandminSdkVersion(#6061) - Stop the Hermes sampling profiler on React instance teardown to prevent
pthread_killSIGABRT when the JS thread is torn down with profiling active (#6035) - Restrict the URI scope of
getDataFromUrion iOS and Android (#6045) - Restrict the Metro source-context middleware to files within the project root (#6044)
- Escape
nameandversionvalues when injecting release constants into the web bundle (#6044) - Mask the Sentry auth token in the
sentry.gradleupload-task lifecycle log (#6057) - Discard invalid navigation/interaction transactions via an event processor instead of mutating the internal
_sampledflag, removing misleading "dropped due to sampling" debug logs (#6051)