TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

Integrating Sentry with a React Native app built using Expo

October 21, 2019

Install the package

code
npm i sentry-expo

Initialize Sentry as soon as possible before loading your React Native app

code
/*
App.jsx or App.tsx
*/
import * as Sentry from "sentry-expo";
import Constants from "expo-constants";

Sentry.init({
  dsn: "DSN link goes here",
  enableInExpoDevelopment: true, // disabled by default. if false, all your dev/local errors will be ignored and only app releases will report errors to Sentry, Sentry.captureException() will be no-op
  debug: true,
});

if (!__DEV__) {
  // revisionId is not available in the manifest when running in development mode (using Expo CLI), defaulting to undefined.
  Sentry.setRelease(Constants.manifest.revisionId);
}

Now you can use Sentry anywhere in your app. Example usage:

code
Sentry.setTag("sampleTag", "tag-value");
Sentry.setExtra("sampleExtra", "extra-value");
Sentry.addBreadcrumb({ message: "breadcrumb-message" });
Sentry.captureMessage("Salam Sentry!");
Sentry.captureException(new Error("Test Error from React Native"));

In order to be able to use source maps and get improved error tracking and monitoring, upload your source maps to Sentry. This can be easily done by adding a postPublish hook in app.json.

code
/*
app.json
*/

{
  "expo": {
    // ... your existing configuration

    "hooks": {
      "postPublish": [
        {
          "file": "sentry-expo/upload-sourcemaps",
          "config": {
            "organization": "my-organization",
            "project": "my-awesome-project",
            "authToken": "your auth token here",
            "url": "your sentry url here" // OPTIONAL- only necessary when self-hosting Sentry
          }
        }
      ]
    }
  }
}