getsentry/sentry-for-aiApache-2.08 files

Sentry React Native SDK

Full Sentry SDK setup for React Native and Expo. Use when asked to "add Sentry to React Native", "install @sentry/react-native", "setup Sentry in Expo", or configure error monitoring, tracing, profiling, session replay, or logging for React Native applications. Supports Expo managed, Expo bare, and vanilla React Native.

Specification
Skill ID
getsentry/sentry-for-ai/sentry-react-native-sdk
Publisher
getsentry
Repository
sentry-for-ai
Installs
0
Files
8
License
Apache-2.0
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

getsentry/sentry-for-ai/sentry-react-native-sdkInstalls these files
  • SKILL.md
  • references/error-monitoring.md
  • references/expo-config-plugin.md
  • references/logging.md
  • references/profiling.md
  • references/session-replay.md
  • references/tracing.md
  • references/user-feedback.md

What this skill tells the agent

All Skills > SDK Setup > React Native SDK

Sentry React Native SDK

Opinionated wizard that scans your React Native or Expo project and guides you through complete Sentry setup — error monitoring, tracing, profiling, session replay, logging, and more.

Invoke This Skill When

  • User asks to "add Sentry to React Native" or "set up Sentry" in an RN or Expo app
  • User wants error monitoring, tracing, profiling, session replay, or logging in React Native
  • User mentions @sentry/react-native, mobile error tracking, or Sentry for Expo
  • User wants to monitor native crashes, ANRs, or app hangs on iOS/Android
Note: SDK versions and APIs below reflect current Sentry docs at time of writing (@sentry/react-native ≥6.0.0, minimum recommended ≥8.0.0). Always verify against docs.sentry.io/platforms/react-native/ before implementing.

Phase 1: Detect

Run these commands to understand the project before making any recommendations:

# Detect project type and existing Sentry
cat package.json | grep -E '"(react-native|expo|@expo|@sentry/react-native|sentry-expo)"'

# Distinguish Expo managed vs bare vs vanilla RN
ls app.json app.config.js app.config.ts 2>/dev/null
cat app.json 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print('Expo managed' if 'expo' in d else 'Bare/Vanilla')" 2>/dev/null

# Check Expo SDK version (important: Expo SDK 50+ required for @sentry/react-native)
cat package.json | grep '"expo"'

# Detect navigation library
grep -E '"(@react-navigation/native|react-native-navigation)"' package.json

# Detect state management (Redux → breadcrumb integration available)
grep -E '"(redux|@reduxjs/toolkit|zustand|mobx)"' package.json

# Check for existing Sentry initialization
grep -r "Sentry.init" src/ app/ App.tsx App.js _layout.tsx 2>/dev/null | head -5

# Detect Hermes (affects source map handling)
cat android/app/build.gradle 2>/dev/null | grep -i hermes
cat ios/Podfile 2>/dev/null | grep -i hermes

# Detect Expo Router
ls app/_layout.tsx app/_layout.js 2>/dev/null

# Detect backend for cross-link
ls backend/ server/ api/ 2>/dev/null
find . -maxdepth 3 \( -name "go.mod" -o -name "requirements.txt" -o -name "Gemfile" -o -name "package.json" \) 2>/dev/null | grep -v node_modules | head -10

What to determine:

QuestionImpact
expo in package.json?Expo path (config plugin + getSentryExpoConfig) vs bare/vanilla RN path
Expo SDK ≥50?@sentry/react-native directly; older = sentry-expo (legacy, do not use)
app.json has "expo" key?Managed Expo — wizard is simplest; config plugin handles all native config
app/_layout.tsx present?Expo Router project — init goes in _layout.tsx
@sentry/react-native already in package.json?Skip install, jump to feature config
@react-navigation/native present?Recommend reactNavigationIntegration for screen tracking
react-native-navigation present?Recommend reactNativeNavigationIntegration (Wix)
Backend directory detected?Trigger Phase 4 cross-link

Phase 2: Recommend

Present a concrete recommendation based on what you found. Don't ask open-ended questions — lead with a proposal:

Recommended (core coverage — always set up these):

  • ✅ Error Monitoring — captures JS exceptions, native crashes (iOS + Android), ANRs, and app hangs
  • ✅ Tracing — mobile performance is critical; auto-instruments navigation, app start, network requests
  • ✅ Session Replay — mobile replay captures screenshots and touch events for debugging user issues

Optional (enhanced observability):

  • ⚡ Profiling — CPU profiling on iOS (JS profiling cross-platform); low overhead in production
  • ⚡ Logging — structured logs via Sentry.logger.*; links to traces for full context
  • ⚡ User Feedback — collect user-submitted bug reports directly from your app

Recommendation logic:

FeatureRecommend when...
Error MonitoringAlways — non-negotiable baseline for any mobile app
TracingAlways for mobile — app start, navigation, and network latency matter
Session ReplayUser-facing production app; debug user-reported issues visually
ProfilingPerformance-sensitive screens, startup time concerns, or production perf investigations
LoggingApp uses structured logging, or you want log-to-trace correlation in Sentry
User FeedbackBeta or customer-facing app where you want user-submitted bug reports

Propose: "For your [Expo managed / bare RN] app, I recommend setting up Error Monitoring + Tracing + Session Replay. Want me to also add Profiling and Logging?"


Phase 3: Guide

Determine Your Setup Path

Project typeRecommended setupComplexity
Expo managed (SDK 50+)Wizard CLI or manual with config pluginLow — wizard does everything
Expo bare (SDK 50+)Wizard CLI recommendedMedium — handles iOS/Android config
Vanilla React Native (0.69+)Wizard CLI recommendedMedium — handles Xcode + Gradle
Expo SDK <50Use sentry-expo (legacy)See legacy docs

Path A: Wizard CLI (Recommended for all project types)

You need to run this yourself — the wizard opens a browser for login and requires interactive input that the agent can't handle. Copy-paste into your terminal: `` npx @sentry/wizard@latest -i reactNative ` It handles login, org/project selection, SDK installation, native config, source map upload, and Sentry.init(). Here's what it creates/modifies: | File | Action | Purpose | |------|--------|---------| | package.json | Installs @sentry/react-native | Core SDK | | metro.config.js | Adds @sentry/react-native/metro serializer | Source map generation | | app.json | Adds @sentry/react-native/expo plugin (Expo only) | Config plugin for native builds | | App.tsx / _layout.tsx | Adds Sentry.init() and Sentry.wrap() | SDK initialization | | ios/sentry.properties | Stores org/project/token | iOS source map + dSYM upload | | android/sentry.properties | Stores org/project/token | Android source map upload | | android/app/build.gradle | Adds Sentry Gradle plugin | Android source maps + proguard | | ios/[AppName].xcodeproj | Wraps "Bundle RN" build phase + adds dSYM upload | iOS symbol upload | | .env.local | SENTRY_AUTH_TOKEN | Auth token (add to .gitignore`) | Once it finishes, come back and skip to [Verification](#verification).

If the user skips the wizard, proceed with Path B or C (Manual Setup) below based on their project type.


Path B: Manual — Expo Managed (SDK 50+)

Step 1 — Install

npx expo install @sentry/react-native

Step 2 — `metro.config.js`

const { getSentryExpoConfig } = require("@sentry/react-native/metro");
const config = getSentryExpoConfig(__dirname, {
  // Auto-wrap Expo Router ErrorBoundary exports at build time (SDK ≥8.17.0)
  autoWrapExpoRouterErrorBoundary: true,
});
module.exports = config;

If metro.config.js doesn't exist yet:

npx expo customize metro.config.js
# Then replace contents with the above

Metro config options:

OptionTypeDefaultPurpose
autoWrapExpoRouterErrorBoundarybooleanfalseAutomatically wrap export { ErrorBoundary } from 'expo-router' with Sentry at build time (SDK ≥8.17.0). Captures errors that hit per-route ErrorBoundaries without manual wrapping
annotateReactComponentsbooleanfalseInject component names for better error context
includeWebReplaybooleantrueInclude web replay bundle (set false for native-only apps)

Use this skill in a project

Open any RiverX project, search the Skills panel for getsentry/sentry-for-ai/sentry-react-native-sdk, and install it in one click.

Use this skill