diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 2938aae6e3ffd..93fb28ce6ef5e 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -45,11 +45,10 @@
# ###### Replays #######
-# /src/docs/product/session-replay/ @getsentry/replay
-# /src/includes/feature-stage-beta-session-replay.mdx @getsentry/replay
-# /src/platform-includes/session-replay/ @getsentry/replay @getsentry/replay-sdk-web
-# /src/platforms/javascript/common/session-replay/ @getsentry/replay @getsentry/replay-sdk-web
-# /src/wizard/javascript/replay-onboarding/ @getsentry/replay @getsentry/replay-sdk-web
+# /src/docs/product/session-replay/ @getsentry/replay
+# /src/includes/session-replay-web-report-bug.mdx @getsentry/replay
+# /src/platform-includes/session-replay/ @getsentry/replay @getsentry/replay-sdk-web
+# /src/platforms/javascript/common/session-replay/ @getsentry/replay @getsentry/replay-sdk-web
+# /src/wizard/javascript/replay-onboarding/ @getsentry/replay @getsentry/replay-sdk-web
# ###### End Replays #######
-
diff --git a/docs/platforms/android/session-replay/index.mdx b/docs/platforms/android/session-replay/index.mdx
new file mode 100644
index 0000000000000..0b748110b9b08
--- /dev/null
+++ b/docs/platforms/android/session-replay/index.mdx
@@ -0,0 +1,120 @@
+---
+title: Set Up Session Replay - Beta
+sidebar_order: 5500
+notSupported:
+description: "Learn how to enable the Beta of Mobile Session Replay in your app."
+---
+
+
+
+Mobile support for Session Replay is in Beta. Features available in Beta are still work-in-progress and may have bugs. We recognize the irony.
+
+If you have any questions, feedback or would like to report a bug, please open a [GitHub issue](https://github.com/getsentry/sentry-java/issues/new?assignees=&labels=Platform%3A+Android%2CType%3A+Bug&projects=&template=bug_report_android.yml) with a link to a relevant replay in Sentry if possible.
+
+
+
+[Session Replay](/product/explore/session-replay/) helps you get to the root cause of an error or latency issue faster by providing you with a reproduction of what was happening in the user's device before, during, and after the issue. You can rewind and replay your application's state and see key user interactions, like taps, swipes, network requests, and console entries, in a single UI.
+
+By default, our Session Replay SDK masks all text content, images, and user input, giving you heightened confidence that no sensitive data will leave the device. To learn more, see Session Replay Product docs.
+
+## Pre-requisites
+
+Make sure your Sentry Android SDK version is at least 7.12.0.
+
+## Install
+
+The easiest way to update through the Sentry Android Gradle plugin to your app module's `build.gradle` file.
+
+```groovy {filename:app/build.gradle}
+plugins {
+ id "com.android.application"
+ id "io.sentry.android.gradle" version "{{@inject packages.version('sentry.java.android.gradle-plugin', '4.10.0') }}"
+}
+```
+
+```kotlin {filename:app/build.gradle.kts}
+plugins {
+ id("com.android.application")
+ id("io.sentry.android.gradle") version "{{@inject packages.version('sentry.java.android.gradle-plugin', '4.10.0') }}"
+}
+```
+
+If you have the SDK installed without the Sentry Gradle Plugin, you can update the version directly in the `build.gradle` through:
+```groovy {filename:app/build.gradle}
+dependencies {
+ implementation 'io.sentry:sentry-android:{{@inject packages.version('sentry.java.android', '7.12.0') }}'
+}
+```
+
+```kotlin {filename:app/build.gradle.kts}
+dependencies {
+ implementation("io.sentry:sentry-android:{{@inject packages.version('sentry.java.android', '7.12.0') }}")
+}
+```
+
+## Set Up
+
+To set up the integration, add the following to your Sentry initialization.
+
+```kotlin
+SentryAndroid.init(context) { options ->
+ options.dsn = "___PUBLIC_DSN___"
+ options.isDebug = true
+
+ // Currently under experimental options:
+ options.experimental.sessionReplay.errorSampleRate = 1.0
+ options.experimental.sessionReplay.sessionSampleRate = 1.0
+}
+```
+
+```xml {filename:AndroidManifest.xml}
+
+
+```
+
+
+
+## Verify
+
+While you're testing, we recommend that you set `sessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry.
+
+Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `errorSampleRate` set to `1.0`.
+
+## Sampling
+
+Sampling allows you to control how much of your website's traffic will result in a Session Replay. There are two sample rates you can adjust to get the replays relevant to you:
+
+1. `sessionSampleRate` - The sample rate for
+ replays that begin recording immediately and last the entirety of the user's session.
+2. `errorSampleRate` - The sample rate for
+ replays that are recorded when an error happens. This type of replay will record
+ up to a minute of events prior to the error and continue recording until the session
+ ends.
+
+Sampling begins as soon as a session starts. `sessionSampleRate` is evaluated first. If it's sampled, the replay recording will begin. Otherwise, `errorSampleRate` is evaluated and if it's sampled, the integration will begin buffering the replay and will only upload it to Sentry if an error occurs. The remainder of the replay will behave similarly to a whole-session replay.
+
+## Privacy
+
+The SDK is recording and aggressively redacting all text and images. We plan to add fine controls for redacting, but in this version, we just allow either on or off. The default is on. Please don’t turn it off if you have sensitive data in your app. Before the Beta is complete, we'll give you the controls you need.
+
+
+
+Jetpack Compose views are not yet redacted. This is being [tracked here](https://github.com/getsentry/sentry-java/issues/3577).
+If you encounter any other data not being redacted with the default settings, please let us know through a [GitHub issue](https://github.com/getsentry/sentry-java/issues/new?assignees=&labels=Platform%3A+Android%2CType%3A+Bug&projects=&template=bug_report_android.yml).
+
+
+
+To disable redaction altogether (not to be used on applications with sensitive data):
+
+```kotlin
+options.experimental.sessionReplay.redactAllText = false
+options.experimental.sessionReplay.redactAllImages = false
+```
+
+## Error Linking
+
+Errors that happen on the page while a replay is running will be linked to the replay, making it possible to jump between related issues and replays. However, it's **possible** that in some cases the error count reported on the **Replays Details** page won't match the actual errors that have been captured. That's because errors can be lost, and while this is uncommon, there are a few reasons why it could happen:
+
+- The replay was rate-limited and couldn't be accepted.
+- The replay was deleted by a member of your org.
+- There were network errors and the replay wasn't saved.
diff --git a/docs/platforms/apple/guides/ios/session-replay/index.mdx b/docs/platforms/apple/guides/ios/session-replay/index.mdx
new file mode 100644
index 0000000000000..b5b46236fbb76
--- /dev/null
+++ b/docs/platforms/apple/guides/ios/session-replay/index.mdx
@@ -0,0 +1,98 @@
+---
+title: Set Up Session Replay - Beta
+sidebar_order: 5500
+notSupported:
+description: "Learn how to enable the Beta of Mobile Session Replay in your app."
+---
+
+
+
+Mobile support for Session Replay is in Beta. Features available in Beta are still work-in-progress and may have bugs. We recognize the irony.
+
+If you have any questions, feedback or would like to report a bug, please open a [GitHub issue](https://github.com/getsentry/sentry-cocoa/issues/new?assignees=&labels=Platform%3A+Cocoa%2CType%3A+Bug&projects=&template=bug.yml) with a link to a relevant replay in Sentry if possible.
+
+
+
+[Session Replay](/product/explore/session-replay/) helps you get to the root cause of an error or latency issue faster by providing you with a reproduction of what was happening in the user's device before, during, and after the issue. You can rewind and replay your application's state and see key user interactions, like taps, swipes, network requests, and console entries, in a single UI.
+
+By default, our Session Replay SDK masks all text content, images, and user input, giving you heightened confidence that no sensitive data will leave the device. To learn more, see Session Replay Product docs.
+
+## Pre-requisites
+
+Make sure your Sentry Cocoa SDK version is at least 8.31.1
+
+## Install
+
+If you already have the SDK installed, you can update it to the latest version with:
+
+```swift {tabTitle:SPM}
+.package(url: "https://github.com/getsentry/sentry-cocoa", from: "{{@inject packages.version('sentry.cocoa') }}"),
+```
+```ruby {tabTitle:Cocoapods}
+pod update
+```
+```ruby {tabTitle:Carthage}
+github "getsentry/sentry-cocoa" "{{@inject packages.version('sentry.cocoa') }}"
+```
+
+
+## Set Up
+
+To set up the integration, add the following to your Sentry initialization.
+
+```swift
+SentrySDK.start(configureOptions: { options in
+ options.dsn = "___PUBLIC_DSN___"
+ options.debug = true
+
+ // Currently under experimental options:
+ options.experimental.sessionReplay.errorSampleRate = 1.0
+ options.experimental.sessionReplay.sessionSampleRate = 1.0
+})
+```
+
+
+
+## Verify
+
+While you're testing, we recommend that you set `sessionSampleRate` to `1.0`. This ensures that every user session will be sent to Sentry.
+
+Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping `errorSampleRate` set to `1.0`.
+
+## Sampling
+
+Sampling allows you to control how much of your website's traffic will result in a Session Replay. There are two sample rates you can adjust to get the replays relevant to you:
+
+1. `sessionSampleRate` - The sample rate for
+ replays that begin recording immediately and last the entirety of the user's session.
+2. `errorSampleRate` - The sample rate for
+ replays that are recorded when an error happens. This type of replay will record
+ up to a minute of events prior to the error and continue recording until the session
+ ends.
+
+Sampling begins as soon as a session starts. `sessionSampleRate` is evaluated first. If it's sampled, the replay recording will begin. Otherwise, `errorSampleRate` is evaluated and if it's sampled, the integration will begin buffering the replay and will only upload it to Sentry if an error occurs. The remainder of the replay will behave similarly to a whole-session replay.
+
+## Privacy
+
+The SDK is recording and aggressively redacting all text and images. We plan to add fine controls for redacting, but in this version, we just allow either on or off. The default is on. Please don’t turn it off if you have sensitive data in your app. Before the Beta is complete, we'll give you the controls you need.
+
+
+
+If you encounter any data not being redacted with the default settings, please let us know through a [GitHub issue](https://github.com/getsentry/sentry-cocoa/issues/new?assignees=&labels=Platform%3A+Cocoa%2CType%3A+Bug&projects=&template=bug.yml).
+
+
+
+To disable redaction altogether (not to be used on applications with sensitive data):
+
+```swift
+options.experimental.sessionReplay.redactAllText = true
+options.experimental.sessionReplay.redactAllImages = true
+```
+
+## Error Linking
+
+Errors that happen on the page while a replay is running will be linked to the replay, making it possible to jump between related issues and replays. However, it's **possible** that in some cases the error count reported on the **Replays Details** page won't match the actual errors that have been captured. That's because errors can be lost, and while this is uncommon, there are a few reasons why it could happen:
+
+- The replay was rate-limited and couldn't be accepted.
+- The replay was deleted by a member of your org.
+- There were network errors and the replay wasn't saved.
diff --git a/docs/platforms/javascript/common/session-replay/configuration.mdx b/docs/platforms/javascript/common/session-replay/configuration.mdx
index e986ea270da0d..6faf4598ddb8a 100644
--- a/docs/platforms/javascript/common/session-replay/configuration.mdx
+++ b/docs/platforms/javascript/common/session-replay/configuration.mdx
@@ -19,7 +19,7 @@ notSupported:
description: "Learn about the general Session Replay configuration fields."
---
-
+
## General Integration Configuration
diff --git a/docs/platforms/javascript/common/session-replay/index.mdx b/docs/platforms/javascript/common/session-replay/index.mdx
index 2d95a877d5c55..b6c9cb73993a6 100644
--- a/docs/platforms/javascript/common/session-replay/index.mdx
+++ b/docs/platforms/javascript/common/session-replay/index.mdx
@@ -19,7 +19,7 @@ notSupported:
description: "Learn how to enable Session Replay in your app if it is not already set up."
---
-
+
[Session Replay](/product/explore/session-replay/) helps you get to the root cause of an error or latency issue faster by providing you with a video-like reproduction of what was happening in the user's browser before, during, and after the issue. You can rewind and replay your application's DOM state and see key user interactions, like mouse clicks, scrolls, network requests, and console entries, in a single combined UI inspired by your browser's DevTools.
diff --git a/docs/platforms/javascript/common/session-replay/privacy.mdx b/docs/platforms/javascript/common/session-replay/privacy.mdx
index e37a482deef89..35d8686b885fc 100644
--- a/docs/platforms/javascript/common/session-replay/privacy.mdx
+++ b/docs/platforms/javascript/common/session-replay/privacy.mdx
@@ -19,7 +19,7 @@ notSupported:
description: "Configuring Session Replay to maintain user and data privacy."
---
-
+
There are several ways to deal with personally identifiable information (PII). By default, the Session Replay SDK will mask all text content with `*` and block all media elements (`img`, `svg`, `video`, `object`, `picture`, `embed`, `map`, `audio`) on the client, before it is sent to the server. This can be disabled by setting `maskAllText` to `false`. It's also possible to add the following CSS classes to specific DOM elements to prevent recording their contents: `sentry-block`, `sentry-ignore`, and `sentry-mask`. The following sections will show examples of how content is handled by the differing methods.
diff --git a/docs/platforms/react-native/session-replay/index.mdx b/docs/platforms/react-native/session-replay/index.mdx
new file mode 100644
index 0000000000000..e4efc1cf52ed8
--- /dev/null
+++ b/docs/platforms/react-native/session-replay/index.mdx
@@ -0,0 +1,137 @@
+---
+title: Set Up Session Replay - Beta
+sidebar_order: 5500
+notSupported:
+description: "Learn how to enable the Beta of Mobile Session Replay in your app."
+---
+
+
+
+Mobile support for Session Replay is in Beta. Features available in Beta are still work-in-progress and may have bugs. We recognize the irony.
+
+If you have any questions, feedback or would like to report a bug, please open a [GitHub issue](https://github.com/getsentry/sentry-react-native/issues/new?assignees=&labels=Platform%3A+React-Native%2CType%3A+%F0%9F%AA%B2+Bug&projects=&template=BUG_REPORT.md) with a link to a relevant replay in Sentry if possible.
+
+
+
+[Session Replay](/product/explore/session-replay/) helps you get to the root cause of an error or latency issue faster by providing you with a reproduction of what was happening in the user's device before, during, and after the issue. You can rewind and replay your application's state and see key user interactions, like taps, swipes, network requests, and console entries, in a single UI.
+
+By default, our Session Replay SDK masks all text content, images, and user input, giving you heightened confidence that no sensitive data will leave the device. To learn more, see Session Replay Product docs.
+
+## Pre-requisites
+
+Make sure your Sentry React Native SDK version is at least 5.26.0.
+
+## Install
+
+If you already have the SDK installed, you can update it to the latest version with:
+```bash {tabTitle:npm}
+npm install @sentry/react-native --save
+```
+
+```bash {tabTitle:yarn}
+yarn add @sentry/react-native
+```
+
+```bash {tabTitle:pnpm}
+pnpm add @sentry/react-native
+```
+
+## Set Up
+
+To set up the integration, add the following to your Sentry initialization.
+
+```javascript
+import * as Sentry from '@sentry/react-native';
+
+Sentry.init({
+ dsn = "___PUBLIC_DSN___",
+ _experiments: {
+ replaysSessionSampleRate: 1.0,
+ replaysOnErrorSampleRate: 1.0,
+ },
+ integration: [
+ Sentry.mobileReplayIntegration({
+ maskAllText: true,
+ maskAllImages: true,
+ }),
+ ],
+});
+```
+
+
+
+## Verify
+
+While you're testing, we recommend that you set to `1.0`. This ensures that every user session will be sent to Sentry.
+
+Once testing is complete, **we recommend lowering this value in production**. We still recommend keeping set to `1.0`.
+
+## Sampling
+
+Sampling allows you to control how much of your website's traffic will result in a Session Replay. There are two sample rates you can adjust to get the replays relevant to you:
+
+1. - The sample rate for
+ replays that begin recording immediately and last the entirety of the user's session.
+2. - The sample rate for
+ replays that are recorded when an error happens. This type of replay will record
+ up to a minute of events prior to the error and continue recording until the session
+ ends.
+
+Sampling begins as soon as a session starts. is evaluated first. If it's sampled, the replay recording will begin. Otherwise, is evaluated and if it's sampled, the integration will begin buffering the replay and will only upload it to Sentry if an error occurs. The remainder of the replay will behave similarly to a whole-session replay.
+
+## Privacy
+
+The SDK is recording and aggressively redacting all text and images. We plan to add fine controls for redacting, but in this version, we just allow either on or off. The default is on. Please don’t turn it off if you have sensitive data in your app. Before the Beta is complete, we'll give you the controls you need.
+
+
+
+If you encounter any data not being redacted with the default settings, please let us know through a [GitHub issue](https://github.com/getsentry/sentry-react-native/issues/new?assignees=&labels=Platform%3A+React-Native%2CType%3A+%F0%9F%AA%B2+Bug&projects=&template=BUG_REPORT.md).
+
+
+
+To disable redaction altogether (not to be used on applications with sensitive data):
+
+```javascript
+Sentry.mobileReplayIntegration({
+ maskAllText: true,
+ maskAllImages: true,
+ maskAllVectors: true,
+}),
+```
+
+## React Component Names
+
+Sentry helps you capture your React components and unlock additional insights in your application. You can set it up to use React component names.
+
+So instead of looking at this:
+
+```html {tabTitle:Generic Components}
+View > Touchable > View > Text
+```
+
+You can also see exactly which React component was used, like:
+
+```html {tabTitle:React Components}
+MyCard (View, MyCard.ts) > MyButton (Touchable, MyCard.ts) > View > Text
+```
+
+To add React Component Names use `annotateReactComponents` in `metro.config.js`.
+
+```js {tabTitle: React Native}
+const { getDefaultConfig } = require('@react-native/metro-config');
+const { withSentryConfig } = require('@sentry/react-native/metro');
+module.exports = withSentryConfig(getDefaultConfig(__dirname), { annotateReactComponents: true });
+```
+
+```js {tabTitle: Expo}
+const { getSentryExpoConfig } = require("@sentry/react-native/metro");
+const config = getSentryExpoConfig(__dirname, { annotateReactComponents: true });
+```
+
+## Error Linking
+
+Errors that happen on the page while a replay is running will be linked to the replay, making it possible to jump between related issues and replays. However, it's **possible** that in some cases the error count reported on the **Replays Details** page won't match the actual errors that have been captured. That's because errors can be lost, and while this is uncommon, there are a few reasons why it could happen:
+
+- The replay was rate-limited and couldn't be accepted.
+- The replay was deleted by a member of your org.
+- There were network errors and the replay wasn't saved.
diff --git a/docs/product/explore/session-replay/web/getting-started.mdx b/docs/product/explore/session-replay/web/getting-started.mdx
index 42cbeb5effeff..f7c9a755b9e18 100644
--- a/docs/product/explore/session-replay/web/getting-started.mdx
+++ b/docs/product/explore/session-replay/web/getting-started.mdx
@@ -4,7 +4,7 @@ sidebar_order: 6
description: "Learn which SDKs support Session Replay and start sending replays to Sentry."
---
-
+
With Session Replay, Sentry users can get to the root of an error or performance issue faster, by watching a video-like reproduction of a user session and getting additional information such as what would appear in the developer tools of a client browser.
diff --git a/docs/product/explore/session-replay/web/performance-overhead.mdx b/docs/product/explore/session-replay/web/performance-overhead.mdx
index dd05077980463..9ed3f68687e4b 100644
--- a/docs/product/explore/session-replay/web/performance-overhead.mdx
+++ b/docs/product/explore/session-replay/web/performance-overhead.mdx
@@ -4,7 +4,7 @@ sidebar_order: 48
description: "Learn more about how enabling Session Replay impacts the performance of your application."
---
-
+
Session Replay works by observing and recording changes to your web application's DOM and transmitting that data to event ingestion servers over the public internet. In order to perform this work without negatively impacting the host page's performance, the Session Replay SDK takes care to introduce minimal additional filesize, observe and record DOM content in a non-intrusive way, send the absolute minimum number of bytes required, and use low-latency ingestion endpoints geographically close to your end-users.
diff --git a/docs/product/explore/session-replay/web/replay-details.mdx b/docs/product/explore/session-replay/web/replay-details.mdx
index a29c30aefcadf..4f72523b9ca34 100644
--- a/docs/product/explore/session-replay/web/replay-details.mdx
+++ b/docs/product/explore/session-replay/web/replay-details.mdx
@@ -4,7 +4,7 @@ sidebar_order: 24
description: "Learn more about how information is organized on the Replay Details page and how to share and delete replays."
---
-
+
Every replay has a detailed view that contains the embedded video player and rich debugging context. Playing back the video will allow you to see every user interaction in relation to console messages, DOM events, and network requests. It’s like having [DevTools](https://developer.chrome.com/docs/devtools/overview/) active for your production user sessions. Almost every component on this page is connected through timestamps. See the breakdown of each component and why it’s valuable:
diff --git a/docs/product/explore/session-replay/web/replay-page-and-filters.mdx b/docs/product/explore/session-replay/web/replay-page-and-filters.mdx
index 5bdc10645b252..27836f11a13a5 100644
--- a/docs/product/explore/session-replay/web/replay-page-and-filters.mdx
+++ b/docs/product/explore/session-replay/web/replay-page-and-filters.mdx
@@ -4,7 +4,7 @@ sidebar_order: 12
description: "Learn how to navigate the Replays page and filter user sessions that meet specific conditions."
---
-
+
You can search for or browse replays of user sessions on the **Replay** page, where they’re organized chronologically by default. You’ll see the following information for each session:
diff --git a/docs/security-legal-pii/scrubbing/protecting-user-privacy.mdx b/docs/security-legal-pii/scrubbing/protecting-user-privacy.mdx
index 1defa6227d827..16fe968abb92b 100644
--- a/docs/security-legal-pii/scrubbing/protecting-user-privacy.mdx
+++ b/docs/security-legal-pii/scrubbing/protecting-user-privacy.mdx
@@ -4,7 +4,7 @@ sidebar_order: 96
description: "Learn about how Session Replay captures data while protecting user privacy."
---
-
+
With the extra scrutiny and sensitivity around session replay products and the logging of user interactions (e.g., text inputs, page visits, mouse movements, clicks, and scrolls) on websites and applications, we built our own session replay product with an eye towards privacy.
diff --git a/includes/feature-stage-beta-session-replay.mdx b/includes/session-replay-web-report-bug.mdx
similarity index 100%
rename from includes/feature-stage-beta-session-replay.mdx
rename to includes/session-replay-web-report-bug.mdx