Migrate from sentry-expo
Experimental Support
Expo support is currently experimental and available since version 5.16.0-alpha.4
.
Experimental support means it may have bugs. We recognize the irony.
This guide scribes how to migrate from sentry-expo
to @sentry/react-native
in your Expo application.
First, remove sentry-expo
from your dependencies:
npm uninstall sentry-expo
Install the @sentry/react-native
package:
npx expo install @sentry/react-native
Replace all imports of sentry-expo
with @sentry/react-native
:
- import * as Sentry from 'sentry-expo';
+ import * as Sentry from '@sentry/react-native';
Replace sentry-expo
exports Browser
and React
with @sentry/react
:
- import { Browser, React } from 'sentry-expo';
+ import * as Browser from '@sentry/react';
+ import * as React from '@sentry/react';
Replace sentry-expo
export Native
with @sentry/react-native
:
- import { Native } from 'sentry-expo';
+ import * as Sentry from '@sentry/react-native';
The enableInExpoDevelopment
option is no longer supported. If you were using it, remove it and replace it with a __DEV__
check, or leave the SDK enabled in development.
Sentry.init({
- enableInExpoDevelopment: true,
+ enabled: __DEV__,
});
Expo-specific tags are no longer added by default. If you were using them, you can add them manually:
import Constants from "expo-constants";
import * as Device from "expo-device";
import * as Updates from "expo-updates";
import * as Sentry from "@sentry/react-native";
Sentry.setExtras({
manifest,
deviceYearClass: Device.deviceYearClass,
linkingUri: Constants.linkingUri,
});
Sentry.setTag("expoReleaseChannel", Updates.manifest.releaseChannel);
Sentry.setTag("appVersion", Updates.manifest.version);
Sentry.setTag("appPublishedTime", Updates.manifest.publishedTime);
Sentry.setTag("expoSdkVersion", Updates.manifest.sdkVersion);
Sentry.setTag("deviceId", Constants.sessionId);
Sentry.setTag("appOwnership", Constants.appOwnership || "N/A");
if (Constants.appOwnership === "expo" && Constants.expoVersion) {
setTag("expoAppVersion", Constants.expoVersion);
}
Sentry.setTag("expoChannel", Updates.channel);
The sentry-expo
package automatically switched to @sentry/react
for react-native-web
builds. This is no longer the case with @sentry/react-native
which supports react-native-web
out of the box.
Note that some features might not be supported or work differently in @sentry/react-native
on react-native-web
compared to direct usage of @sentry/react
. Verify in your application that the features you use work as expected.
To continue using @sentry/react
for react-native-web
builds, see @sentry/react for more details about the web React package.
Next, set up the Expo and Metro plugins for @sentry/react-native
.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").
- Package:
- npm:@sentry/react-native
- Version:
- 5.20.0
- Repository:
- https://github.com/getsentry/sentry-react-native