@sentry/react-native
Advanced tools
Changelog
6.9.0
User Feedback Widget Beta (#4435)
To collect user feedback from inside your application call Sentry.showFeedbackWidget()
.
import Sentry from "@sentry/react-native";
Sentry.showFeedbackWidget();
Sentry.wrap(RootComponent);
To change the default options add Sentry.feedbackIntegration()
.
import Sentry from "@sentry/react-native";
import * as ImagePicker from 'expo-image-picker';
Sentry.init({
integrations: [
Sentry.feedbackIntegration({
imagePicker: ImagePicker,
showName: true,
showEmail: true,
}),
],
});
To learn more about the available configuration options visit the documentation.
Changelog
6.8.0
[!WARNING] This release contains an issue where Cold starts can be incorrectly reported as Warm starts on Android. We recommend staying on version 6.4.0 if you use this feature on Android. See issue #4598 for more details.
Adds Sentry Android Gradle Plugin as an experimental Expo plugin feature (#4440)
To enable the plugin add the enableAndroidGradlePlugin
in the @sentry/react-native/expo
of the Expo application configuration.
"plugins": [
[
"@sentry/react-native/expo",
{
"experimental_android": {
"enableAndroidGradlePlugin": true,
}
}
],
To learn more about the available configuration options visit the documentation.
error:
prefix from collect-modules.sh
to avoid failing iOS builds (#4570)Sentry.setUser(null)
doesn't crash on iOS with RN 0.77.1 (#4567)tslib
in Sentry Metro Plugin (#4573)Changelog
6.7.0
[!WARNING] This release contains an issue where Cold starts can be incorrectly reported as Warm starts on Android. We recommend staying on version 6.4.0 if you use this feature on Android. See issue #4598 for more details.
Add ignoredComponents
option to annotateReactComponents
to exclude specific components from React component annotations (#4517)
// metro.config.js
// for React Native
const config = withSentryConfig(mergedConfig, {
annotateReactComponents: {
ignoredComponents: ['MyCustomComponent']
}
});
// for Expo
const config = getSentryExpoConfig(__dirname, {
annotateReactComponents: {
ignoredComponents: ['MyCustomComponent'],
},
});
Changelog
6.6.0
makeDsn
from core
to extract the URL from DSN avoiding unimplemented URL.protocol
errors (#4395)navigation.processing
span to more expressive Navigation dispatch to screen A mounted/navigation cancelled
(#4423)sdk.packages
for Cocoa (#4381)RNSentryTimeToDisplay
during native module init
on iOS (#4443)Changelog
6.5.0
Mobile Session Replay is now generally available and ready for production use (#4384)
To learn about privacy, custom masking or performance overhead visit the documentation.
import * as Sentry from '@sentry/react-native';
Sentry.init({
replaysSessionSampleRate: 1.0,
replaysOnErrorSampleRate: 1.0,
integrations: [
Sentry.mobileReplayIntegration({
maskAllImages: true,
maskAllVectors: true,
maskAllText: true,
}),
],
});
Adds new captureFeedback
and deprecates the captureUserFeedback
API (#4320)
import * as Sentry from "@sentry/react-native";
const eventId = Sentry.lastEventId();
Sentry.captureFeedback({
name: "John Doe",
email: "john@doe.com",
message: "Hello World!",
associatedEventId: eventId, // optional
});
To learn how to attach context data to the feedback visit the documentation.
Export Span
type from @sentry/types
(#4345)
Add RN SDK package to sdk.packages
on Android (#4380)
lastEventId
export from @sentry/core
(#4315)sentry-expo-upload-sourcemaps
(#4332)options.environment
(empty string, undefined...) default to production
_experiments.replaysSessionSampleRate
and _experiments.replaysOnErrorSampleRate
use replaysSessionSampleRate
and replaysOnErrorSampleRate
(#4384)Changelog
6.4.0
Add Replay Custom Masking for iOS, Android and Web (#4224, #4265, #4272, #4314)
import * as Sentry from '@sentry/react-native';
const Example = () => {
return (
<View>
<Sentry.Mask>
<Text>${"All children of Sentry.Mask will be masked."}</Text>
</Sentry.Mask>
<Sentry.Unmask>
<Text>${"Only direct children of Sentry.Unmask will be unmasked."}</Text>
</Sentry.Unmask>
</View>
);
};
Changelog
6.4.0-beta.1
Add Replay Custom Masking for iOS, Android and Web (#4224, #4265, #4272, #4314)
import * as Sentry from '@sentry/react-native';
const Example = () => {
return (
<View>
<Sentry.Mask>
<Text>${"All children of Sentry.Mask will be masked."}</Text>
</Sentry.Mask>
<Sentry.Unmask>
<Text>${"Only direct children of Sentry.Unmask will be unmasked."}</Text>
</Sentry.Unmask>
</View>
);
};