Releases: getsentry/sentry-react-native
6.3.0
Features
-
Add support for
.env.sentry-build-plugin
(#4281)Don't commit the file to your repository. Use it to set your Sentry Auth Token.
SENTRY_AUTH_TOKEN=your_token_here
-
Add Sentry Metro Server Source Context middleware (#4287)
This enables the SDK to add source context to locally symbolicated events using the Metro Development Server.
The middleware can be disabled inmetro.config.js
using theenableSourceContextInDevelopment
option.// Expo const { getSentryExpoConfig } = require('@sentry/react-native/metro'); const config = getSentryExpoConfig(__dirname, { enableSourceContextInDevelopment: false, }); // React Native const { withSentryConfig } = require('@sentry/react-native/metro'); module.exports = withSentryConfig(config, { enableSourceContextInDevelopment: false, });
Fixes
- Prevents exception capture context from being overwritten by native scope sync (#4124)
- Excludes Dev Server and Sentry Dsn requests from Breadcrumbs (#4240)
- Skips development server spans (#4271)
- Execute
DebugSymbolicator
afterRewriteFrames
to avoid overwrites by default (#4285)- If custom
RewriteFrames
is provided the order changes
- If custom
browserReplayIntegration
is no longer included by default on React Native Web (#4270)- Remove
.sentry
tmp directory and use environmental variables instead to save default Babel transformer path (#4298)- This resolves concurrency issues when running multiple bundle processes
Dependencies
6.3.0-beta.2
6.3.0-beta.1
Features
-
Add support for
.env.sentry-build-plugin
(#4281)Don't commit the file to your repository. Use it to set your Sentry Auth Token.
SENTRY_AUTH_TOKEN=your_token_here
-
Add Sentry Metro Server Source Context middleware (#4287)
This enables the SDK to add source context to locally symbolicated events using the Metro Development Server.
The middleware can be disabled inmetro.config.js
using theenableSourceContextInDevelopment
option.// Expo const { getSentryExpoConfig } = require('@sentry/react-native/metro'); const config = getSentryExpoConfig(__dirname, { enableSourceContextInDevelopment: false, }); // React Native const { withSentryConfig } = require('@sentry/react-native/metro'); module.exports = withSentryConfig(config, { enableSourceContextInDevelopment: false, });
Fixes
- Prevents exception capture context from being overwritten by native scope sync (#4124)
- Excludes Dev Server and Sentry Dsn requests from Breadcrumbs (#4240)
- Skips development server spans (#4271)
- Execute
DebugSymbolicator
afterRewriteFrames
to avoid overwrites by default (#4285)- If custom
RewriteFrames
is provided the order changes
- If custom
browserReplayIntegration
is no longer included by default on React Native Web (#4270)
Dependencies
6.2.0
Features
-
Enables Spotlight in Android and iOS SDKs (#4211)
-
Add env flag
SENTRY_DISABLE_NATIVE_DEBUG_UPLOAD
to allow disabling the debug file upload (#4223)How to use in Android project? It works by default, just set
export SENTRY_DISABLE_NATIVE_DEBUG_UPLOAD=true
in your build environment. For Sentry Android Gradle Plugin add the following to yourandroid/app/build.gradle
.apply from: "../../../sentry.gradle" sentry { autoUploadProguardMapping = shouldSentryAutoUpload() uploadNativeSymbols = shouldSentryAutoUpload() }
How to use in Xcode? Make sure you are using
scripts/sentry-xcode.sh
andscripts/sentry-xcode-debug-files.sh
in your
build phases. And add the following to yourios/.xcode.env.local
file.export SENTRY_DISABLE_NATIVE_DEBUG_UPLOAD=true
Fixes
- Ignore JavascriptException to filter out obfuscated duplicate JS Errors on Android (#4232)
- Skips ignoring require cycle logs for RN 0.70 or newer (#4214)
- Enhanced accuracy of time-to-display spans. (#4189)
- Fix Replay redacting of RN Classes on iOS (#4243)
- Speed up getBinaryImages for finishing transactions and capturing events (#4194)
- Remove duplicate HTTP Client Errors on iOS (#4250)
- Replay
maskAll*
set tofalse
on iOS kept all masked (#4257) - Add missing
getRootSpan
,withActiveSpan
andsuppressTracing
exports from@sentry/core
, andSeverityLevel
export from@sentry/types
(#4254, #4260)
Dependencies
5.35.0
Fixes
- Enhanced accuracy of time-to-display spans. (#4042)
- TimeToDisplay correctly warns about not supporting the new React Native architecture (#4160)
- Native Wrapper method
setContext
ensures only values convertible to NativeMap are passed (#4168) - Native Wrapper method
setExtra
ensures only stringified values are passed (#4168) setContext('key', null)
removes the key value also from platform context (#4168)
6.1.0 (Stable)
5.35.0-beta.0
Fixes
- Enhanced accuracy of time-to-display spans. (#4042)
- TimeToDisplay correctly warns about not supporting the new React Native architecture (#4160)
- Native Wrapper method
setContext
ensures only values convertible to NativeMap are passed (#4168) - Native Wrapper method
setExtra
ensures only stringified values are passed (#4168) setContext('key', null)
removes the key value also from platform context (#4168)
6.0.0
This is a new major version 6.0.0 of the Sentry React Native SDK.
To upgrade from the SDK version 5, please follow our migration guide.
Major Changes
-
React Native Tracing options were moved to the root options
import * as Sentry from '@sentry/react-native' Sentry.init({ tracesSampleRate: 1.0, enableAppStartTracking: true, // default true enableNativeFramesTracking: true, // default true enableStallTracking: true, // default true enableUserInteractionTracing: true, // default false integrations: [ Sentry.reactNativeTracingIntegration({ beforeStartSpan: (startSpanOptions) => { startSpanOptions.name = 'New Name'; return startSpanOptions; }, }), Sentry.appStartIntegration({ standalone: false, // default false }), ], });
-
New React Navigation Integration interface (#4003)
import * as Sentry from '@sentry/react-native'; import { NavigationContainer } from '@react-navigation/native'; const reactNavigationIntegration = Sentry.reactNavigationIntegration(); Sentry.init({ tracesSampleRate: 1.0, integrations: [reactNavigationIntegration], }); function RootComponent() { const navigation = React.useRef(null); return <NavigationContainer ref={navigation} onReady={() => { reactNavigationIntegration.registerNavigationContainer(navigation); }}> </NavigationContainer>; }
-
Removed
beforeNavigate
usebeforeStartSpan
instead (#3998)beforeStartSpan
is executed before the span start, compared tobeforeNavigate
which was executed before the navigation ended (after the span was created)
Other Changes
-
Add
sentry.origin
to SDK spans to indicated if spans are created by a part of the SDK or manually (#4066) -
Xcode Debug Files upload completes in foreground by default (#4090)
-
Set
parentSpanIsAlwaysRootSpan
totrue
to make parent of network requests predictable (#4084) -
Remove deprecated
enableSpotlight
andspotlightSidecarUrl
(#4086) -
tracePropagationTargets
defaults to all targets on mobile and same origin on the web (#4083) -
Move
_experiments.profilesSampleRate
toprofilesSampleRate
root options object #3851) -
Native Frames uses
spanId
to attach frames replacingtraceId
(#4030) -
Removed deprecated ReactNativeTracing option
idleTimeout
useidleTimeoutMs
instead (#3998) -
Removed deprecated ReactNativeTracing option
maxTransactionDuration
usefinalTimeoutMs
instead (#3998) -
New Native Frames Integration (#3996)
-
New Stall Tracking Integration (#3997)
-
New User Interaction Tracing Integration (#3999)
-
New App Start Integration (#3852)
- By default app start spans are attached to the first created transaction.
- Standalone mode creates single root span (transaction) including only app start data.
-
New React Native Navigation Integration interface (#4003)
import * as Sentry from '@sentry/react-native'; import { Navigation } from 'react-native-navigation'; Sentry.init({ tracesSampleRate: 1.0, integrations: [ Sentry.reactNativeNavigationIntegration({ navigation: Navigation }) ], });
Fixes
- TimeToDisplay correctly warns about not supporting the new React Native architecture (#4160)
- Native Wrapper method
setContext
ensures only values convertible to NativeMap are passed (#4168) - Native Wrapper method
setExtra
ensures only stringified values are passed (#4168) setContext('key', null)
removes the key value also from platform context (#4168)- Upload source maps for all splits on Android (not only the last found) (#4125)