Skip to content

Releases: getsentry/sentry-react-native

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. Until a fix is released, pin sentry-react-native to 8.9.2 (sentry-cocoa 9.11.0). Follow #7886 for updates.

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. Until a fix is released, pin sentry-react-native to 8.9.2 (sentry-cocoa 9.11.0). Follow #7886 for updates.

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

8.9.2

27 Apr 10:55

Choose a tag to compare

Fixes

  • Restore executable bit on shell scripts in the published tarball, fixing Permission denied on iOS build (#6049)
  • Restore EAS build hook bin scripts (sentry-eas-build-on-{success,error,complete}) missing from the published tarball (#6049)

8.9.1

23 Apr 15:56

Choose a tag to compare

Features

  • Add new @sentry/expo-upload-sourcemaps package for uploading JavaScript bundles and source maps from Expo builds to Sentry (#6027)
    • The existing sentry-expo-upload-sourcemaps bin bundled with @sentry/react-native is superseded by the new package; it continues to work unchanged for now
  • Expose scope-level attributes API (setAttribute, setAttributes, removeAttribute) bridging to native SDKs (#6009)
  • Expose screenshot masking options (screenshot.maskAllText, screenshot.maskAllImages, screenshot.maskedViewClasses, screenshot.unmaskedViewClasses) for error screenshots (#6007)
  • Warn Expo users at Metro startup when prebuilt native projects are missing Sentry configuration (#5984)
  • Re-export AI SDK manual instrumentation helpers (instrumentOpenAiClient, instrumentAnthropicAiClient, instrumentGoogleGenAIClient, createLangChainCallbackHandler, instrumentLangGraph, instrumentStateGraphCompile) for use in React Native apps (#6028)
  • Add Sentry.GlobalErrorBoundary component (and withGlobalErrorBoundary HOC) that renders a fallback UI for fatal non-rendering JS errors routed through ErrorUtils in addition to the render-phase errors caught by Sentry.ErrorBoundary. Opt-in flags includeNonFatalGlobalErrors and includeUnhandledRejections extend the fallback to non-fatal errors and unhandled promise rejections respectively. (#6023)

Fixes

  • Fix @sentry/expo-upload-sourcemaps publishing issue (#6037)
  • Fix iOS UI profiling options being silently ignored (#6012)
  • Fix _experiments.enableUnhandledCPPExceptionsV2 being silently ignored on iOS (#6014)
  • Check captureReplay return value in iOS bridge to avoid linking error events to uncaptured replays (#6008)
  • Report the expected properties file path and any missing keys when using flavorAware on Android, instead of failing with an opaque Illegal null value provided in this collection error (#6031)

Dependencies

8.9.0

23 Apr 12:15

Choose a tag to compare

8.9.0 Pre-release
Pre-release

Warning

This release has a broken workspace-protocol dependency and cannot be installed; use 8.9.1

Features

  • Add new @sentry/expo-upload-sourcemaps package for uploading JavaScript bundles and source maps from Expo builds to Sentry (#6027)
    • The existing sentry-expo-upload-sourcemaps bin bundled with @sentry/react-native is superseded by the new package; it continues to work unchanged for now
  • Expose scope-level attributes API (setAttribute, setAttributes, removeAttribute) bridging to native SDKs (#6009)
  • Expose screenshot masking options (screenshot.maskAllText, screenshot.maskAllImages, screenshot.maskedViewClasses, screenshot.unmaskedViewClasses) for error screenshots (#6007)
  • Warn Expo users at Metro startup when prebuilt native projects are missing Sentry configuration (#5984)
  • Re-export AI SDK manual instrumentation helpers (instrumentOpenAiClient, instrumentAnthropicAiClient, instrumentGoogleGenAIClient, createLangChainCallbackHandler, instrumentLangGraph, instrumentStateGraphCompile) for use in React Native apps (#6028)
  • Add Sentry.GlobalErrorBoundary component (and withGlobalErrorBoundary HOC) that renders a fallback UI for fatal non-rendering JS errors routed through ErrorUtils in addition to the render-phase errors caught by Sentry.ErrorBoundary. Opt-in flags includeNonFatalGlobalErrors and includeUnhandledRejections extend the fallback to non-fatal errors and unhandled promise rejections respectively. (#6023)

Fixes

  • Fix iOS UI profiling options being silently ignored (#6012)
  • Fix _experiments.enableUnhandledCPPExceptionsV2 being silently ignored on iOS (#6014)
  • Check captureReplay return value in iOS bridge to avoid linking error events to uncaptured replays (#6008)
  • Report the expected properties file path and any missing keys when using flavorAware on Android, instead of failing with an opaque Illegal null value provided in this collection error (#6031)

Dependencies

8.8.0

16 Apr 13:20

Choose a tag to compare

Features

  • Enable "Open Sentry" button in Playground for Expo apps (#5947)
  • Add attachAllThreads option to attach full stack traces for all threads to captured events on iOS (#5960)
  • Add strictTraceContinuation and orgId options for trace continuation validation (#5829)
  • Add deeplinkIntegration for automatic deep link breadcrumbs (#5983)
  • Name navigation spans using dispatched action payload when useDispatchedActionData is enabled (#5982)

Fixes

  • Fix sourcemap upload script failing when withSentry is used programmatically in app.config.ts (#6006)
  • Retry native module resolution to prevent silent event drops in production Hermes builds (#5981)
  • Lazy-load Metro internal modules to prevent Expo 55 import errors (#5958)
  • Fix app start transaction profile offset by using the actual profiling start timestamp instead of the adjusted app start time (#5962)
  • Use React componentStack as fallback when error has no stack trace on Android (#5965)
  • Add SENTRY_PROJECT_ROOT env var to override project root in Xcode build phase scripts for monorepo setups (#5961)

Dependencies

8.7.0

02 Apr 10:07

Choose a tag to compare

Features

  • Add Sentry.appLoaded() API to explicitly signal app start end (#5940)
  • Add frames.delay span data from native SDKs to app start, TTID/TTFD, and JS API spans (#5907)
  • Rename FeedbackWidget to FeedbackForm and showFeedbackWidget to showFeedbackForm (#5931)
    • The old names are deprecated but still work
  • Deprecate FeedbackButton, showFeedbackButton, and hideFeedbackButton (#5933)

Fixes

  • Fix inflated http.client span durations on iOS when the app backgrounds during a request (#5944)
  • Fix crash caused by nullish response in supabase PostgREST handler (#5938)
  • Fix iOS crash (EXC_BAD_ACCESS) in time-to-initial-display when navigating between screens (#5887)

Dependencies

8.6.0

26 Mar 12:54

Choose a tag to compare

Fixes

  • Session replay will no longer start recording when an event was ignored or dropped. (#5885)
  • Capture native exceptions consumed by Expo's bridgeless error handling on Android (#5871)
  • Fix SIGABRT crash on launch when mobileReplayIntegration is not configured and iOS deployment target >= 16.0 (#5858)
  • Reduce reactNavigationIntegration performance overhead (#5840, #5842, #5849)
  • Fix duplicated breadcrumbs on Android (#5841)

Dependencies

8.5.0

19 Mar 14:40

Choose a tag to compare

Features

  • Support SENTRY_ENVIRONMENT in bare React Native builds (#5823)
  • Add expoUpdatesListenerIntegration that records breadcrumbs for Expo Updates lifecycle events (#5795)
    • Tracks update checks, downloads, errors, rollbacks, and restarts as expo.updates breadcrumbs
    • Enabled by default in Expo apps (requires expo-updates to be installed)
  • feat(android): Expose enableAnrFingerprinting option (#5838)
  • Show feedback widget on device shake (#5754)
    • Use Sentry.enableFeedbackOnShake() / Sentry.disableFeedbackOnShake() or set feedbackIntegration({ enableShakeToReport: true })

Fixes

  • Fix native frames measurements being dropped due to race condition (#5813)
  • Fix app start data lost when first navigation transaction is discarded (#5833)

Dependencies

8.4.0

12 Mar 16:36

Choose a tag to compare

Fixes

  • Pass screenshotStrategy option from mobileReplayIntegration to the Android native SDK (#5808)

Features

  • Add wrapExpoImage and wrapExpoAsset for Expo performance monitoring (#5427)
    • wrapExpoImage instruments Image.prefetch and Image.loadAsync from expo-image
    • wrapExpoAsset instruments Asset.loadAsync from expo-asset
    import { Image } from 'expo-image';
    import { Asset } from 'expo-asset';
    import * as Sentry from '@sentry/react-native';
    
    Sentry.wrapExpoImage(Image);
    Sentry.wrapExpoAsset(Asset);
  • Adds tags with Expo Updates context variables to make them searchable and filterable (#5788)
  • Automatically capture a warning event when Expo Updates performs an emergency launch (#5794)
  • Adds environment configuration in the Expo config plugin. This can be set with the SENTRY_ENVIRONMENT env variable or in sentry.options.json (#5796)
    ["@sentry/react-native/expo", {
      "useNativeInit": true,
      "options": {
        "environment": "staging"
      }
    }]
  • Generate sentry.options.json from the Expo config plugin options property (#5804)
    ["@sentry/react-native/expo", {
      "useNativeInit": true,
      "options": {
        "dsn": "https://key@sentry.io/123",
        "tracesSampleRate": 1.0
      }
    }]

Fixes

  • Defer initial navigation span creation until navigation container is registered (#5789)
  • Exclude server-only AI/MCP modules from native bundles, reducing bundle size by ~150kb (#5802)

Dependencies