diff --git a/src/components/platformSidebar.tsx b/src/components/platformSidebar.tsx
index a18600d84a25d..2dd0ae5e1058d 100644
--- a/src/components/platformSidebar.tsx
+++ b/src/components/platformSidebar.tsx
@@ -79,6 +79,7 @@ export const PlatformSidebar = ({
`/${pathRoot}/enriching-events/`,
`/${pathRoot}/data-management/`,
`/${pathRoot}/performance/`,
+ `/${pathRoot}/session-replay/`,
`/${pathRoot}/profiling/`,
`/${pathRoot}/guides/`,
]}
@@ -90,6 +91,15 @@ export const PlatformSidebar = ({
suppressMissing
tree={tree}
/>
+
+
+Session Replay is currently in beta. Beta features are still in-progress and may have bugs. We recognize the irony. If you have any questions or feedback, please email us at [session-replay@sentry.io](mailto:session-replay@sentry.io).
+
+
diff --git a/src/platform-includes/session-replay/install-session-replay/javascript.mdx b/src/platform-includes/session-replay/install-session-replay/javascript.mdx
new file mode 100644
index 0000000000000..115fd6e81601c
--- /dev/null
+++ b/src/platform-includes/session-replay/install-session-replay/javascript.mdx
@@ -0,0 +1,30 @@
+Install the Replay package with NPM or your favourite package manager. Alternatively, you can load the Replay integration via a CDN bundle.
+
+```bash {tabTitle: ESM}
+# Make sure to have @sentry/browser or a Framework SDK (e.g. @sentry/react) installed
+
+# Using yarn
+yarn add @sentry/replay
+
+# Using npm
+npm install --save @sentry/replay
+```
+
+```html {tabTitle: CDN}
+
+
+
+
+
+```
diff --git a/src/platform-includes/session-replay/setup-session-replay/javascript.mdx b/src/platform-includes/session-replay/setup-session-replay/javascript.mdx
new file mode 100644
index 0000000000000..001ed7246df84
--- /dev/null
+++ b/src/platform-includes/session-replay/setup-session-replay/javascript.mdx
@@ -0,0 +1,54 @@
+To set up the integration, add the following to your Sentry initialization. Several options are supported and passable via the integration constructor. See the [configuration sections](/platforms/javascript/session-replay/custom-instrumentation/) for more details.
+
+```javascript {tabTitle: ESM}
+// import Sentry from your framework SDK (e.g. @sentry/react) instead of @sentry/browser
+import * as Sentry from "@sentry/browser";
+
+import { Replay } from "@sentry/replay";
+
+Sentry.init({
+ dsn: "___PUBLIC_DSN___",
+
+ // This sets the sample rate to be 10%. You may want this to be 100% while
+ // in development and sample at a lower rate in production
+ replaysSessionSampleRate: 0.1,
+
+ // If the entire session is not sampled, use the below sample rate to sample
+ // sessions when an error occurs.
+ replaysOnErrorSampleRate: 1.0,
+
+ integrations: [
+ new Replay({
+ // Additional SDK configuration goes in here, for example:
+ maskAllText: true,
+ blockAllMedia: true
+ // See below for all available options
+ })
+ ],
+ // ...
+});
+```
+
+```javascript {tabTitle: CDN}
+Sentry.init({
+ dsn: "___PUBLIC_DSN___",
+
+ // This sets the sample rate to be 10%. You may want this to be 100% while
+ // in development and sample at a lower rate in production
+ replaysSessionSampleRate: 0.1,
+
+ // If the entire session is not sampled, use the below sample rate to sample
+ // sessions when an error occurs.
+ replaysOnErrorSampleRate: 1.0,
+
+ integrations: [
+ new Sentry.Integrations.Replay({
+ // Additional SDK configuration goes in here, for example:
+ maskAllText: true,
+ blockAllMedia: true
+ // See below for all available options
+ })
+ ],
+ // ...
+});
+```
diff --git a/src/platforms/javascript/common/session-replay/custom-instrumentation/general-configuration.mdx b/src/platforms/javascript/common/session-replay/custom-instrumentation/general-configuration.mdx
new file mode 100644
index 0000000000000..768dc24b145ae
--- /dev/null
+++ b/src/platforms/javascript/common/session-replay/custom-instrumentation/general-configuration.mdx
@@ -0,0 +1,87 @@
+---
+title: General Configuration
+sidebar_order: 410
+supported:
+ - javascript
+ - javascript.angular
+ - javascript.ember
+ - javascript.gatsby
+ - javascript.nextjs
+ - javascript.react
+ - javascript.remix
+ - javascript.svelte
+ - javascript.vue
+notSupported:
+ - javascript.capacitor
+ - javascript.cordova
+ - javascript.electron
+ - javascript.wasm
+description: "Learn about the general Session Replay configuration fields."
+---
+
+
+
+## Identifying Users
+
+If you have only followed the above instructions to setup session replays, you will only see IP addresses in Sentry's UI. In order to associate a user identity to a session replay, use [setUser](/platforms/javascript/enriching-events/identify-user/).
+
+```javascript
+import * as Sentry from "@sentry/browser";
+Sentry.setUser({ email: "jane.doe@example.com" });
+```
+
+## Start and Stop Recording
+
+Replay recording only starts automatically when it is included in the integrations key when calling Sentry.init. Otherwise you can initialize the plugin and manually call the start() method on the integration instance. To stop recording you can call the stop().
+
+```javascript {tabTitle: ESM}
+const replay = new Replay(); // This will *NOT* begin recording replays
+
+replay.start(); // Start recording
+
+replay.stop(); // Stop recording
+```
+
+```javascript {tabTitle: CDN}
+const replay = new Sentry.Integrations.Replay(); // This will *NOT* begin recording replays
+
+replay.start(); // Start recording
+
+replay.stop(); // Stop recording
+```
+
+## General Integration Configuration
+
+The following options can be configured on the root level of your browser-based Sentry SDK, in `init({})`:
+
+| key | type | default | description |
+| ------------------------ | ------- | ------- | --- |
+| replaysSessionSampleRate | number | `0.1` | The sample rate for replays that begin recording immediately and last the entirety of the user's session. 1.0 will collect all replays, 0 will collect no replays. |
+| replaysOnErrorSampleRate | number | `1.0` | 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. 1.0 capturing all sessions with an error, and 0 capturing none. |
+
+The following options can be configured as options to the integration, in `new Replay({})`:
+
+| key | type | default | description |
+| ------------------- | ------- | ------- | --- |
+| stickySession | boolean | `true` | Keep track of the user across page loads. Note a single user using multiple tabs will result in multiple sessions. Closing a tab will result in the session being closed as well. |
+
+## Optimization Configuration
+
+The following options can be configured as options to the integration, in `new Replay({})`:
+
+| key | type | default | description |
+| ---------------- | ----------------------- | ------- | --- |
+| collectFonts | boolean | `false` | Should collect fonts used on the website |
+| inlineImages | boolean | `false` | Should inline `` content |
+| inlineStylesheet | boolean | `true` | Should inline stylesheets used in the recording |
+| recordCanvas | boolean | `false` | Should record `