Skip to content

Releases: getsentry/sentry-react-native

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

8.3.0

05 Mar 12:47

Choose a tag to compare

Features

  • Add onNativeLog callback to intercept and forward native SDK logs to JavaScript console (#5622)
    • The callback receives native log events with level, component, and message properties
    • Only works when debug: true is enabled in Sentry.init
    • Use consoleSandbox inside the callback to prevent feedback loops with Sentry's console integration
      import * as Sentry from '@sentry/react-native';
      
      Sentry.init({
        debug: true,
        onNativeLog: ({ level, component, message }) => {
          // Use consoleSandbox to avoid feedback loops
          Sentry.consoleSandbox(() => {
            console.log(
              `[Sentry Native] [${level.toUpperCase()}] [${component}] ${message}`
            );
          });
        }
      });
  • Add expo constants on event context (#5748)
  • Capture dynamic route params as span attributes for Expo Router navigations (#5750)
  • EAS Build Hooks (#5666)
    • Capture EAS build events in Sentry. Add the following to your package.json:
      {
        "scripts": {
          "eas-build-on-complete": "sentry-eas-build-on-complete"
        }
      }
      Set SENTRY_DSN in your EAS secrets, and optionally SENTRY_EAS_BUILD_CAPTURE_SUCCESS=true to also capture successful builds.

Fixes

  • App start data not attached to sampled transactions when preceded by unsampled transactions (#5756)
  • Resolve relative SOURCEMAP_FILE paths against the project root in the Xcode build script (#5730)
  • Fixes the issue with unit mismatch in adjustTransactionDuration (#5740)
  • Handle inactive state for spans (#5742)

Dependencies

8.2.0 (Stable)

26 Feb 12:51

Choose a tag to compare

Fixes

  • Fix AGP Artifacts API conflict caused by eager task realization in sentry.gradle (#5714)
  • Fix Android crash on app launch caused by version mismatch between Sentry Android SDK and Sentry Android Gradle Plugin (#5726)

Dependencies

8.1.0

19 Feb 10:57

Choose a tag to compare

Features

  • Add enableTombstone option for improved native crash reporting on Android 12+ (#5680)
    • When enabled, uses Android's ApplicationExitInfo.REASON_CRASH_NATIVE to capture native crashes with more detailed thread information
    import * as Sentry from '@sentry/react-native';
    
    Sentry.init({
      dsn: 'YOUR_DSN',
      enableTombstone: true,
    });
  • Expose iOS options to ignore views from subtree traversal in version 8 (#5663)
    • Use includedViewClasses to only traverse specific view classes, or excludedViewClasses to skip problematic view classes during session replay and screenshot capture
    import * as Sentry from '@sentry/react-native';
    
    Sentry.init({
      replaysSessionSampleRate: 1.0,
      integrations: [
        Sentry.mobileReplayIntegration({
          includedViewClasses: ['UILabel', 'UIView', 'MyCustomView'],
          excludedViewClasses: ['WKWebView', 'UIWebView'],
        }),
      ],
    });

Fixes

  • Fix race condition where iOS dSYM upload runs before debug symbols are fully generated (#5653)

Dependencies