Releases: getsentry/sentry-react-native
Release list
8.19.0
Features
-
Aggregate TurboModule call counts + latency per
(module, method, kind)and flush them on transaction finish and on a lazy periodic timer (#6377)Counters land on the finishing transaction as a synthetic
turbo_modules.aggregatechild span (per-call breakdown in span attributes) plus headline measurements on the root span (turbo_modules.call_count,turbo_modules.error_count,turbo_modules.total_ms,turbo_modules.top_module_ms). Long-running sessions without transactions emit a periodic info-level event (default every 30s, only when there's data).Sentry.init({ integrations: [ Sentry.turboModuleContextIntegration({ // optional knobs (defaults shown): enableAggregateStats: true, aggregateFlushIntervalMs: 30_000, ignoreTurboModules: ['RNSentry'], }), ], });
-
Add
Sentry.reportFullyDisplayed()imperative API for signaling Time to Full Display (#6419) -
Add
enableHistoricalTombstoneReportingoption to report historical tombstones from Android'sApplicationExitInfo(#6450)
Fixes
- Fix iOS time-to-initial-display fallback spans reporting a spurious
deadline_exceededstatus and inflated duration (#6438) - Fix
TypeErrorwhenshowFeedbackForm/showFeedbackButton/showScreenshotButtonis called beforeFeedbackFormProvidermounts (#6435) - Fix orphaned TTID/TTFD spans in the trace view (#6437)
- Fix iOS retain cycle in
RNSentryOnDrawReporterViewleaking TTID/TTFD reporter views and their frame-tracker listeners (#6449) - Fix
expoRouterIntegrationbailing out on cold start whenSentry.init()runs before Expo Router's Root Layout mounts β thestore.navigationRefcheck is now retried until both the ref and its.currentare populated (#6451) - Fix
reactNavigationIntegrationreading a stale route from an override provider (e.g.expoRouterIntegration), causing navigation transactions to be named/attributed for the previous route (#6458)
Internal
- Migrate iOS code from the deprecated
PrivateSentrySDKOnlySPI (andSentrySwizzle.hmacro) to the newSentrySDK.internalSwift API exposed by sentry-cocoa 9.19.0, via a thin in-pod ObjCβSwift bridge (#6380)
Dependencies
8.14.2
Fixes
- Fix iOS retain cycle in
RNSentryOnDrawReporterViewleaking TTID/TTFD reporter views and their frame-tracker listeners (#6449)
8.18.0
Features
- Add experimental
extendAppStart/finishExtendedAppStart/getExtendedAppStartSpanto extend the standalone app start window and instrument post-init work (#6392)
Changes
-
Consume
sentry-cocoaas a prebuilt xcframework by default on iOS (#6413)Warning
This may be a breaking change for some setups.
pod installnow downloadsSentry.xcframeworkfrom sentry-cocoa's GitHub release (SHA256-verified) and vendors it, instead of building Sentry from source as a CocoaPod. If your iOS build breaks after upgrading (e.g. when another pod also depends on theSentryCocoaPod), or if yourpod installenvironment cannot reachgithub.com, setSENTRY_USE_XCFRAMEWORK=0beforepod installto restore the previous source-build behavior.
Fixes
- Skip iOS source maps upload on
Debugbuilds (#6405)
Dependencies
8.18.0-alpha.3
Changes
-
Consume
sentry-cocoaas a prebuilt xcframework by default on iOS (#6381)Warning
This may be a breaking change for some setups.
pod installnow downloadsSentry.xcframeworkfrom sentry-cocoa's GitHub release (SHA256-verified) and vendors it, instead of building Sentry from source as a CocoaPod. If your iOS build breaks after upgrading (e.g. when another pod also depends on theSentryCocoaPod), or if yourpod installenvironment cannot reachgithub.com, setSENTRY_USE_XCFRAMEWORK=0beforepod installto restore the previous source-build behavior.
8.18.0-alpha.2
Changes
-
Consume
sentry-cocoaas a prebuilt xcframework by default on iOS (#6381)Warning
This may be a breaking change for some setups.
pod installnow downloadsSentry.xcframeworkfrom sentry-cocoa's GitHub release (SHA256-verified) and vendors it, instead of building Sentry from source as a CocoaPod. If your iOS build breaks after upgrading (e.g. when another pod also depends on theSentryCocoaPod), or if yourpod installenvironment cannot reachgithub.com, setSENTRY_USE_XCFRAMEWORK=0beforepod installto restore the previous source-build behavior.
8.18.0-alpha
Fixes
- Fix Android New Architecture build failing at CMake configure on React Native 0.75 by gating the
libsentry-tm-perf-logger.sonative build to RN 0.76+ (#6407)
8.17.2
Fixes
- Fix Android New Architecture build failing to link
libsentry-tm-perf-logger.sowith an undefinedTurboModulePerfLogger::enableLoggingsymbol on some setups (e.g. armeabi-v7a) (#6406) - Fix Android New Architecture build failing at CMake configure on React Native 0.75 by gating the
libsentry-tm-perf-logger.sonative build to RN 0.76+ (#6407)
8.17.1
Warning
sentry-react-native 8.17.1 can fail to build libsentry-tm-perf-logger.so (subset-ABI builds such as armeabi-v7a/Expo, and React Native 0.75) (#6398). Please use 8.17.2.
Fixes
- Force 16 KB ELF alignment for
libsentry-tm-perf-logger.soso it does not break 16 KB page size compatibility on Android 15+ (#6396)
8.17.0
Warning
sentry-react-native 8.17.0 bundle a native library (libsentry-tm-perf-logger.so) that is not 16 KB page aligned, which breaks 16 KB page size compatibility on Android 15+ (and fails Google Play's 16 KB requirement). See #6394.
Please use 8.17.1.
Features
-
Add experimental
enableStandaloneAppStartTracingto send app start as a standaloneapp.starttransaction (#6359) -
Set
app.vitals.start.screenon the standaloneapp.starttransaction from the current route (#6369) -
Expose top-level
Sentry.setAttributeandSentry.setAttributesAPIs (#6354). -
Add
enableTurboModuleTrackingopt-in experimental option to enable Turbo Module performance tracking in the New Architecture (#6307) -
Use the runtime's native
btoafor envelope base64 encoding when available, to improvecaptureEnvelopeperformance. Falls back to the bundled JS encoder ifbtoais missing (#6351). -
Opt-in build-time auto-wrap for Expo Router's per-route
ErrorBoundary(#6347)Enable
autoWrapExpoRouterErrorBoundary: trueingetSentryExpoConfig(orwithSentryConfig) and the Sentry Babel plugin rewritesexport { ErrorBoundary } from 'expo-router'into awrapExpoRouterErrorBoundarycall at build time β no route-file edits needed:// metro.config.js module.exports = getSentryExpoConfig(__dirname, { autoWrapExpoRouterErrorBoundary: true, });
Changes
- Default
mobileReplayIntegration({ networkCaptureBodies })totrue, matching the iOS and Android native SDK defaults (#6372)
Fixes
- Forward Session Replay network detail options to the native SDKs so network request and response bodies are displayed (#6373)
- The Sentry Babel transformer no longer injects
@sentry/babel-plugin-component-annotateunlessannotateReactComponentsis explicitly enabled (#6347)
Dependencies
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)