Expo
To set up the Sentry React Native SDK in your Expo project, follow the steps on this page.
- Expo SDK 50 or newer.
- Expo SDK 49 and older are supported by the
sentry-expo
package.
- Expo SDK 49 and older are supported by the
- Migrate from
sentry-expo
to@sentry/react-native
. - Sign up for an account.
Install the @sentry/react-native
package:
Copied
npx expo install @sentry/react-native
Import the @sentry/react-native
package and call init
with your DSN:
Copied
import { Text, View } from "react-native";
import * as Sentry from "@sentry/react-native";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
// Set tracesSampleRate to 1.0 to capture 100%
// of transactions for performance monitoring.
// We recommend adjusting this value in production
tracesSampleRate: 1.0,
});
function App() {
return (
<View>
<Text>Expo Example!</Text>
</View>
);
}
export default Sentry.wrap(App);
Wrap the root component of your application with Sentry.wrap
:
Copied
export default Sentry.wrap(App);
To ensure bundles and source maps are automatically uploaded during the native applications builds, add withSentry
to the Expo application configuration:
Copied
{
"expo": {
"plugins": [
[
"@sentry/react-native/expo",
{
"url": "https://sentry.io/",
"note": "Use SENTRY_AUTH_TOKEN env to authenticate with Sentry.",
"project": "example-project",
"organization": "example-org"
}
]
]
}
}
Add auth token to your environment:
Copied
# DO NOT COMMIT YOUR AUTH TOKEN
export SENTRY_AUTH_TOKEN=sntrys_YOUR_TOKEN_HERE
To ensure unique Debug IDs get assigned to the generated bundles and source maps, add Sentry Serializer to the Metro configuration:
Copied
// const { getDefaultConfig } = require("expo/metro-config");
const { getSentryExpoConfig } = require("@sentry/react-native/metro");
// const config = getDefaultConfig(__dirname);
const config = getSentryExpoConfig(__dirname);
module.exports = config;
To verify that everything is working as expected, build the Release
version of your application and send a test event to Sentry by adding:
Copied
<Button
title="Try!"
onPress={() => {
Sentry.captureException(new Error("First error"));
}}
/>
- Learn how to upload source maps for native builds and Expo Updates
- Add automatic performance monitoring with Expo Router
- Don't commit your auth token. Instead, use an environment variable like
SENTRY_AUTH_TOKEN
. - Source maps for the
Release
version of your application are uploaded automatically during the native application build. - During development, the source code is resolved using the Metro Server and source maps aren't used. This currently doesn't work on web.
Help improve this content
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").
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