This is a mock mobile app used by Solution Engineers when demo'ing Sentry's React Native SDK's capabilities, built with Expo.
| Home Screen | Product Detail | Cart |
|---|---|---|
![]() |
![]() |
![]() |
No build needed. Download the latest build from Releases:
- Android: download
app-release.apkand drag it onto a running emulator. - iOS: download
sentry_react_native.app.zip, unzip it, and drag the.apponto a running simulator.
Note: Release builds are built with
EXPO_PUBLIC_SE=tda, so their events are sent to theproductionenvironment and grouped with the automated TDA data, not under your name. To get your ownSEtag, follow Setup Locally instead.
git clone https://github.com/sentry-demos/sentry_react_native.git
cd sentry_react_native
echo "EXPO_PUBLIC_SE=<your-name>" > .env.localEXPO_PUBLIC_SE— Expo reads.env.localautomatically, and only variables prefixed withEXPO_PUBLIC_are exposed to app code.SEis added to event fingerprints so your demo issues stay separate from everyone else's. The valuetdais reserved for release builds: it sets the Sentry environment toproductionand fingerprints by app version. Reload the app (pressrin the Metro terminal) after changing it.- Optional —
src/config.tsships with a workingDSNandBACKEND_URL. Override them if you want to point at your own Sentry project or a local backend.
This app uses native modules (the Sentry config plugin), so it can't run in Expo Go.
Install dependencies, then run on Android or iOS. The run commands generate the native
project if needed, build and install the app, and start Metro:
npm install
npm run android # or: npm run iosFor release builds, the same flow CI uses (see .github/workflows/build-*.yml). Release
builds upload source maps, so they need a
Sentry Auth Token:
export SENTRY_AUTH_TOKEN=<token>
npx expo prebuild --platform android
cd android && ./gradlew :app:assembleReleaseThe generated android/ and ios/ directories are gitignored — expo prebuild
recreates them from app.config.js, so don't edit them by hand.
Releases are automated via .github/workflows/release.yml and use date-based
versioning: version name YY.M.D (e.g. 26.10.5) and version code YYMMDD (e.g. 261005).
- Scheduled: every Monday at 00:00 UTC. The workflow builds the Android APK and iOS app
and publishes them to
GitHub Releases
as
app-release.apkandsentry_react_native.app.zip. The TDA pipeline always tests against the latest release, so its errors are tagged with the current version. - Manual: Actions → Release → Run workflow, no inputs needed. It releases with
today's date just like the scheduled run. If today was already released, the
version gets a suffix (
26.10.5-1, then-2, …) so it never collides with the automated releases.
The version input on the workflow is an optional escape hatch for forcing a
specific version; it fails if that version was already released.
Note: Only GitHub release builds have a real version. The bump happens on a temporary release branch, so
package.jsononmasterstays at1.0.0and local builds always report1.0.0.
See troubleshooting.md for tips.


