File: using-sentry.md | Updated: 11/15/2025
Hide navigation
Search
Ctrl K
Home Guides EAS Reference Learn
Archive Expo Snack Discord and Forums Newsletter
Copy page
A guide on installing and configuring Sentry for crash reporting.
Copy page
Sentry is a crash reporting platform that provides you with real-time insight into production deployments with info to reproduce and fix crashes.
It notifies you of exceptions or errors that your users run into while using your app and organizes them for you on a web dashboard. Reported exceptions include stacktraces, device info, version, and other relevant context automatically. You can also provide additional context that is specific to your application such as the current route and user id.
This guide covers three main aspects of integrating Sentry with your Expo projects:
Install and configure Sentry in your React Native app
Using Sentry with EAS:
Setting up the Sentry-Expo integration to view crash reports and session replays directly in your EAS dashboard
| Android Device | Android Emulator | iOS Device | iOS Simulator | Web | | --- | --- | --- | --- | --- | | | | | | |
1
Before proceeding with installing Sentry, you'll need to make sure you have created a Sentry account and project:
1.1
Sign up for Sentry (the free tier supports up to 5,000 events per month), and create a project in your Dashboard. Take note of your organization slug, project name, and DSN as you'll need them later:
1.2
Go to the Developer Settings > Auth Tokens page and create a new Organization Auth Token . The token is automatically scoped for Source Map Upload and Release Creation. Save it.
Once you have each of these: organization slug, project name, DSN, and auth token, you're all set to proceed.
2
The easiest way to set up Sentry in your Expo project is to use the Sentry wizard. This tool will automatically configure your project with the right settings.
Run the following command in your project directory:
Terminal
Copy
- npx @sentry/wizard@latest -i reactNative
The wizard will:
Follow the prompts in the wizard to complete the setup process. The wizard will guide you to log in to your Sentry account and fetch all the correct information regarding your project.
3
Create a new release build of your app and verify that it uploads source maps correctly. You may want to add a button in your app to test that it is working and sourcemaps are wired up as expected, for example:
import { Button } from 'react-native'; // Inside some component <Button title="Press me" onPress={() => { throw new Error('Hello, again, Sentry!'); }}/>
Ensure that SENTRY_AUTH_TOKEN is set in your build environment, and Sentry will automatically upload source maps for you. If you use environment variables rather than properties in your app config, ensure that those are set as well.
Using the above instructions, no additional work is needed to integrate Sentry into your project when using EAS Build.
After running eas update, upload the source maps to Sentry:
Terminal
Copy
# Pass in the "dist" directory generated by `eas update` to the upload script
- npx sentry-expo-upload-sourcemaps dist
That's it! Errors for your updates will now be properly symbolicated in Sentry.
Do you want to publish an update and the sourcemaps in one command?
You can chain the commands together with && to publish an update and upload the sourcemaps in one step:
Terminal
Copy
- eas update --branch <branch> && npx sentry-expo-upload-sourcemaps dist
Do you want to append additional update-related metadata to error reports?
Configuring Sentry to tag your scope with information about your update allows you to see errors happening on certain updates in the Sentry dashboard.
Add the following snippet in the global scope as early as possible in your application's lifecycle.
import * as Sentry from '@sentry/react-native'; import * as Updates from 'expo-updates'; const manifest = Updates.manifest; const metadata = 'metadata' in manifest ? manifest.metadata : undefined; const extra = 'extra' in manifest ? manifest.extra : undefined; const updateGroup = metadata && 'updateGroup' in metadata ? metadata.updateGroup : undefined; Sentry.init({ // dsn, release, dist, etc... }); const scope = Sentry.getGlobalScope(); scope.setTag('expo-update-id', Updates.updateId); scope.setTag('expo-is-embedded-update', Updates.isEmbeddedLaunch); if (typeof updateGroup === 'string') { scope.setTag('expo-update-group-id', updateGroup); const owner = extra?.expoClient?.owner ?? '[account]'; const slug = extra?.expoClient?.slug ?? '[project]'; scope.setTag( 'expo-update-debug-url', `https://expo.dev/accounts/${owner}/projects/${slug}/updates/${updateGroup}` ); } else if (Updates.isEmbeddedLaunch) { // This will be `true` if the update is the one embedded in the build, and not one downloaded from the updates server. scope.setTag('expo-update-debug-url', 'not applicable for embedded updates'); }
Show More
Once configured, information about the associated update will show up in an error's tag section:

Sentry integration with EAS dashboard
The Sentry integration with Expo allows you to view crash reports and Session Replays for your Expo app deployments directly within your EAS dashboard. This integration provides a direct link to Sentry stack traces with full context, session replays, and debugging capabilities.
Sentry owner, manager, or admin permissions are required to install this integration.
After connecting your accounts, you need to link your EAS Project to your Sentry Project:
To see your Sentry data in EAS dashboard, open Projects > [Your Project] > Updates > Deployments > [Deployment] to view Sentry data from a Release.
With this integration, you can:
Sentry does more than just catch fatal errors, learn more about how to use Sentry from their JavaScript usage documentation.