Expo

To set up the Sentry React Native SDK in your Expo

projectRepresents your service in Sentry and allows you to scope events to a distinct application.
, follow the steps on this page.

Prerequisities

Install the Sentry SDK

Install the @sentry/react-native package:

Copied
npx expo install @sentry/react-native

Intialize the SDK

Import the @sentry/react-native package and call init with your

DSNThe Data Source Name (DSN) key tells the Sentry SDK where to send events, ensuring they go to the right project.
:

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 Your App

Wrap the root component of your application with Sentry.wrap:

Copied
export default Sentry.wrap(App);

Add the Sentry Expo Plugin

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/",
          "warning": "DO NOT COMMIT YOUR AUTH TOKEN",
          "authToken": "sntrys_YOUR_TOKEN_HERE",
          "project": "example-project",
          "organization": "example-org"
        }
      ]
    ]
  }
}

Add Sentry Metro Plugin

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;

Verify Setup

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"));
  }}
/>

Next Steps

Notes

  • Don't commit your auth
    tokenIn search, a key-value pair or raw search term. Also, a value used for authorization.
    . 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").