Skip to content

Releases

8.34.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 05 Nov 13:00

Features

  • Add JavaScript (Hermes) samples to UI profiles on Android 15 and newer (#6966)

    • When _experiments.profilingOptions is set, the SDK sends the Hermes samples as profile chunks of the native profiler session, so the profile of a transaction shows its JavaScript functions.
  • Report JS thread hangs as errors on iOS with the experimental enableJsHangTracking option (#6964)

    • App Hang tracking watches only the UI thread, so an infinite loop in JS sent no event. The new tracker sends an error event when the JS thread stays blocked for longer than jsHangTimeoutInterval (2 seconds by default).
    • With Hermes, the event contains the JS stack trace and the bundle Debug ID for source map symbolication.
    • The tracker does not run in development builds, where a paused JS debugger would look like a hang.
    Sentry.init({
      dsn: '__DSN__',
      enableJsHangTracking: true,
    });
  • Add longTaskIntegration to report JS thread long tasks as the react_native.long_task.duration metric, also outside of transactions (#6986)

    • It requires React Native 0.82 or newer on the New Architecture. Set minDurationMs (default 200) and sampleRate (default 1) to control what it reports.

Fixes

  • Detect expo/fetch in Expo Router apps on @expo/metro-runtime versions that hide it, so fetch tracing and fetch breadcrumbs are enabled by default (#6965)
  • Enable native logs on Android when enableLogs is set (#6967)
  • Honor <Sentry.Mask> in iOS error screenshots (#6974)

Dependencies

8.33.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 29 Oct 10:43

Changes

  • Compile the SDK to ES2018 to stop inlining TypeScript helpers (__awaiter, __rest) in every file, reducing bundle size (#6957)

Fixes

  • Apply screenshot masking options to Android error and feedback screenshots (#6930)
  • Persist fatal JS error envelopes to disk on Android before the process exits (#6937)
    • The hard-crash envelope was only queued on the transport thread, so the event was lost when React Native terminated the process right after. It is now written to the offline cache on the calling thread and sent on the next launch, matching iOS.
  • Place Session Replay network requests at the correct time in the replay timeline (#6959)
    • The network span timestamps came from a different clock than the breadcrumb timestamp. After the device slept or corrected its time, the two drifted apart and the replay timeline was stretched backwards by minutes, which showed an empty gap at the start and misplaced taps.
  • Support Expo Router 58 in expoRouterIntegration. Metro no longer warns about the removed expo-router/build/global-state/router-store module, and the integration creates navigation spans again (#6923)
  • Start the native iOS SDK from RNSentrySDK when sentry.options.json is missing or can't be parsed and the DSN is set in configureOptions (#6956)
    • The fallback options always failed to parse, so configureOptions never ran. Before 8.30.0 the app crashed at launch; since then the native SDK silently never started.
  • Don't crash the iOS app at launch when sentry.options.json contains "dsn": null (#6958)

Internal

  • Track sentryWebViewProps adoption via a feature marker (#6938)

Dependencies

8.32.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 22 Oct 11:56

Features

  • Connect React Native traces with embedded WebViews via sentryWebViewProps (#6794)

    import { sentryWebViewProps } from '@sentry/react-native';
    
    <WebView
      source={{ uri: 'https://example.com' }}
      {...sentryWebViewProps({ allowedHosts: ['example.com'] })}
    />

Fixes

  • Find ios/.xcode.env in the Expo plugin "Upload Debug Symbols to Sentry" phase when the iOS project uses Swift Package Manager instead of CocoaPods (#6911)
  • Fix HTTP timing listeners leaking on React Native below 0.83 and when expo/fetch is detected, and respect the enableHTTPTimings option (#6912)
  • Remove the @sentry/browser feedback modules and the server-only @sentry/core modules from native bundles built on Windows. Before this fix, includeWebFeedback: false made these bundles fail at launch (#6915)
  • Stop wrapping the SDK's own RNSentry module in turboModuleContextIntegration by default. Each wrapped call wrote to the native scope several times, which added CPU time to every SDK call on iOS (#6921)
    • To wrap RNSentry again, add { name: 'RNSentry' } to the modules option.
  • Start and stop the native UI profiler for _experiments.profilingOptions in both the trace and manual lifecycles, and export Sentry.profiler (#6916)
    • Before, the profiler ran only for the app start profile, because native tracing is off in React Native and no API controlled the profiler from JS.
    • The SDK adds the new uiProfilingIntegration by default when profilingOptions is set. If you set defaultIntegrations: false, add Sentry.uiProfilingIntegration() to integrations, because the SDK ignores profilingOptions without it.

Dependencies

8.31.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 15 Oct 12:59

Features

  • Add the applicationKey and moduleMetadata options to withSentryConfig and getSentryExpoConfig, and export thirdPartyErrorFilterIntegration (#6863)
    • Set the same key in applicationKey and in the filterKeys option of thirdPartyErrorFilterIntegration to filter errors from third-party code, for example browser extensions on Expo web.

Fixes

  • Attach the on-error Session Replay buffer to feedback submitted from the feedback form (#6870)
  • Do not mark sendDefaultPii as deprecated in the React Native options (#6864)
  • Fix duplicate HTTP breadcrumbs for requests with a query string or differently formatted URLs (#6881)
  • Include CPU and memory measurements in Android profiles (#6891)
  • Load ios/.xcode.env and ios/.xcode.env.local in the Expo plugin "Upload Debug Symbols to Sentry" phase before it runs Node, so the phase finds Node when Xcode starts from the Dock (#6861)

Dependencies

8.30.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 08 Oct 12:19

Features

  • Report the generation of the cellular network technology in device.connection_effective_type on Android and iOS, for example 4g or 5g (#6827)
    • On Android 11 and earlier, the app must have the READ_PHONE_STATE permission. The SDK does not request this permission.

Changes

  • Remove the undocumented maxTransactionDurationExceeded span attribute; use the deadline_exceeded span status to filter timed-out transactions instead (#6820)

Fixes

  • Preserve Hermes internal bytecode frames as non-application frames when rewriting Expo stack traces (#6848)

  • Fix stale turbo_module.* tags on Android native crashes (#6823)

  • Forward image attachments to Spotlight instead of stripping them from the envelope (#6818)

  • Don't crash the iOS app when Sentry is initialized with an invalid DSN (#6825)

  • Populate the Hermes runtime version on JS profiles instead of sending an empty value (#6817)

  • Mark @sentry/react-native as side-effect free so bundlers can tree-shake unused exports (#6829)

  • Resolve @sentry/react-native from the Android project directory in the Expo plugin build.gradle line, instead of the directory where Gradle started (#6840)

  • If beforeSendLog or another callback option is set, the app no longer crashes on iOS when the native SDK emits a log (#6847)

    Callback options are for the JavaScript layer only. The SDK now removes all of them before it starts the native SDK.

Dependencies

8.29.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 01 Oct 10:06

Features

  • Populate trace_ids in mobile replays so replays can be searched by trace ID (#6786)
  • Support React Native's Swift Package Manager integration (#6784)
    • The SDK now ships a Package.swift, so npx react-native spm picks it up through SwiftPM autolinking instead of failing with Package.swift is missing for library "@sentry/react-native".
    • Requires React Native 0.87 or newer, where SwiftPM support is an opt-in preview. CocoaPods remains the default and is unaffected.
    • iOS only. macOS, tvOS and visionOS keep building through CocoaPods.

Fixes

  • Don't start the AsyncExpiringMap cleanup interval at import time, and restart it after the map empties (#6811)
  • Prevent Sentry's iOS -force_load flag from being dropped when another pod sets OTHER_LDFLAGS[sdk=…] (#6801)
  • Fix Android build failing with cannot find symbol ReplayIntegration when sentry-android-replay is excluded (#6803)
  • Preserve already-quoted React Native bundle script paths in the Expo iOS plugin (#6796)
  • Register the session replay mask components through the iOS codegen component provider (#6810)
    • codegenConfig.ios.componentProvider now maps RNSentryReplayMask and RNSentryReplayUnmask to their view classes.
    • React Native resolves both components directly. It no longer falls back to the legacy interop layer for view managers, which an app can turn off with RCT_REMOVE_LEGACY_COMPONENT_INTEROP.
    • Both views now set typed default props. They no longer crash on mount through the provider.

Dependencies

8.28.0 (Stable)

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 24 Sep 09:25

Features

  • Expose enableNetworkBreadcrumbs (iOS) to disable native HTTP request breadcrumbs (#6764)
  • Expose enableNetworkEventBreadcrumbs (Android) to disable native network connectivity breadcrumbs (#6764)
  • Expose native breadcrumb off-switches: enableAutoBreadcrumbTracking (iOS); enableActivityLifecycleBreadcrumbs, enableAppLifecycleBreadcrumbs, enableSystemEventBreadcrumbs, enableAppComponentBreadcrumbs (Android) (#6768)
  • Expose reportAccessibilityIdentifier (iOS) to omit PII accessibility identifiers from the view hierarchy (#6771)
  • Expose enablePreWarmedAppStartTracing (iOS) to opt out of app-start tracing for pre-warmed starts (#6772)
  • Expose enableMetricKitRawPayload (iOS) to attach the raw MetricKit diagnostic payload to MetricKit events (#6772)

Fixes

  • Declare optional peer dependencies so imports resolve under strict and Plug'n'Play package managers (#6729)
  • Honor shutdownTimeout on iOS (#6749)
  • Android Gradle plugin no longer writes generated sentry.options.json into your source tree during builds (#6751)
  • Android Gradle plugin no longer writes generated modules.json into your source tree during release builds (#6753)
  • Fix Mac Catalyst linking the wrong Sentry.xcframework slice (#6758)
  • FeedbackForm prevents duplicate submissions and keeps the draft on error (#6769)

Internal

  • Export already-public option and configuration types from the entry point so their full shape is tracked in the API report (#6731)

Dependencies

8.27.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 17 Sep 10:55

Warning

iOS native crashes now set mechanism.synthetic, taking the mach/signal name out of the grouping hash. Expect a one-time regrouping as your app adopts this version.

Features

  • Add Session Replay runtime controls to start, stop, and manage recording manually (#6703)

    • Use Sentry.getReplay() to access the active replay and control it at runtime with the same API on iOS, Android, and Web:

      const replay = Sentry.getReplay();
      replay?.start(); // start recording a session replay
      replay?.startBuffering(); // start recording in buffering mode
      replay?.stop(); // stop recording
      replay?.pause(); // pause recording (no-op on Web)
      replay?.resume(); // resume a paused recording (no-op on Web)
      replay?.flush(); // flush the buffered replay to Sentry
  • Add per-class Session Replay masking via maskedViewClasses / unmaskedViewClasses on mobileReplayIntegration (#6725)

  • Add experimental avoidForegroundResumeHang (iOS) to mobileReplayIntegration to work around a fatal App Hang that can occur when Session Replay resumes capture on returning to the foreground with a heavy view hierarchy on screen (#6727)

Fixes

  • Prevent a fatal JavaCallback was already settled crash from getNewScreenTimeToDisplay under rapid navigation on Android (#6722)
  • Mask React Native <Image> in Session Replay on the iOS New Architecture when maskAllImages is enabled (#6726)
  • Background root spans (app-start, expo-updates) no longer overwrite the native propagation context of an active navigation trace (#6720)
  • Honor the host app's pinned ndkVersion on Android instead of letting AGP download its own default NDK for the module's native code (#6724)

Dependencies

8.26.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 10 Sep 11:04

Features

  • Sync JS scope propagation context to native scope (#6686)
    • Native HTTP spans (OkHttp on Android, URLSession on iOS) now automatically share the same trace_id as the active JS navigation transaction, linking them in the Sentry trace waterfall.
  • Expose the iOS enableMemoryIntrospection option to omit memory contents from native crash reports (#6547)
  • Add anrProfilingSampleRate option to profile ANRs on Android (#6673)

Fixes

  • Time to initial display is no longer understated on Android in optimized release builds (#6692)
  • Fix visionOS compilation (#6676)
  • A throwing beforeBreadcrumb now drops the breadcrumb, and a throwing tracesSampler now falls back to the configured tracesSampleRate (#6675)
  • Stop uploading on-error Session Replays for errors dropped by sampleRate (#6685)

Internal

  • Add visionOS sample app and CI tests (#6676)
  • Add tvOS sample app and CI tests (#6676)

Dependencies

8.25.0 (Stable)

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 03 Sep 11:37

Features

  • Copy app.vitals.start.screen and app.vitals.start.type onto standalone app.start children, including user spans under app.start.extended (#6631)
  • featureFlagsIntegration now forwards flag evaluations to the native SDKs, so flags are attached to native crashes too (#6613)

Fixes

  • Prevent silently dropped logs and spans on iOS with React Native >= 0.86 caused by an unreliable performance.timeOrigin (#6654)
  • Fix Metro bundler crash on Expo static/EAS Update exports (#6652)
  • No longer logs NSNull cannot be converted warnings on iOS with the New Architecture when clearing a scope context (#6651)
  • time_to_initial_display/time_to_full_display now measure the actual screen render for apps whose first navigation happens well after app start (#6626)

Internal

  • Resolve Metro from the app's project root when generating source maps (#6625)

Dependencies