Setup

All Session Replay SDK versions can be found in the Maven Central Repository.

To set up Mobile Session Replay for Android:

  1. Make sure you’ve setup and initialized the Datadog Android RUM SDK with views instrumentation enabled.

  2. Declare the Datadog Session Replay as a dependency:

build.gradle.kts

    implementation("com.datadoghq:dd-sdk-android-rum:[datadog_version]")
    implementation("com.datadoghq:dd-sdk-android-session-replay:[datadog_version]")
    // in case you need Material support
    implementation("com.datadoghq:dd-sdk-android-session-replay-material:[datadog_version]")
   
  1. Enable Session Replay in your app:

Application.kt

   val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
    // in case you need Material extension support
    .addExtensionSupport(MaterialExtensionSupport()) 
    .build()
   SessionReplay.enable(sessionReplayConfig)
   

To set up Mobile Session Replay for iOS:

  1. Make sure you’ve set up and initialized the Datadog iOS RUM SDK with views instrumentation enabled.

  2. Link the Datadog Session Replay library to your project based on your package manager:

    Package managerInstallation step
    CocoaPodsAdd pod 'DatadogSessionReplay' to your Podfile.
    Swift Package ManagerAdd DatadogSessionReplay library as a dependency to your app target.
    CarthageAdd DatadogSessionReplay.xcframework as a dependency to your app target.
  3. Enable Session Replay in your app:

AppDelegate.swift

   import DatadogSessionReplay

   SessionReplay.enable(
       with: SessionReplay.Configuration(
           replaySampleRate: sampleRate
       )
   )
   

All Session Replay SDK versions can be found in the Maven Central Repository.

To set up Mobile Session Replay for Kotlin Multiplatform:

  1. Make sure you’ve setup and initialized the Datadog Kotlin Multiplatform RUM SDK with views instrumentation enabled.

  2. Add the DatadogSessionReplay iOS library as a link-only dependency. For instructions, see the guide.

  3. Declare Datadog Session Replay as a dependency:

build.gradle.kts

    kotlin {
      sourceSets {
        commonMain.dependencies {
          implementation("com.datadoghq:dd-sdk-kotlin-multiplatform-rum:[datadog_version]")
          implementation("com.datadoghq:dd-sdk-kotlin-multiplatform-session-replay:[datadog_version]")
        }

        // in case you need Material support on Android
        androidMain.dependencies {
          implementation("com.datadoghq:dd-sdk-android-session-replay-material:[datadog_version]")
        }
      }
    }
   
  1. Enable Session Replay in your app:

Application.kt

   // in common source set
   val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
    .build()
   SessionReplay.enable(sessionReplayConfig)
   
  1. In case you need Material support on Android, call the SessionReplayConfiguration.Builder.addExtensionSupport(MaterialExtensionSupport()) method, available in the Android source set.

Web view instrumentation

You can record the entire user journey across both web and native views on iOS or Android and watch it in a single Session Replay.

The Session Replay is recorded through the Browser SDK, then the Mobile SDK handles the batching and uploading of the webview recording.

To instrument your consolidated web and native Session Replay views for Android:

  1. Ensure you are using version 2.8.0 or higher of the Android SDK.
  2. Enable webview tracking for your mobile application.
  3. Enable Session Replay for your web application.
  4. Enable Session Replay for your mobile application (see setup instructions above).

To instrument your consolidated web and native Session Replay views for iOS:

  1. Ensure you are using version 2.13.0 or higher of the iOS SDK.
  2. Enable webview tracking for your mobile application.
  3. Enable Session Replay for your web application.
  4. Enable Session Replay for your mobile application (see setup instructions above).

To instrument your consolidated web and native Session Replay views for Kotlin Multiplatform:

  1. Enable web view tracking for your mobile application.
  2. Enable Session Replay for your web application.
  3. Enable Session Replay for your mobile application (see setup instructions above).

Additional configuration

Set the sample rate for recorded sessions to appear

The sample rate is an optional parameter in the Session Replay configuration. It must be a number between 0.0 and 100.0, where 0 indicates that no replays are recorded and 100 means that all RUM sessions include a replay. If the sample rate is not specified in the configuration, the default value of 100 is applied.

This sample rate is applied in addition to the RUM sample rate. For example, if RUM uses a sample rate of 80% and Session Replay uses a sample rate of 20%, it means that out of all user sessions, 80% are included in RUM, and within those sessions, only 20% have replays.

Application.kt

val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
  ...
  .build()

AppDelegate.swift

var sessionReplayConfig = SessionReplay.Configuration(
    replaySampleRate: sampleRate
)

Application.kt

val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
  ...
  .build()

Start or stop the recording manually

By default, Session Replay starts recording automatically. However, if you prefer to manually start recording at a specific point in your application, you can use the optional startRecordingImmediately parameter as shown below, and later call SessionReplay.startRecording(). You can also use SessionReplay.stopRecording() to stop the recording anytime.

Application.kt

    val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
        .startRecordingImmediately(false)
        .build()
    // Do something 
    SessionReplay.startRecording()
    SessionReplay.stopRecording()

AppDelegate.swift

    let sessionReplayConfig = SessionReplay.Configuration(
        replaySampleRate: sampleRate,
        startRecordingImmediately: false
    )
    // Do something 
    SessionReplay.startRecording()
    SessionReplay.stopRecording()

Validate whether Session Replay data is being sent

To validate whether Session Replay data is being sent from the app, you can enable debug option in Datadog SDK:

Application.kt

Datadog.setVerbosity(Log.DEBUG)

AppDelegate.swift

Datadog.verbosityLevel = .debug

If everything is fine, following logs should appear in the Xcode debug console in about 30 seconds after launching the app:

Xcode console

[DATADOG SDK] 🐶 → 10:21:29.812 ⏳ (session-replay) Uploading batch...
[DATADOG SDK] 🐶 → 10:21:30.442    → (session-replay) accepted, won't be retransmitted: [response code: 202 (accepted), request ID: BD445EA-...-8AFCD3F3D16]

Application.kt

Datadog.setVerbosity(SdkLogVerbosity.DEBUG)

Privacy options

See Privacy Options.

Further reading

PREVIEWING: rtrieu/product-analytics-ui-changes