diff --git a/docs/integrations/deployment/expo/index.mdx b/docs/integrations/deployment/expo/index.mdx
index 317504381518cc..175938fb0be738 100644
--- a/docs/integrations/deployment/expo/index.mdx
+++ b/docs/integrations/deployment/expo/index.mdx
@@ -49,5 +49,5 @@ To see your Sentry Issues and Replays in Expo dashboard, you'll first need to en
npx @sentry/wizard@latest -i reactNative
```
- For more details on using Sentry with Expo, refer to the [Sentry documentation](/platforms/react-native/) for React Native applications.
+ For more details, see the [Expo guide](/platforms/react-native/guides/expo/), which also documents this EAS dashboard integration.
diff --git a/docs/platforms/react-native/ai-agent-monitoring/index.mdx b/docs/platforms/react-native/common/ai-agent-monitoring/index.mdx
similarity index 100%
rename from docs/platforms/react-native/ai-agent-monitoring/index.mdx
rename to docs/platforms/react-native/common/ai-agent-monitoring/index.mdx
diff --git a/docs/platforms/react-native/build-distribution/index.mdx b/docs/platforms/react-native/common/build-distribution/index.mdx
similarity index 100%
rename from docs/platforms/react-native/build-distribution/index.mdx
rename to docs/platforms/react-native/common/build-distribution/index.mdx
diff --git a/docs/platforms/react-native/configuration/app-hangs.mdx b/docs/platforms/react-native/common/configuration/app-hangs.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/app-hangs.mdx
rename to docs/platforms/react-native/common/configuration/app-hangs.mdx
diff --git a/docs/platforms/react-native/configuration/draining.mdx b/docs/platforms/react-native/common/configuration/draining.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/draining.mdx
rename to docs/platforms/react-native/common/configuration/draining.mdx
diff --git a/docs/platforms/react-native/configuration/environments.mdx b/docs/platforms/react-native/common/configuration/environments.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/environments.mdx
rename to docs/platforms/react-native/common/configuration/environments.mdx
diff --git a/docs/platforms/react-native/configuration/filtering.mdx b/docs/platforms/react-native/common/configuration/filtering.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/filtering.mdx
rename to docs/platforms/react-native/common/configuration/filtering.mdx
diff --git a/docs/platforms/react-native/configuration/index.mdx b/docs/platforms/react-native/common/configuration/index.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/index.mdx
rename to docs/platforms/react-native/common/configuration/index.mdx
diff --git a/docs/platforms/react-native/configuration/options.mdx b/docs/platforms/react-native/common/configuration/options.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/options.mdx
rename to docs/platforms/react-native/common/configuration/options.mdx
diff --git a/docs/platforms/react-native/configuration/releases.mdx b/docs/platforms/react-native/common/configuration/releases.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/releases.mdx
rename to docs/platforms/react-native/common/configuration/releases.mdx
diff --git a/docs/platforms/react-native/configuration/sampling.mdx b/docs/platforms/react-native/common/configuration/sampling.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/sampling.mdx
rename to docs/platforms/react-native/common/configuration/sampling.mdx
diff --git a/docs/platforms/react-native/configuration/touchevents.mdx b/docs/platforms/react-native/common/configuration/touchevents.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/touchevents.mdx
rename to docs/platforms/react-native/common/configuration/touchevents.mdx
diff --git a/docs/platforms/react-native/configuration/webview.mdx b/docs/platforms/react-native/common/configuration/webview.mdx
similarity index 100%
rename from docs/platforms/react-native/configuration/webview.mdx
rename to docs/platforms/react-native/common/configuration/webview.mdx
diff --git a/docs/platforms/react-native/data-management/apple-privacy-manifest.mdx b/docs/platforms/react-native/common/data-management/apple-privacy-manifest.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/apple-privacy-manifest.mdx
rename to docs/platforms/react-native/common/data-management/apple-privacy-manifest.mdx
diff --git a/docs/platforms/react-native/data-management/data-collected.mdx b/docs/platforms/react-native/common/data-management/data-collected.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/data-collected.mdx
rename to docs/platforms/react-native/common/data-management/data-collected.mdx
diff --git a/docs/platforms/react-native/data-management/debug-files/file-formats/index.mdx b/docs/platforms/react-native/common/data-management/debug-files/file-formats/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/file-formats/index.mdx
rename to docs/platforms/react-native/common/data-management/debug-files/file-formats/index.mdx
diff --git a/docs/platforms/react-native/data-management/debug-files/identifiers/index.mdx b/docs/platforms/react-native/common/data-management/debug-files/identifiers/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/identifiers/index.mdx
rename to docs/platforms/react-native/common/data-management/debug-files/identifiers/index.mdx
diff --git a/docs/platforms/react-native/data-management/debug-files/index.mdx b/docs/platforms/react-native/common/data-management/debug-files/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/index.mdx
rename to docs/platforms/react-native/common/data-management/debug-files/index.mdx
diff --git a/docs/platforms/react-native/data-management/debug-files/source-context/img/source-context-screenshot.png b/docs/platforms/react-native/common/data-management/debug-files/source-context/img/source-context-screenshot.png
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/source-context/img/source-context-screenshot.png
rename to docs/platforms/react-native/common/data-management/debug-files/source-context/img/source-context-screenshot.png
diff --git a/docs/platforms/react-native/data-management/debug-files/source-context/index.mdx b/docs/platforms/react-native/common/data-management/debug-files/source-context/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/source-context/index.mdx
rename to docs/platforms/react-native/common/data-management/debug-files/source-context/index.mdx
diff --git a/docs/platforms/react-native/data-management/debug-files/symbol-servers/index.mdx b/docs/platforms/react-native/common/data-management/debug-files/symbol-servers/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/symbol-servers/index.mdx
rename to docs/platforms/react-native/common/data-management/debug-files/symbol-servers/index.mdx
diff --git a/docs/platforms/react-native/data-management/debug-files/upload/index.mdx b/docs/platforms/react-native/common/data-management/debug-files/upload/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/debug-files/upload/index.mdx
rename to docs/platforms/react-native/common/data-management/debug-files/upload/index.mdx
diff --git a/docs/platforms/react-native/data-management/index.mdx b/docs/platforms/react-native/common/data-management/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/index.mdx
rename to docs/platforms/react-native/common/data-management/index.mdx
diff --git a/docs/platforms/react-native/data-management/sensitive-data/index.mdx b/docs/platforms/react-native/common/data-management/sensitive-data/index.mdx
similarity index 100%
rename from docs/platforms/react-native/data-management/sensitive-data/index.mdx
rename to docs/platforms/react-native/common/data-management/sensitive-data/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/attachments/index.mdx b/docs/platforms/react-native/common/enriching-events/attachments/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/attachments/index.mdx
rename to docs/platforms/react-native/common/enriching-events/attachments/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/breadcrumbs/index.mdx b/docs/platforms/react-native/common/enriching-events/breadcrumbs/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/breadcrumbs/index.mdx
rename to docs/platforms/react-native/common/enriching-events/breadcrumbs/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/context/default-context.mdx b/docs/platforms/react-native/common/enriching-events/context/default-context.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/context/default-context.mdx
rename to docs/platforms/react-native/common/enriching-events/context/default-context.mdx
diff --git a/docs/platforms/react-native/enriching-events/context/index.mdx b/docs/platforms/react-native/common/enriching-events/context/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/context/index.mdx
rename to docs/platforms/react-native/common/enriching-events/context/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/event-processors/index.mdx b/docs/platforms/react-native/common/enriching-events/event-processors/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/event-processors/index.mdx
rename to docs/platforms/react-native/common/enriching-events/event-processors/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/identify-user/index.mdx b/docs/platforms/react-native/common/enriching-events/identify-user/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/identify-user/index.mdx
rename to docs/platforms/react-native/common/enriching-events/identify-user/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/index.mdx b/docs/platforms/react-native/common/enriching-events/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/index.mdx
rename to docs/platforms/react-native/common/enriching-events/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/scopes/index.mdx b/docs/platforms/react-native/common/enriching-events/scopes/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/scopes/index.mdx
rename to docs/platforms/react-native/common/enriching-events/scopes/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/screenshots/img/screenshot-list-example.png b/docs/platforms/react-native/common/enriching-events/screenshots/img/screenshot-list-example.png
similarity index 100%
rename from docs/platforms/react-native/enriching-events/screenshots/img/screenshot-list-example.png
rename to docs/platforms/react-native/common/enriching-events/screenshots/img/screenshot-list-example.png
diff --git a/docs/platforms/react-native/enriching-events/screenshots/img/screenshot-thumbnail.png b/docs/platforms/react-native/common/enriching-events/screenshots/img/screenshot-thumbnail.png
similarity index 100%
rename from docs/platforms/react-native/enriching-events/screenshots/img/screenshot-thumbnail.png
rename to docs/platforms/react-native/common/enriching-events/screenshots/img/screenshot-thumbnail.png
diff --git a/docs/platforms/react-native/enriching-events/screenshots/index.mdx b/docs/platforms/react-native/common/enriching-events/screenshots/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/screenshots/index.mdx
rename to docs/platforms/react-native/common/enriching-events/screenshots/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/tags/index.mdx b/docs/platforms/react-native/common/enriching-events/tags/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/tags/index.mdx
rename to docs/platforms/react-native/common/enriching-events/tags/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/transaction-name/index.mdx b/docs/platforms/react-native/common/enriching-events/transaction-name/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/transaction-name/index.mdx
rename to docs/platforms/react-native/common/enriching-events/transaction-name/index.mdx
diff --git a/docs/platforms/react-native/enriching-events/viewhierarchy/index.mdx b/docs/platforms/react-native/common/enriching-events/viewhierarchy/index.mdx
similarity index 100%
rename from docs/platforms/react-native/enriching-events/viewhierarchy/index.mdx
rename to docs/platforms/react-native/common/enriching-events/viewhierarchy/index.mdx
diff --git a/docs/platforms/react-native/feature-flags/index.mdx b/docs/platforms/react-native/common/feature-flags/index.mdx
similarity index 100%
rename from docs/platforms/react-native/feature-flags/index.mdx
rename to docs/platforms/react-native/common/feature-flags/index.mdx
diff --git a/docs/platforms/react-native/features/index.mdx b/docs/platforms/react-native/common/features/index.mdx
similarity index 100%
rename from docs/platforms/react-native/features/index.mdx
rename to docs/platforms/react-native/common/features/index.mdx
diff --git a/docs/platforms/react-native/index.mdx b/docs/platforms/react-native/common/index.mdx
similarity index 97%
rename from docs/platforms/react-native/index.mdx
rename to docs/platforms/react-native/common/index.mdx
index d0dbfff207e979..301d5bf31e48b0 100644
--- a/docs/platforms/react-native/index.mdx
+++ b/docs/platforms/react-native/common/index.mdx
@@ -51,7 +51,7 @@ npx @sentry/wizard@latest -i reactNative
-If you're using Expo, [read our docs](/platforms/react-native/manual-setup/expo/) to learn how to add Sentry to your Expo project. This SDK will work for both managed and bare projects.
+If you're using Expo, [read our Expo guide](/platforms/react-native/guides/expo/) to learn how to add Sentry to your Expo project. This SDK will work for both managed and bare projects.
## Configure
diff --git a/docs/platforms/react-native/integrations/anthropic.mdx b/docs/platforms/react-native/common/integrations/anthropic.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/anthropic.mdx
rename to docs/platforms/react-native/common/integrations/anthropic.mdx
diff --git a/docs/platforms/react-native/integrations/component-names.mdx b/docs/platforms/react-native/common/integrations/component-names.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/component-names.mdx
rename to docs/platforms/react-native/common/integrations/component-names.mdx
diff --git a/docs/platforms/react-native/integrations/component-tracking.mdx b/docs/platforms/react-native/common/integrations/component-tracking.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/component-tracking.mdx
rename to docs/platforms/react-native/common/integrations/component-tracking.mdx
diff --git a/docs/platforms/react-native/integrations/consola.mdx b/docs/platforms/react-native/common/integrations/consola.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/consola.mdx
rename to docs/platforms/react-native/common/integrations/consola.mdx
diff --git a/docs/platforms/react-native/integrations/console-logging.mdx b/docs/platforms/react-native/common/integrations/console-logging.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/console-logging.mdx
rename to docs/platforms/react-native/common/integrations/console-logging.mdx
diff --git a/docs/platforms/react-native/integrations/custom.mdx b/docs/platforms/react-native/common/integrations/custom.mdx
similarity index 98%
rename from docs/platforms/react-native/integrations/custom.mdx
rename to docs/platforms/react-native/common/integrations/custom.mdx
index 9bd3727c2fca8a..32479554e36847 100644
--- a/docs/platforms/react-native/integrations/custom.mdx
+++ b/docs/platforms/react-native/common/integrations/custom.mdx
@@ -6,7 +6,7 @@ description: "Learn how to enable a custom integration."
In addition to the integrations that come with the SDK, you can also write custom integrations.
-Custom integration must conform to the [Integration interface](https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/types-hoist/integration.ts).
+Custom integration must conform to the [Integration interface](https://github.com/getsentry/sentry-javascript/blob/master/packages/core/src/types/integration.ts).
A custom integration can be created and added to the SDK as follows:
diff --git a/docs/platforms/react-native/integrations/deeplink.mdx b/docs/platforms/react-native/common/integrations/deeplink.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/deeplink.mdx
rename to docs/platforms/react-native/common/integrations/deeplink.mdx
diff --git a/docs/platforms/react-native/integrations/default.mdx b/docs/platforms/react-native/common/integrations/default.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/default.mdx
rename to docs/platforms/react-native/common/integrations/default.mdx
diff --git a/docs/platforms/react-native/integrations/error-boundary.mdx b/docs/platforms/react-native/common/integrations/error-boundary.mdx
similarity index 99%
rename from docs/platforms/react-native/integrations/error-boundary.mdx
rename to docs/platforms/react-native/common/integrations/error-boundary.mdx
index a96bf4e7400047..85fbbe8f17e072 100644
--- a/docs/platforms/react-native/integrations/error-boundary.mdx
+++ b/docs/platforms/react-native/common/integrations/error-boundary.mdx
@@ -12,7 +12,7 @@ The React Native SDK exports an error boundary component that uses [React compon
-Expo Router has its own per-route `ErrorBoundary` export convention that this component does not interact with. To capture errors that hit Expo Router's boundary, see [Capturing Errors From Expo Router's `ErrorBoundary`](/platforms/react-native/tracing/instrumentation/expo-router/#capturing-errors-from-expo-routers-errorboundary).
+Expo Router has its own per-route `ErrorBoundary` export convention that this component does not interact with. To capture errors that hit Expo Router's boundary, see [Capturing Errors From Expo Router's `ErrorBoundary`](/platforms/react-native/guides/expo/tracing/instrumentation/expo-router/#capturing-errors-from-expo-routers-errorboundary).
diff --git a/docs/platforms/react-native/integrations/google-genai.mdx b/docs/platforms/react-native/common/integrations/google-genai.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/google-genai.mdx
rename to docs/platforms/react-native/common/integrations/google-genai.mdx
diff --git a/docs/platforms/react-native/integrations/graphql.mdx b/docs/platforms/react-native/common/integrations/graphql.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/graphql.mdx
rename to docs/platforms/react-native/common/integrations/graphql.mdx
diff --git a/docs/platforms/react-native/integrations/img/errorboundary-error.png b/docs/platforms/react-native/common/integrations/img/errorboundary-error.png
similarity index 100%
rename from docs/platforms/react-native/integrations/img/errorboundary-error.png
rename to docs/platforms/react-native/common/integrations/img/errorboundary-error.png
diff --git a/docs/platforms/react-native/integrations/index.mdx b/docs/platforms/react-native/common/integrations/index.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/index.mdx
rename to docs/platforms/react-native/common/integrations/index.mdx
diff --git a/docs/platforms/react-native/integrations/langchain.mdx b/docs/platforms/react-native/common/integrations/langchain.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/langchain.mdx
rename to docs/platforms/react-native/common/integrations/langchain.mdx
diff --git a/docs/platforms/react-native/integrations/langgraph.mdx b/docs/platforms/react-native/common/integrations/langgraph.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/langgraph.mdx
rename to docs/platforms/react-native/common/integrations/langgraph.mdx
diff --git a/docs/platforms/react-native/integrations/openai.mdx b/docs/platforms/react-native/common/integrations/openai.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/openai.mdx
rename to docs/platforms/react-native/common/integrations/openai.mdx
diff --git a/docs/platforms/react-native/integrations/plugin.mdx b/docs/platforms/react-native/common/integrations/plugin.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/plugin.mdx
rename to docs/platforms/react-native/common/integrations/plugin.mdx
diff --git a/docs/platforms/react-native/integrations/redux.mdx b/docs/platforms/react-native/common/integrations/redux.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/redux.mdx
rename to docs/platforms/react-native/common/integrations/redux.mdx
diff --git a/docs/platforms/react-native/integrations/spotlight.mdx b/docs/platforms/react-native/common/integrations/spotlight.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/spotlight.mdx
rename to docs/platforms/react-native/common/integrations/spotlight.mdx
diff --git a/docs/platforms/react-native/integrations/unhandled-rejections.mdx b/docs/platforms/react-native/common/integrations/unhandled-rejections.mdx
similarity index 100%
rename from docs/platforms/react-native/integrations/unhandled-rejections.mdx
rename to docs/platforms/react-native/common/integrations/unhandled-rejections.mdx
diff --git a/docs/platforms/react-native/logs/index.mdx b/docs/platforms/react-native/common/logs/index.mdx
similarity index 100%
rename from docs/platforms/react-native/logs/index.mdx
rename to docs/platforms/react-native/common/logs/index.mdx
diff --git a/docs/platforms/react-native/manual-setup/app-start-error-capture.mdx b/docs/platforms/react-native/common/manual-setup/app-start-error-capture.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/app-start-error-capture.mdx
rename to docs/platforms/react-native/common/manual-setup/app-start-error-capture.mdx
diff --git a/docs/platforms/react-native/manual-setup/hermes.mdx b/docs/platforms/react-native/common/manual-setup/hermes.mdx
similarity index 97%
rename from docs/platforms/react-native/manual-setup/hermes.mdx
rename to docs/platforms/react-native/common/manual-setup/hermes.mdx
index c37cdc8d8eb233..42077109524190 100644
--- a/docs/platforms/react-native/manual-setup/hermes.mdx
+++ b/docs/platforms/react-native/common/manual-setup/hermes.mdx
@@ -34,7 +34,7 @@ React Native [`0.70`](https://github.com/facebook/react-native/blob/e3a5fbe72f96
-For more details see [this issue](https://github.com/facebook/react-native/issues/34043) in the React Native repository.
+For more details see [this issue](https://github.com/react/react-native/issues/34043) in the React Native repository.
### Don't Combine Hermes and RAM Bundles
diff --git a/docs/platforms/react-native/manual-setup/index.mdx b/docs/platforms/react-native/common/manual-setup/index.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/index.mdx
rename to docs/platforms/react-native/common/manual-setup/index.mdx
diff --git a/docs/platforms/react-native/manual-setup/manual-setup.mdx b/docs/platforms/react-native/common/manual-setup/manual-setup.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/manual-setup.mdx
rename to docs/platforms/react-native/common/manual-setup/manual-setup.mdx
diff --git a/docs/platforms/react-native/manual-setup/metro.mdx b/docs/platforms/react-native/common/manual-setup/metro.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/metro.mdx
rename to docs/platforms/react-native/common/manual-setup/metro.mdx
diff --git a/docs/platforms/react-native/manual-setup/native-init.mdx b/docs/platforms/react-native/common/manual-setup/native-init.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/native-init.mdx
rename to docs/platforms/react-native/common/manual-setup/native-init.mdx
diff --git a/docs/platforms/react-native/manual-setup/playground.mdx b/docs/platforms/react-native/common/manual-setup/playground.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/playground.mdx
rename to docs/platforms/react-native/common/manual-setup/playground.mdx
diff --git a/docs/platforms/react-native/manual-setup/ram-bundles.mdx b/docs/platforms/react-native/common/manual-setup/ram-bundles.mdx
similarity index 97%
rename from docs/platforms/react-native/manual-setup/ram-bundles.mdx
rename to docs/platforms/react-native/common/manual-setup/ram-bundles.mdx
index 0115d9749715c2..5cca60c4d4d767 100644
--- a/docs/platforms/react-native/manual-setup/ram-bundles.mdx
+++ b/docs/platforms/react-native/common/manual-setup/ram-bundles.mdx
@@ -6,7 +6,7 @@ sidebar_order: 40
The [RAM bundle](https://reactnative.dev/docs/optimizing-javascript-loading) format is a new approach to packaging React Native apps that optimizes your app's startup time. With RAM bundles, it is possible to load to memory only those modules that are needed for specific functionality, and only when needed.
-All the existing RAM bundle formats are explained in detail in the [Metro Bundler documentation](https://facebook.github.io/metro/docs/bundling).
+All the existing RAM bundle formats are explained in detail in the [Metro Bundler documentation](https://metrobundler.dev/docs/bundling).
## Enabling RAM Bundles
diff --git a/docs/platforms/react-native/metrics/index.mdx b/docs/platforms/react-native/common/metrics/index.mdx
similarity index 100%
rename from docs/platforms/react-native/metrics/index.mdx
rename to docs/platforms/react-native/common/metrics/index.mdx
diff --git a/docs/platforms/react-native/migration/before-v5.mdx b/docs/platforms/react-native/common/migration/before-v5.mdx
similarity index 100%
rename from docs/platforms/react-native/migration/before-v5.mdx
rename to docs/platforms/react-native/common/migration/before-v5.mdx
diff --git a/docs/platforms/react-native/migration/index.mdx b/docs/platforms/react-native/common/migration/index.mdx
similarity index 100%
rename from docs/platforms/react-native/migration/index.mdx
rename to docs/platforms/react-native/common/migration/index.mdx
diff --git a/docs/platforms/react-native/migration/v5-to-v6.mdx b/docs/platforms/react-native/common/migration/v5-to-v6.mdx
similarity index 100%
rename from docs/platforms/react-native/migration/v5-to-v6.mdx
rename to docs/platforms/react-native/common/migration/v5-to-v6.mdx
diff --git a/docs/platforms/react-native/migration/v6-to-v7.mdx b/docs/platforms/react-native/common/migration/v6-to-v7.mdx
similarity index 100%
rename from docs/platforms/react-native/migration/v6-to-v7.mdx
rename to docs/platforms/react-native/common/migration/v6-to-v7.mdx
diff --git a/docs/platforms/react-native/migration/v7-to-v8.mdx b/docs/platforms/react-native/common/migration/v7-to-v8.mdx
similarity index 100%
rename from docs/platforms/react-native/migration/v7-to-v8.mdx
rename to docs/platforms/react-native/common/migration/v7-to-v8.mdx
diff --git a/docs/platforms/react-native/overhead/index.mdx b/docs/platforms/react-native/common/overhead/index.mdx
similarity index 100%
rename from docs/platforms/react-native/overhead/index.mdx
rename to docs/platforms/react-native/common/overhead/index.mdx
diff --git a/docs/platforms/react-native/profiling/index.mdx b/docs/platforms/react-native/common/profiling/index.mdx
similarity index 100%
rename from docs/platforms/react-native/profiling/index.mdx
rename to docs/platforms/react-native/common/profiling/index.mdx
diff --git a/docs/platforms/react-native/profiling/troubleshooting/index.mdx b/docs/platforms/react-native/common/profiling/troubleshooting/index.mdx
similarity index 100%
rename from docs/platforms/react-native/profiling/troubleshooting/index.mdx
rename to docs/platforms/react-native/common/profiling/troubleshooting/index.mdx
diff --git a/docs/platforms/react-native/releases/index.mdx b/docs/platforms/react-native/common/releases/index.mdx
similarity index 100%
rename from docs/platforms/react-native/releases/index.mdx
rename to docs/platforms/react-native/common/releases/index.mdx
diff --git a/docs/platforms/react-native/session-replay/index.mdx b/docs/platforms/react-native/common/session-replay/index.mdx
similarity index 100%
rename from docs/platforms/react-native/session-replay/index.mdx
rename to docs/platforms/react-native/common/session-replay/index.mdx
diff --git a/docs/platforms/react-native/session-replay/performance-overhead.mdx b/docs/platforms/react-native/common/session-replay/performance-overhead.mdx
similarity index 100%
rename from docs/platforms/react-native/session-replay/performance-overhead.mdx
rename to docs/platforms/react-native/common/session-replay/performance-overhead.mdx
diff --git a/docs/platforms/react-native/session-replay/privacy/index.mdx b/docs/platforms/react-native/common/session-replay/privacy/index.mdx
similarity index 100%
rename from docs/platforms/react-native/session-replay/privacy/index.mdx
rename to docs/platforms/react-native/common/session-replay/privacy/index.mdx
diff --git a/docs/platforms/react-native/size-analysis/index.mdx b/docs/platforms/react-native/common/size-analysis/index.mdx
similarity index 100%
rename from docs/platforms/react-native/size-analysis/index.mdx
rename to docs/platforms/react-native/common/size-analysis/index.mdx
diff --git a/docs/platforms/react-native/size-analysis/insights.mdx b/docs/platforms/react-native/common/size-analysis/insights.mdx
similarity index 100%
rename from docs/platforms/react-native/size-analysis/insights.mdx
rename to docs/platforms/react-native/common/size-analysis/insights.mdx
diff --git a/docs/platforms/react-native/sourcemaps/debug-ids.mdx b/docs/platforms/react-native/common/sourcemaps/debug-ids.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/debug-ids.mdx
rename to docs/platforms/react-native/common/sourcemaps/debug-ids.mdx
diff --git a/docs/platforms/react-native/sourcemaps/index.mdx b/docs/platforms/react-native/common/sourcemaps/index.mdx
similarity index 97%
rename from docs/platforms/react-native/sourcemaps/index.mdx
rename to docs/platforms/react-native/common/sourcemaps/index.mdx
index 6e84349a2f44be..599069831d04c7 100644
--- a/docs/platforms/react-native/sourcemaps/index.mdx
+++ b/docs/platforms/react-native/common/sourcemaps/index.mdx
@@ -17,7 +17,7 @@ To get unminified stack traces for JavaScript code, source maps must be generate
Choose one of the following guides depending on your setup, or try the [automatic upload](#set-up-automatic-upload) to get started.
-- [Expo](/platforms/react-native/sourcemaps/uploading/expo/)
+- [Expo](/platforms/react-native/guides/expo/sourcemaps/uploading/expo/)
- [Hermes](/platforms/react-native/sourcemaps/uploading/hermes/)
- [JavaScript Core (JSC)](/platforms/react-native/sourcemaps/uploading/jsc/)
diff --git a/docs/platforms/react-native/sourcemaps/troubleshooting/img/001-manual-sourcemaps.png b/docs/platforms/react-native/common/sourcemaps/troubleshooting/img/001-manual-sourcemaps.png
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/troubleshooting/img/001-manual-sourcemaps.png
rename to docs/platforms/react-native/common/sourcemaps/troubleshooting/img/001-manual-sourcemaps.png
diff --git a/docs/platforms/react-native/sourcemaps/troubleshooting/index.mdx b/docs/platforms/react-native/common/sourcemaps/troubleshooting/index.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/troubleshooting/index.mdx
rename to docs/platforms/react-native/common/sourcemaps/troubleshooting/index.mdx
diff --git a/docs/platforms/react-native/sourcemaps/troubleshooting/legacy-uploading-methods.mdx b/docs/platforms/react-native/common/sourcemaps/troubleshooting/legacy-uploading-methods.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/troubleshooting/legacy-uploading-methods.mdx
rename to docs/platforms/react-native/common/sourcemaps/troubleshooting/legacy-uploading-methods.mdx
diff --git a/docs/platforms/react-native/sourcemaps/troubleshooting/optional-release-and-distribution.mdx b/docs/platforms/react-native/common/sourcemaps/troubleshooting/optional-release-and-distribution.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/troubleshooting/optional-release-and-distribution.mdx
rename to docs/platforms/react-native/common/sourcemaps/troubleshooting/optional-release-and-distribution.mdx
diff --git a/docs/platforms/react-native/sourcemaps/uploading/codepush.mdx b/docs/platforms/react-native/common/sourcemaps/uploading/codepush.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/uploading/codepush.mdx
rename to docs/platforms/react-native/common/sourcemaps/uploading/codepush.mdx
diff --git a/docs/platforms/react-native/sourcemaps/uploading/hermes.mdx b/docs/platforms/react-native/common/sourcemaps/uploading/hermes.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/uploading/hermes.mdx
rename to docs/platforms/react-native/common/sourcemaps/uploading/hermes.mdx
diff --git a/docs/platforms/react-native/sourcemaps/uploading/index.mdx b/docs/platforms/react-native/common/sourcemaps/uploading/index.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/uploading/index.mdx
rename to docs/platforms/react-native/common/sourcemaps/uploading/index.mdx
diff --git a/docs/platforms/react-native/sourcemaps/uploading/jsc.mdx b/docs/platforms/react-native/common/sourcemaps/uploading/jsc.mdx
similarity index 100%
rename from docs/platforms/react-native/sourcemaps/uploading/jsc.mdx
rename to docs/platforms/react-native/common/sourcemaps/uploading/jsc.mdx
diff --git a/docs/platforms/react-native/tracing/index.mdx b/docs/platforms/react-native/common/tracing/index.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/index.mdx
rename to docs/platforms/react-native/common/tracing/index.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/automatic-instrumentation.mdx b/docs/platforms/react-native/common/tracing/instrumentation/automatic-instrumentation.mdx
similarity index 99%
rename from docs/platforms/react-native/tracing/instrumentation/automatic-instrumentation.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/automatic-instrumentation.mdx
index e1b6112464b69c..06a0592e0b0c9e 100644
--- a/docs/platforms/react-native/tracing/instrumentation/automatic-instrumentation.mdx
+++ b/docs/platforms/react-native/common/tracing/instrumentation/automatic-instrumentation.mdx
@@ -28,7 +28,7 @@ When no routing instrumentation is used, a transaction for `App Start` is automa
We currently provide three routing instrumentations out of the box to instrument route changes for:
-- [Expo Router](/platforms/react-native/tracing/instrumentation/expo-router/)
+- [Expo Router](/platforms/react-native/guides/expo/tracing/instrumentation/expo-router/)
- [React Navigation](/platforms/react-native/tracing/instrumentation/react-navigation/)
- [React Native Navigation](/platforms/react-native/tracing/instrumentation/react-native-navigation/)
diff --git a/docs/platforms/react-native/tracing/instrumentation/custom-instrumentation.mdx b/docs/platforms/react-native/common/tracing/instrumentation/custom-instrumentation.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/custom-instrumentation.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/custom-instrumentation.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/custom-navigation.mdx b/docs/platforms/react-native/common/tracing/instrumentation/custom-navigation.mdx
similarity index 88%
rename from docs/platforms/react-native/tracing/instrumentation/custom-navigation.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/custom-navigation.mdx
index 9baf9c68ce6a3e..323e50af4814ee 100644
--- a/docs/platforms/react-native/tracing/instrumentation/custom-navigation.mdx
+++ b/docs/platforms/react-native/common/tracing/instrumentation/custom-navigation.mdx
@@ -4,7 +4,7 @@ description: "Learn how to use Sentry's Generic Navigation instrumentation."
sidebar_order: 70
---
-Sentry's React Native SDK package ships with instrumentation for [React Navigation](/platforms/react-native/tracing/instrumentation/react-navigation/), [React Native Navigation](/platforms/react-native/tracing/instrumentation/react-native-navigation/), and [Expo Router](/platforms/react-native/tracing/instrumentation/expo-router/). This allows you to see the performance of your navigation transitions and the errors that may occur.
+Sentry's React Native SDK package ships with instrumentation for [React Navigation](/platforms/react-native/tracing/instrumentation/react-navigation/), [React Native Navigation](/platforms/react-native/tracing/instrumentation/react-native-navigation/), and [Expo Router](/platforms/react-native/guides/expo/tracing/instrumentation/expo-router/). This allows you to see the performance of your navigation transitions and the errors that may occur.
If you use a navigation library that we don't yet support, or have a custom routing solution, you can use `startIdleNavigationSpan` function to implement your own navigation integration. This page will guide you through setting it up and configuring it to your needs.
diff --git a/docs/platforms/react-native/tracing/instrumentation/index.mdx b/docs/platforms/react-native/common/tracing/instrumentation/index.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/index.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/index.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx b/docs/platforms/react-native/common/tracing/instrumentation/performance-metrics.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/performance-metrics.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/performance-metrics.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/react-native-navigation.mdx b/docs/platforms/react-native/common/tracing/instrumentation/react-native-navigation.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/react-native-navigation.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/react-native-navigation.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/react-navigation.mdx b/docs/platforms/react-native/common/tracing/instrumentation/react-navigation.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/react-navigation.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/react-navigation.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/time-to-display.mdx b/docs/platforms/react-native/common/tracing/instrumentation/time-to-display.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/time-to-display.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/time-to-display.mdx
diff --git a/docs/platforms/react-native/tracing/instrumentation/user-interaction-instrumentation.mdx b/docs/platforms/react-native/common/tracing/instrumentation/user-interaction-instrumentation.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/instrumentation/user-interaction-instrumentation.mdx
rename to docs/platforms/react-native/common/tracing/instrumentation/user-interaction-instrumentation.mdx
diff --git a/docs/platforms/react-native/tracing/trace-propagation/dealing-with-cors-issues/index.mdx b/docs/platforms/react-native/common/tracing/trace-propagation/dealing-with-cors-issues/index.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/trace-propagation/dealing-with-cors-issues/index.mdx
rename to docs/platforms/react-native/common/tracing/trace-propagation/dealing-with-cors-issues/index.mdx
diff --git a/docs/platforms/react-native/tracing/trace-propagation/index.mdx b/docs/platforms/react-native/common/tracing/trace-propagation/index.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/trace-propagation/index.mdx
rename to docs/platforms/react-native/common/tracing/trace-propagation/index.mdx
diff --git a/docs/platforms/react-native/tracing/troubleshooting/index.mdx b/docs/platforms/react-native/common/tracing/troubleshooting/index.mdx
similarity index 100%
rename from docs/platforms/react-native/tracing/troubleshooting/index.mdx
rename to docs/platforms/react-native/common/tracing/troubleshooting/index.mdx
diff --git a/docs/platforms/react-native/troubleshooting/index.mdx b/docs/platforms/react-native/common/troubleshooting/index.mdx
similarity index 99%
rename from docs/platforms/react-native/troubleshooting/index.mdx
rename to docs/platforms/react-native/common/troubleshooting/index.mdx
index ef3e7386a07ae3..4829f116c391cf 100644
--- a/docs/platforms/react-native/troubleshooting/index.mdx
+++ b/docs/platforms/react-native/common/troubleshooting/index.mdx
@@ -149,7 +149,7 @@ If you're using `React Navigation 5` and you're not receiving transactions anymo
## RAM Bundles Mismatched Line Numbers
-If you experience mismatched line numbers on [sentry.io](https://sentry.io) when using RAM Bundles, this is due to a [bug](https://github.com/facebook/metro/issues/399) on the Metro tooling.
+If you experience mismatched line numbers on [sentry.io](https://sentry.io) when using RAM Bundles, this is due to a [bug](https://github.com/react/metro/issues/399) on the Metro tooling.
## Uploading source maps from Xcode Cloud
@@ -313,7 +313,7 @@ $SENTRY_CLI debug-files upload "$INCLUDE_SOURCES_FLAG" "$DWARF_DSYM_FOLDER_PATH"
## Missing Java stack trace on the New Architecture
-If you're using the new architecture on React Native, you might be missing the Java stack trace. Follow the [issue](https://github.com/facebook/react-native/issues/34923) for more information.
+If you're using the new architecture on React Native, you might be missing the Java stack trace. Follow the [issue](https://github.com/react/react-native/issues/34923) for more information.
## Failing Build Due to `sentry-cli`
@@ -345,7 +345,7 @@ To resolve the conflict, use one of the following approaches:
- **Use only one tool to wrap the build phase.** If only one of the SDKs captures errors, only that SDK needs to wrap the build phase. The other SDK, if it's not used for error reporting, doesn't need automatic debug-file upload.
-- **Upload debug files manually.** Disable both tools' automatic upload and upload source maps yourself. See [Manual Upload for Hermes Release](/platforms/react-native/sourcemaps/uploading/expo-advanced/).
+- **Upload debug files manually.** Disable both tools' automatic upload and upload source maps yourself. See [Manual Upload for Hermes Release](/platforms/react-native/guides/expo/sourcemaps/uploading/expo-advanced/).
### Expo
diff --git a/docs/platforms/react-native/upload-debug/index.mdx b/docs/platforms/react-native/common/upload-debug/index.mdx
similarity index 100%
rename from docs/platforms/react-native/upload-debug/index.mdx
rename to docs/platforms/react-native/common/upload-debug/index.mdx
diff --git a/docs/platforms/react-native/usage/event-information.mdx b/docs/platforms/react-native/common/usage/event-information.mdx
similarity index 100%
rename from docs/platforms/react-native/usage/event-information.mdx
rename to docs/platforms/react-native/common/usage/event-information.mdx
diff --git a/docs/platforms/react-native/usage/index.mdx b/docs/platforms/react-native/common/usage/index.mdx
similarity index 100%
rename from docs/platforms/react-native/usage/index.mdx
rename to docs/platforms/react-native/common/usage/index.mdx
diff --git a/docs/platforms/react-native/usage/sdk-fingerprinting/index.mdx b/docs/platforms/react-native/common/usage/sdk-fingerprinting/index.mdx
similarity index 100%
rename from docs/platforms/react-native/usage/sdk-fingerprinting/index.mdx
rename to docs/platforms/react-native/common/usage/sdk-fingerprinting/index.mdx
diff --git a/docs/platforms/react-native/usage/set-level/index.mdx b/docs/platforms/react-native/common/usage/set-level/index.mdx
similarity index 100%
rename from docs/platforms/react-native/usage/set-level/index.mdx
rename to docs/platforms/react-native/common/usage/set-level/index.mdx
diff --git a/docs/platforms/react-native/user-feedback/configuration/img/mobile-user-feedback-widget-customization.png b/docs/platforms/react-native/common/user-feedback/configuration/img/mobile-user-feedback-widget-customization.png
similarity index 100%
rename from docs/platforms/react-native/user-feedback/configuration/img/mobile-user-feedback-widget-customization.png
rename to docs/platforms/react-native/common/user-feedback/configuration/img/mobile-user-feedback-widget-customization.png
diff --git a/docs/platforms/react-native/user-feedback/configuration/index.mdx b/docs/platforms/react-native/common/user-feedback/configuration/index.mdx
similarity index 100%
rename from docs/platforms/react-native/user-feedback/configuration/index.mdx
rename to docs/platforms/react-native/common/user-feedback/configuration/index.mdx
diff --git a/docs/platforms/react-native/user-feedback/img/user-feedback-rn-android-widget.png b/docs/platforms/react-native/common/user-feedback/img/user-feedback-rn-android-widget.png
similarity index 100%
rename from docs/platforms/react-native/user-feedback/img/user-feedback-rn-android-widget.png
rename to docs/platforms/react-native/common/user-feedback/img/user-feedback-rn-android-widget.png
diff --git a/docs/platforms/react-native/user-feedback/img/user-feedback-rn-ios-widget.png b/docs/platforms/react-native/common/user-feedback/img/user-feedback-rn-ios-widget.png
similarity index 100%
rename from docs/platforms/react-native/user-feedback/img/user-feedback-rn-ios-widget.png
rename to docs/platforms/react-native/common/user-feedback/img/user-feedback-rn-ios-widget.png
diff --git a/docs/platforms/react-native/user-feedback/index.mdx b/docs/platforms/react-native/common/user-feedback/index.mdx
similarity index 100%
rename from docs/platforms/react-native/user-feedback/index.mdx
rename to docs/platforms/react-native/common/user-feedback/index.mdx
diff --git a/docs/platforms/react-native/config.yml b/docs/platforms/react-native/config.yml
new file mode 100644
index 00000000000000..efaa260fe37411
--- /dev/null
+++ b/docs/platforms/react-native/config.yml
@@ -0,0 +1,16 @@
+title: React Native
+# platformTitle is the dropdown/group label on the home page and platform
+# selector. Setting it injects the platform itself as a default guide, so the
+# "React Native" group lists both "React Native" (bare/CLI) and "Expo" as
+# siblings (mirrors how "JavaScript" groups "Browser JavaScript" + frameworks).
+platformTitle: React Native
+sidebar_title: React Native
+caseStyle: camelCase
+supportLevel: production
+sdk: sentry.javascript.react-native
+fallbackPlatform: javascript
+categories:
+ - mobile
+keywords:
+ - react-native
+ - expo
diff --git a/docs/platforms/react-native/manual-setup/expo.mdx b/docs/platforms/react-native/guides/expo/index.mdx
similarity index 51%
rename from docs/platforms/react-native/manual-setup/expo.mdx
rename to docs/platforms/react-native/guides/expo/index.mdx
index c72ab6955c4245..6142a6f0656aa2 100644
--- a/docs/platforms/react-native/manual-setup/expo.mdx
+++ b/docs/platforms/react-native/guides/expo/index.mdx
@@ -1,20 +1,33 @@
---
title: Expo
-description: "Learn how to set up an Expo-managed project with the Sentry React Native SDK."
+description: "Learn how to set up an Expo project with Sentry's React Native SDK, including the Sentry Expo config plugin, Expo Router tracing, Expo Updates context, and the EAS dashboard integration."
+caseStyle: camelCase
+supportLevel: production
+sdk: sentry.javascript.react-native
+fallbackPlatform: react-native
+categories:
+ - mobile
---
-To set up the Sentry React Native SDK in your Expo project, follow the steps on this page.
+
+
+Use this guide to get fully set up with Sentry's React Native SDK in an [Expo](https://expo.dev/) project. The same `@sentry/react-native` SDK powers both bare React Native and Expo apps. This guide covers the Expo-specific setup (config plugin, Metro, EAS) and integrations.
+
+
+
+If you don't already have an account and Sentry project established, head over to [sentry.io](https://sentry.io/signup/), then return to this page.
+
+
## Prerequisites
-- [Expo SDK 50](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/) or newer.
- - [Expo SDK 49](https://docs.expo.dev/guides/using-sentry/) and older are supported by the `sentry-expo` package.
-- [Migrate from `sentry-expo` to `@sentry/react-native`](/platforms/react-native/migration/sentry-expo/).
+- [Expo SDK 50](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/) or newer. The `@sentry/react-native` SDK requires Expo SDK 50+.
+ - On [Expo SDK 49](https://docs.expo.dev/guides/using-sentry/) or older, the legacy `sentry-expo` package was used. It's now deprecated — [migrate to `@sentry/react-native`](/platforms/react-native/guides/expo/migration/sentry-expo/) to keep receiving updates.
- [Sign up for an account](https://sentry.io/signup/).
## Automatic Install
-Use the [Sentry Wizard](https://github.com/getsentry/sentry-wizard) to patch your project automatically, as shown below. Alternatively, you can follow the [Manual Install](./#manual-install) if you prefer. You only need to patch the project once. Then, you can add the patched files to your version control system.
+Use the Sentry Wizard to patch your project automatically, as shown below. Alternatively, you can follow the [Manual Install](#manual-install) if you prefer. You only need to patch the project once. Then, you can add the patched files to your version control system.
```bash {tabTitle:npm}
npx @sentry/wizard@latest -i reactNative
@@ -58,10 +71,10 @@ pnpm add @sentry/react-native
@@ -98,7 +111,7 @@ Sentry.init({
// Record session replays for 100% of errors and 10% of sessions
replaysOnErrorSampleRate: 1.0,
replaysSessionSampleRate: 0.1,
- integrations: [Sentry.mobileReplayIntegration()],
+ integrations: [Sentry.mobileReplayIntegration()],
// ___PRODUCT_OPTION_END___ session-replay
});
@@ -119,7 +132,7 @@ export default Sentry.wrap(RootLayout);
### 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:
+To ensure bundles and source maps are automatically uploaded during the native application builds, add the Sentry plugin to your Expo app configuration. Add it to the `plugins` array in `app.json`, or wrap your config with `withSentry` in `app.config.js`/`app.config.ts`:
@@ -131,7 +144,7 @@ To ensure unique Debug IDs get assigned to the generated bundles and source maps
### Add Privacy Manifest
-The SDK needs access to certain information about the device and the application for its essential functionality. Some of the APIs required for this are considered privacy-relevant. Add the privacy manifest to your Xcode project to ensure your app is compliant with Apple's guidelines. Read the [Apple Privacy Manifest](/platforms/react-native/data-management/apple-privacy-manifest/) guide for more info on how to add records required for the Sentry SDKs.
+The SDK needs access to certain information about the device and the application for its essential functionality. Some of the APIs required for this are considered privacy-relevant. Add the privacy manifest to your Xcode project to ensure your app is compliant with Apple's guidelines. Read the [Apple Privacy Manifest](/platforms/react-native/guides/expo/data-management/apple-privacy-manifest/) guide for more info on how to add records required for the Sentry SDKs.
## Verify Setup
@@ -146,25 +159,52 @@ To verify that everything is working as expected, build the `Release` version of
/>
```
-## Next Steps
+## Expo-Specific Features
-### Expo-Specific Features
+- [Expo Updates](/platforms/react-native/guides/expo/manual-setup/expo/expo-updates/) — Automatic OTA update context, searchable tags, and emergency launch alerts
+- [EAS Build Hooks](/platforms/react-native/guides/expo/manual-setup/expo/eas-build-hooks/) — Capture build failures and lifecycle events from EAS Build
+- [Sentry Android Gradle Plugin](/platforms/react-native/guides/expo/manual-setup/expo/gradle/) — Advanced Android build configuration
+- [Expo Router tracing](/platforms/react-native/guides/expo/tracing/instrumentation/expo-router/) — Navigation transitions, performance spans, prefetch instrumentation, and per-route `ErrorBoundary` capture
+- [Expo Image and Asset tracing](/platforms/react-native/guides/expo/tracing/instrumentation/expo-resources/) — Automatic spans for `expo-image` and `expo-asset`
+- [Upload source maps for native builds and Expo Updates](/platforms/react-native/guides/expo/sourcemaps/uploading/expo/)
-- [Expo Updates](/platforms/react-native/manual-setup/expo/expo-updates/) — Automatic OTA update context, searchable tags, and emergency launch alerts
-- [EAS Build Hooks](/platforms/react-native/manual-setup/expo/eas-build-hooks/) — Capture build failures and lifecycle events from EAS Build
-- [Sentry Android Gradle Plugin](/platforms/react-native/manual-setup/expo/gradle/) — Advanced Android build configuration
+## Notes
-### Source Maps and Releases
+- Don't commit your auth token. Store it in `.env.local` as `SENTRY_AUTH_TOKEN` for local builds, and as an [EAS secret](https://docs.expo.dev/eas/environment-variables/) for EAS builds.
+- 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.
-- [Upload source maps for native builds and Expo Updates](/platforms/react-native/sourcemaps/uploading/expo/)
+## Integrate Sentry with your EAS dashboard
-### Performance
+Once the SDK is set up, you can also connect Sentry to [Expo Application Services (EAS)](https://expo.dev/eas) so crash reports and [Session Replays](/platforms/react-native/guides/expo/session-replay/) for your deployments show up directly in your EAS dashboard, with direct links to Sentry stack traces and full debugging context.
-- [Expo Router tracing](/platforms/react-native/tracing/instrumentation/expo-router/) — Navigation transitions, performance spans, prefetch instrumentation, and per-route `ErrorBoundary` capture
-- [Expo Image and Asset tracing](/platforms/react-native/tracing/instrumentation/expo-resources/) — Automatic spans for `expo-image` and `expo-asset`
+
-## Notes
+If you change your organization slug, you'll need to update your configuration for this integration. Learn more in our [troubleshooting guide](/integrations/troubleshooting).
-- Don't commit your auth token. Store it in `.env.local` as `SENTRY_AUTH_TOKEN` for local builds, and as an [EAS secret](https://docs.expo.dev/eas/environment-variables/) for EAS builds.
-- 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.
+
+
+### Install the integration
+
+
+
+Sentry owner, manager, or admin permissions are required to install this integration.
+
+
+
+1. Log in to your Expo dashboard and open **Account Settings > Overview** (`https://expo.dev/accounts/[your-account]/settings`).
+2. Locate the **Connections** section and click **Connect** next to Sentry.
+3. Log in to Sentry and accept the integration into your organization. You'll be redirected back to Account Settings > Overview.
+
+### Link your projects
+
+After connecting your accounts, link your Expo project to your Sentry project:
+
+1. Open **Projects > [Your Project] > Configuration > Project settings** in the Expo dashboard.
+2. Click **Link** and select your Sentry project from the dropdown.
+
+### View Sentry data in EAS
+
+To see your Sentry issues and replays in the Expo dashboard, first make sure you've created an [EAS Update channel](https://docs.expo.dev/eas-update/how-it-works/) and assigned builds to it to create an [EAS deployment](https://docs.expo.dev/eas-update/deployment/). Then:
+
+1. Open **Projects > [Your Project] > Updates > Deployments > [Deployment]** to view Sentry data from a release.
diff --git a/docs/platforms/react-native/manual-setup/expo/eas-build-hooks.mdx b/docs/platforms/react-native/guides/expo/manual-setup/expo/eas-build-hooks.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/expo/eas-build-hooks.mdx
rename to docs/platforms/react-native/guides/expo/manual-setup/expo/eas-build-hooks.mdx
diff --git a/docs/platforms/react-native/manual-setup/expo/expo-updates.mdx b/docs/platforms/react-native/guides/expo/manual-setup/expo/expo-updates.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/expo/expo-updates.mdx
rename to docs/platforms/react-native/guides/expo/manual-setup/expo/expo-updates.mdx
diff --git a/docs/platforms/react-native/manual-setup/expo/gradle.mdx b/docs/platforms/react-native/guides/expo/manual-setup/expo/gradle.mdx
similarity index 100%
rename from docs/platforms/react-native/manual-setup/expo/gradle.mdx
rename to docs/platforms/react-native/guides/expo/manual-setup/expo/gradle.mdx
diff --git a/docs/platforms/react-native/migration/sentry-expo.mdx b/docs/platforms/react-native/guides/expo/migration/sentry-expo.mdx
similarity index 93%
rename from docs/platforms/react-native/migration/sentry-expo.mdx
rename to docs/platforms/react-native/guides/expo/migration/sentry-expo.mdx
index b19494d813d5ac..48e0d74f4b8512 100644
--- a/docs/platforms/react-native/migration/sentry-expo.mdx
+++ b/docs/platforms/react-native/guides/expo/migration/sentry-expo.mdx
@@ -24,7 +24,7 @@ pnpm remove sentry-expo
### Remove `sentry-expo/upload-sourcemaps` from `postPublish` hooks
-Remove the Sentry Source Maps Upload hook from your Expo Application configuration, `expo.hooks.postPublish`. The new methods of uploading source maps are described in the [new Expo guide](/platforms/react-native/manual-setup/expo/), as part of the final step of the migration [at the bottom of the page](/platforms/react-native/migration/sentry-expo/#set-up-the-sentryreact-native-expo-and-metro-plugins).
+Remove the Sentry Source Maps Upload hook from your Expo Application configuration, `expo.hooks.postPublish`. The new methods of uploading source maps are described in the [new Expo guide](/platforms/react-native/guides/expo/), as part of the final step of the migration [at the bottom of the page](/platforms/react-native/guides/expo/migration/sentry-expo/#set-up-the-sentryreact-native-expo-and-metro-plugins).
## Install `@sentry/react-native`
@@ -124,4 +124,4 @@ To continue using `@sentry/react` for `react-native-web` builds, see [@sentry/re
## Set Up the `@sentry/react-native` Expo and Metro Plugins
-Next, [set up the Expo and Metro plugins](/platforms/react-native/manual-setup/expo/) for `@sentry/react-native`.
+Next, [set up the Expo and Metro plugins](/platforms/react-native/guides/expo/) for `@sentry/react-native`.
diff --git a/docs/platforms/react-native/sourcemaps/uploading/expo-advanced.mdx b/docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo-advanced.mdx
similarity index 96%
rename from docs/platforms/react-native/sourcemaps/uploading/expo-advanced.mdx
rename to docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo-advanced.mdx
index 82eb0b23f9f836..8a300c30627eb4 100644
--- a/docs/platforms/react-native/sourcemaps/uploading/expo-advanced.mdx
+++ b/docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo-advanced.mdx
@@ -5,13 +5,13 @@ description: "Manually upload source maps for native Expo releases."
Sentry's React Native SDK works out of the box with Expo applications. To see readable stack traces in the product, you must upload source maps to Sentry. This guide explains how to manually upload source maps for Expo application releases.
-For a guide on how to automatically upload source maps for Expo application releases or updates, see the [Expo](/platforms/react-native/sourcemaps/uploading/expo/) source maps docs.
+For a guide on how to automatically upload source maps for Expo application releases or updates, see the [Expo](/platforms/react-native/guides/expo/sourcemaps/uploading/expo/) source maps docs.
## Prerequisites
- [Sign up for an account](https://sentry.io/signup/)
-- [Migrate from `sentry-expo` to `@sentry/react-native`](/platforms/react-native/migration/sentry-expo/)
-- [Set up Sentry React Native SDK](/platforms/react-native/manual-setup/expo/) version 5.16.0-alpha.4 or newer
+- [Migrate from `sentry-expo` to `@sentry/react-native`](/platforms/react-native/guides/expo/migration/sentry-expo/)
+- [Set up Sentry React Native SDK](/platforms/react-native/guides/expo/) version 5.16.0-alpha.4 or newer
diff --git a/docs/platforms/react-native/sourcemaps/uploading/expo.mdx b/docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo.mdx
similarity index 92%
rename from docs/platforms/react-native/sourcemaps/uploading/expo.mdx
rename to docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo.mdx
index 14fd15a489c92d..2bd883e43d9bad 100644
--- a/docs/platforms/react-native/sourcemaps/uploading/expo.mdx
+++ b/docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo.mdx
@@ -8,8 +8,8 @@ Sentry's React Native SDK works out of the box with Expo applications. To see re
## Prerequisites
- [Sign up for an account](https://sentry.io/signup/)
-- [Migrate from `sentry-expo` to `@sentry/react-native`](/platforms/react-native/migration/sentry-expo/)
-- [Set up Sentry React Native SDK](/platforms/react-native/manual-setup/expo/) version 5.16.0-alpha.4 or newer
+- [Migrate from `sentry-expo` to `@sentry/react-native`](/platforms/react-native/guides/expo/migration/sentry-expo/)
+- [Set up Sentry React Native SDK](/platforms/react-native/guides/expo/) version 5.16.0-alpha.4 or newer
@@ -72,4 +72,4 @@ Both forms produce identical results; the scoped package is preferred for new se
## Notes
-For a guide on how to manually upload source maps for Expo application releases, see the [Expo (Advanced)](/platforms/react-native/sourcemaps/uploading/expo-advanced/) source maps docs.
+For a guide on how to manually upload source maps for Expo application releases, see the [Expo (Advanced)](/platforms/react-native/guides/expo/sourcemaps/uploading/expo-advanced/) source maps docs.
diff --git a/docs/platforms/react-native/tracing/instrumentation/expo-resources.mdx b/docs/platforms/react-native/guides/expo/tracing/instrumentation/expo-resources.mdx
similarity index 94%
rename from docs/platforms/react-native/tracing/instrumentation/expo-resources.mdx
rename to docs/platforms/react-native/guides/expo/tracing/instrumentation/expo-resources.mdx
index 8f4a1fd993cbf7..b830f1186d8b4b 100644
--- a/docs/platforms/react-native/tracing/instrumentation/expo-resources.mdx
+++ b/docs/platforms/react-native/guides/expo/tracing/instrumentation/expo-resources.mdx
@@ -40,5 +40,5 @@ After wrapping, every call to `Asset.loadAsync()` creates a `resource.asset` spa
## Notes
- Both `wrapExpoImage` and `wrapExpoAsset` are safe to call multiple times — the SDK guards against double-wrapping.
-- Spans are only created when a trace is active. If you're not using [tracing](/platforms/react-native/tracing/), no spans are created and there's no overhead.
+- Spans are only created when a trace is active. If you're not using [tracing](/platforms/react-native/guides/expo/tracing/), no spans are created and there's no overhead.
- `expo-image` and `expo-asset` are peer dependencies — the SDK does not require them to be installed.
diff --git a/docs/platforms/react-native/tracing/instrumentation/expo-router.mdx b/docs/platforms/react-native/guides/expo/tracing/instrumentation/expo-router.mdx
similarity index 94%
rename from docs/platforms/react-native/tracing/instrumentation/expo-router.mdx
rename to docs/platforms/react-native/guides/expo/tracing/instrumentation/expo-router.mdx
index 95e0aa9afa87a6..2d9140126e9723 100644
--- a/docs/platforms/react-native/tracing/instrumentation/expo-router.mdx
+++ b/docs/platforms/react-native/guides/expo/tracing/instrumentation/expo-router.mdx
@@ -34,11 +34,11 @@ That's the whole setup. You don't need to add `reactNavigationIntegration` separ
## Options
-`expoRouterIntegration` accepts the same options as [`reactNavigationIntegration`](/platforms/react-native/tracing/instrumentation/react-navigation/#options) and forwards them through. The most common ones:
+`expoRouterIntegration` accepts the same options as [`reactNavigationIntegration`](/platforms/react-native/guides/expo/tracing/instrumentation/react-navigation/#options) and forwards them through. The most common ones:
### `enableTimeToInitialDisplay`
-Enables automatic [Time to Initial Display](/platforms/react-native/tracing/instrumentation/time-to-display) measurement for each navigation. Not supported in Expo Go. Default: `false`.
+Enables automatic [Time to Initial Display](/platforms/react-native/guides/expo/tracing/instrumentation/time-to-display) measurement for each navigation. Not supported in Expo Go. Default: `false`.
### `routeChangeTimeoutMs`
@@ -64,7 +64,7 @@ The integration attaches a structured representation of the active route to ever
`route.name` is built from Expo Router's `segments`, with grouping segments (e.g. `(tabs)`, `(auth)`) stripped so it matches what users see in the URL bar. It's always safe to send.
-`route.path` and `route.params` may contain user identifiers, so they're sent **only when [`sendDefaultPii`](/platforms/react-native/configuration/options/#sendDefaultPii) is `true`**. Without `sendDefaultPii`, only the templated `route.name` is attached, so navigations are still groupable in Sentry without leaking concrete IDs.
+`route.path` and `route.params` may contain user identifiers, so they're sent **only when [`sendDefaultPii`](/platforms/react-native/guides/expo/configuration/options/#sendDefaultPii) is `true`**. Without `sendDefaultPii`, only the templated `route.name` is attached, so navigations are still groupable in Sentry without leaking concrete IDs.
## Wrapped Router Methods
diff --git a/redirects.js b/redirects.js
index dc45e24574aa83..bd3a3539d2fe1d 100644
--- a/redirects.js
+++ b/redirects.js
@@ -1803,6 +1803,48 @@ const userDocsRedirects = [
source: '/platforms/react-native/manual-setup/codepush/',
destination: '/platforms/react-native/sourcemaps/uploading/codepush/',
},
+ // Expo-specific pages moved under the Expo guide (/guides/expo/)
+ {
+ source: '/platforms/react-native/manual-setup/expo/',
+ destination: '/platforms/react-native/guides/expo/',
+ },
+ {
+ source: '/platforms/react-native/manual-setup/expo/eas-build-hooks/',
+ destination:
+ '/platforms/react-native/guides/expo/manual-setup/expo/eas-build-hooks/',
+ },
+ {
+ source: '/platforms/react-native/manual-setup/expo/expo-updates/',
+ destination:
+ '/platforms/react-native/guides/expo/manual-setup/expo/expo-updates/',
+ },
+ {
+ source: '/platforms/react-native/manual-setup/expo/gradle/',
+ destination: '/platforms/react-native/guides/expo/manual-setup/expo/gradle/',
+ },
+ {
+ source: '/platforms/react-native/migration/sentry-expo/',
+ destination: '/platforms/react-native/guides/expo/migration/sentry-expo/',
+ },
+ {
+ source: '/platforms/react-native/sourcemaps/uploading/expo/',
+ destination: '/platforms/react-native/guides/expo/sourcemaps/uploading/expo/',
+ },
+ {
+ source: '/platforms/react-native/sourcemaps/uploading/expo-advanced/',
+ destination:
+ '/platforms/react-native/guides/expo/sourcemaps/uploading/expo-advanced/',
+ },
+ {
+ source: '/platforms/react-native/tracing/instrumentation/expo-router/',
+ destination:
+ '/platforms/react-native/guides/expo/tracing/instrumentation/expo-router/',
+ },
+ {
+ source: '/platforms/react-native/tracing/instrumentation/expo-resources/',
+ destination:
+ '/platforms/react-native/guides/expo/tracing/instrumentation/expo-resources/',
+ },
{
source:
'/platforms/react-native/data-management/debug-files/source-context/data-management/debug-files/upload/',
diff --git a/src/components/platformIcon.tsx b/src/components/platformIcon.tsx
index 83d325db9095fa..1ea860b18bb6f8 100644
--- a/src/components/platformIcon.tsx
+++ b/src/components/platformIcon.tsx
@@ -305,6 +305,12 @@ import WasmSVGLarge from 'platformicons/svg_80x80/wasm.svg';
import WindowsSVGLarge from 'platformicons/svg_80x80/windows.svg';
import XamarinSVGLarge from 'platformicons/svg_80x80/xamarin.svg';
import XboxSVGLarge from 'platformicons/svg_80x80/xbox.svg';
+// The Expo icon exists on platformicons master (getsentry/platformicons
+// b20159fb) but isn't in a published release yet (latest is 9.5.0). This local
+// copy is byte-identical to the upstream svg/expo.svg; once platformicons cuts
+// a release with it, bump the dependency and switch to
+// `platformicons/svg/expo.svg` (+ svg_80x80) like every other icon.
+import ExpoSVG from 'sentry-docs/icons/expo.svg';
const formatToSVG = {
HTML5: {
@@ -504,6 +510,10 @@ const formatToSVG = {
sm: EmberSVG,
lg: EmberSVGLarge,
},
+ expo: {
+ sm: ExpoSVG,
+ lg: ExpoSVG,
+ },
express: {
sm: ExpressSVG,
lg: ExpressSVGLarge,
@@ -962,6 +972,7 @@ export const PLATFORM_TO_ICON = {
dotnetfx: 'dotnetfx',
electron: 'electron',
elixir: 'elixir',
+ expo: 'expo',
flutter: 'flutter',
font: 'font',
fsharp: 'fsharp',
@@ -1108,6 +1119,10 @@ export const PLATFORM_TO_ICON = {
powershell: 'powershell',
qt: 'qt',
'react-native': 'react-native',
+ // The Expo guide's platform key is `react-native.expo` (normalized to
+ // `react-native-expo`); map it so it gets the Expo icon instead of falling
+ // back to the React language icon.
+ 'react-native-expo': 'expo',
ruby: 'ruby',
'ruby-rack': 'ruby',
'ruby-rails': 'rails',
diff --git a/src/icons/expo.svg b/src/icons/expo.svg
new file mode 100644
index 00000000000000..190132c29765c3
--- /dev/null
+++ b/src/icons/expo.svg
@@ -0,0 +1,6 @@
+