diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 21c3a8385ea..89d0731bbea 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -139,7 +139,7 @@ content/en/real_user_monitoring/error_tracking/kotlin_multiplatform.md @Datado # Browser SDK content/en/real_user_monitoring/browser/ @Datadog/rum-browser @DataDog/documentation content/en/real_user_monitoring/guide/ @Datadog/rum-browser @DataDog/documentation -content/en/real_user_monitoring/session_replay/browser @Datadog/rum-browser @DataDog/documentation +content/en/session_replay/browser @Datadog/rum-browser @DataDog/documentation content/en/logs/log_collection/javascript.md @Datadog/rum-browser @DataDog/documentation content/en/logs/error_tracking/browser_and_mobile.md @Datadog/rum-browser @DataDog/documentation content/en/real_user_monitoring/error_tracking/browser.md @Datadog/rum-browser @DataDog/documentation diff --git a/config/_default/menus/main.en.yaml b/config/_default/menus/main.en.yaml index d0ffa89f272..321da7ca9c2 100644 --- a/config/_default/menus/main.en.yaml +++ b/config/_default/menus/main.en.yaml @@ -8330,181 +8330,116 @@ menu: parent: real_user_monitoring_platform identifier: rum_generate_metrics weight: 403 - - name: Session Replay - url: real_user_monitoring/session_replay/ - parent: rum - identifier: rum_session_replay - weight: 5 - - name: Mobile - url: real_user_monitoring/session_replay/mobile - parent: rum_session_replay - identifier: rum_session_replay_mobile - weight: 501 - - name: Setup - url: real_user_monitoring/session_replay/mobile/setup_and_configuration - parent: rum_session_replay_mobile - identifier: rum_session_replay_mobile_setup - weight: 101 - - name: Privacy Options - url: real_user_monitoring/session_replay/mobile/privacy_options - parent: rum_session_replay_mobile - identifier: rum_session_replay_mobile_privacy - weight: 102 - - name: Impact on App Performance - url: real_user_monitoring/session_replay/mobile/app_performance - parent: rum_session_replay_mobile - identifier: rum_session_replay_mobile_app_performance - weight: 103 - - name: Troubleshooting - url: real_user_monitoring/session_replay/mobile/troubleshooting - parent: rum_session_replay_mobile - identifier: rum_session_replay_mobile_troubleshooting - weight: 104 - - name: Browser - url: real_user_monitoring/session_replay/browser - parent: rum_session_replay - identifier: rum_session_replay_browser - weight: 502 - - name: Setup - url: real_user_monitoring/session_replay/browser/setup_and_configuration - parent: rum_session_replay_browser - identifier: rum_session_replay_browser_setup - weight: 101 - - name: Privacy Options - url: real_user_monitoring/session_replay/browser/privacy_options - parent: rum_session_replay_browser - identifier: rum_session_replay_privacy_options - weight: 102 - - name: Developer Tools - url: real_user_monitoring/session_replay/developer_tools - parent: rum_session_replay_browser - identifier: rum_session_replay_developer_tools - weight: 103 - - name: Troubleshooting - url: real_user_monitoring/session_replay/troubleshooting - parent: rum_session_replay_browser - identifier: rum_session_replay_troubleshooting - weight: 104 - - name: Playlists - url: real_user_monitoring/session_replay/playlists - parent: rum_session_replay - identifier: rum_session_replay_playlists - weight: 503 - - name: Heatmaps - url: real_user_monitoring/session_replay/heatmaps - parent: rum_session_replay - identifier: rum_session_replay_heatmaps - weight: 504 - name: Exploring RUM Data url: real_user_monitoring/explorer/ parent: rum identifier: rum_explorer - weight: 6 + weight: 5 - name: Search RUM Events url: real_user_monitoring/explorer/search/ parent: rum_explorer identifier: rum_explorer_search - weight: 601 + weight: 501 - name: Search Syntax url: real_user_monitoring/explorer/search_syntax/ parent: rum_explorer identifier: rum_explorer_search_syntax - weight: 602 + weight: 502 - name: Group url: real_user_monitoring/explorer/group/ parent: rum_explorer identifier: rum_explorer_group - weight: 603 + weight: 503 - name: Visualize url: real_user_monitoring/explorer/visualize/ parent: rum_explorer identifier: rum_explorer_visualize - weight: 604 + weight: 504 - name: Events url: real_user_monitoring/explorer/events/ parent: rum_explorer identifier: rum_explorer_events - weight: 605 + weight: 505 - name: Export url: real_user_monitoring/explorer/export/ parent: rum_explorer identifier: rum_explorer_export - weight: 606 + weight: 506 - name: Saved Views url: real_user_monitoring/explorer/saved_views/ parent: rum_explorer identifier: rum_explorer_saved_views - weight: 607 + weight: 507 - name: Watchdog Insights for RUM url: real_user_monitoring/explorer/watchdog_insights/ parent: rum_explorer identifier: rum_explorer_watchdog_insights - weight: 608 + weight: 508 - name: Correlate RUM with Other Telemetry url: /real_user_monitoring/correlate_with_other_telemetry/ parent: rum identifier: rum_correlate_with_other_telemetry - weight: 7 + weight: 6 - name: Correlate LLM with RUM url: /real_user_monitoring/correlate_with_other_telemetry/llm_observability parent: rum_correlate_with_other_telemetry identifier: rum_correlate_with_other_telemetry_llm - weight: 701 + weight: 601 - name: Correlate Logs with RUM url: /real_user_monitoring/correlate_with_other_telemetry/logs parent: rum_correlate_with_other_telemetry identifier: rum_correlate_with_other_telemetry_logs - weight: 702 + weight: 602 - name: Correlate Profiling with RUM url: real_user_monitoring/correlate_with_other_telemetry/profiling/ parent: rum_correlate_with_other_telemetry identifier: rum_correlate_with_other_telemetry_profiling - weight: 703 + weight: 603 - name: Correlate Synthetics with RUM url: real_user_monitoring/correlate_with_other_telemetry/synthetics/ parent: rum_correlate_with_other_telemetry identifier: rum_correlate_with_other_telemetry_synthetics - weight: 704 + weight: 604 - name: Correlate Traces with RUM url: /real_user_monitoring/correlate_with_other_telemetry/apm parent: rum_correlate_with_other_telemetry identifier: rum_correlate_with_other_telemetry_apm - weight: 705 + weight: 605 - name: Feature Flag Tracking url: real_user_monitoring/feature_flag_tracking parent: rum identifier: rum_feature_flag_tracking - weight: 8 + weight: 7 - name: Setup url: real_user_monitoring/feature_flag_tracking/setup parent: rum_feature_flag_tracking identifier: rum_feature_flag_tracking_setup - weight: 801 + weight: 701 - name: Using Feature Flags url: real_user_monitoring/feature_flag_tracking/using_feature_flags parent: rum_feature_flag_tracking identifier: rum_feature_flag_tracking_use - weight: 802 + weight: 702 - name: Error Tracking url: real_user_monitoring/error_tracking/ parent: rum identifier: rum_error_tracking - weight: 9 + weight: 8 - name: Explorer url: real_user_monitoring/error_tracking/explorer/ parent: rum_error_tracking identifier: rum_error_tracking_explorer - weight: 901 + weight: 801 - name: Issue States url: real_user_monitoring/error_tracking/issue_states parent: rum_error_tracking identifier: rum_error_tracking_states - weight: 902 + weight: 802 - name: Track Browser Errors url: real_user_monitoring/error_tracking/browser/ parent: rum_error_tracking identifier: rum_error_tracking_browser - weight: 903 + weight: 803 - name: Track Mobile Errors url: real_user_monitoring/error_tracking/mobile/ parent: rum_error_tracking @@ -8519,52 +8454,52 @@ menu: url: real_user_monitoring/error_tracking/monitors parent: rum_error_tracking identifier: rum_error_tracking_monitors - weight: 907 + weight: 807 - name: Identify Suspect Commits url: real_user_monitoring/error_tracking/suspect_commits parent: rum_error_tracking identifier: rum_error_tracking_suspect_commits - weight: 908 + weight: 808 - name: Troubleshooting url: real_user_monitoring/error_tracking/troubleshooting parent: rum_error_tracking identifier: rum_error_tracking_troubleshooting - weight: 909 + weight: 809 - name: RUM Without Limits url: real_user_monitoring/rum_without_limits/ parent: rum identifier: rum_without_limits - weight: 10 + weight: 9 - name: Metrics url: real_user_monitoring/rum_without_limits/metrics parent: rum_without_limits identifier: rum_without_limits_metrics - weight: 1001 + weight: 901 - name: Retention Filters url: real_user_monitoring/rum_without_limits/retention_filters parent: rum_without_limits identifier: rum_without_limits_retention - weight: 1002 + weight: 902 - name: Operations Monitoring url: real_user_monitoring/operations_monitoring/ parent: rum identifier: rum_operations_monitoring - weight: 11 + weight: 10 - name: Ownership of Views url: real_user_monitoring/ownership_of_views/ parent: rum identifier: rum_ownership_of_views - weight: 12 + weight: 11 - name: Guides url: real_user_monitoring/guide/ parent: rum identifier: rum_guides - weight: 13 + weight: 12 - name: Data Security identifier: real_user_monitoring_data_security url: data_security/real_user_monitoring/ parent: rum - weight: 14 + weight: 13 - name: Product Analytics url: product_analytics pre: product-analytics @@ -8606,111 +8541,107 @@ menu: parent: product_analytics identifier: pa_dashboard weight: 2 - - name: Replaying User Activity - url: product_analytics/session_replay/ - parent: product_analytics - identifier: pa_session_replay - weight: 3 - - name: Heatmaps - url: product_analytics/session_replay/heatmaps - parent: pa_session_replay - identifier: pa_heatmaps - weight: 301 - - name: Playlists - url: product_analytics/session_replay/playlists - parent: pa_session_replay - identifier: pa_playlists - weight: 302 - - name: Mobile - url: product_analytics/session_replay/mobile - parent: pa_session_replay - identifier: pa_session_replay_mobile - weight: 302 - - name: Setup - url: product_analytics/session_replay/mobile/setup_and_configuration - parent: pa_session_replay_mobile - identifier: pa_session_replay_mobile_setup - weight: 101 - - name: Privacy Options - url: product_analytics/session_replay/mobile/privacy_options - parent: pa_session_replay_mobile - identifier: pa_session_replay_mobile_privacy - weight: 102 - - name: Impact on App Performance - url: product_analytics/session_replay/mobile/app_performance - parent: pa_session_replay_mobile - identifier: pa_session_replay_mobile_app_performance - weight: 103 - - name: Troubleshooting - url: product_analytics/session_replay/mobile/troubleshooting - parent: pa_session_replay_mobile - identifier: pa_session_replay_mobile_troubleshooting - weight: 104 - - name: Browser - url: product_analytics/session_replay/browser - parent: pa_session_replay - identifier: pa_session_replay_browser - weight: 303 - - name: Setup - url: product_analytics/session_replay/browser/setup_and_configuration - parent: pa_session_replay_browser - identifier: pa_session_replay_browser_setup - weight: 101 - - name: Privacy Options - url: product_analytics/session_replay/browser/privacy_options - parent: pa_session_replay_browser - identifier: pa_session_replay_browser_privacy_options - weight: 102 - - name: Developer Tools - url: product_analytics/session_replay/browser/developer_tools - parent: pa_session_replay_browser - identifier: pa_session_replay_browser_developer_tools - weight: 103 - - name: Troubleshooting - url: product_analytics/session_replay/browser/troubleshooting - parent: pa_session_replay_browser - identifier: pa_session_replay_browser_troubleshooting - weight: 104 - name: Segments url: product_analytics/segmentation/ parent: product_analytics identifier: pa_segmentation - weight: 6 + weight: 3 - name: Managing Profiles url: product_analytics/profiles parent: product_analytics identifier: pa_profiles - weight: 7 + weight: 4 - name: Experiments url: product_analytics/experimentation/ parent: product_analytics identifier: pa_experiments - weight: 8 + weight: 5 - name: Define Metrics url: product_analytics/experimentation/defining_metrics parent: pa_experiments identifier: pa_experiments_metrics - weight: 801 + weight: 501 - name: Reading Experiment Results url: product_analytics/experimentation/reading_results parent: pa_experiments identifier: pa_experiments_results - weight: 802 + weight: 502 - name: Minimum Detectable Effects url: product_analytics/experimentation/minimum_detectable_effect parent: pa_experiments identifier: pa_experiments_mde - weight: 803 + weight: 503 - name: Guides url: product_analytics/guide/ parent: product_analytics identifier: pa_guides - weight: 9 + weight: 6 - name: Troubleshooting url: product_analytics/troubleshooting/ parent: product_analytics identifier: pa_troubleshooting - weight: 10 + weight: 7 + - name: Session Replay + url: session_replay/ + pre: play-circle + identifier: session_replay + parent: digital_experience_heading + weight: 60000 + - name: Browser + url: /session_replay/browser + parent: session_replay + identifier: session_replay_browser + weight: 1 + - name: Setup + url: /session_replay/browser/setup_and_configuration + parent: session_replay_browser + identifier: session_replay_browser_setup + weight: 101 + - name: Privacy Options + url: /session_replay/browser/privacy_options + parent: session_replay_browser + identifier: session_replay_browser_privacy_options + weight: 102 + - name: Troubleshooting + url: /session_replay/browser/troubleshooting + parent: session_replay_browser + identifier: session_replay_browser_troubleshooting + weight: 103 + - name: Mobile + url: /session_replay/mobile + parent: session_replay + identifier: session_replay_mobile + weight: 2 + - name: Setup and Configuration + url: /session_replay/mobile/setup_and_configuration + parent: session_replay_mobile + identifier: session_replay_mobile_setup_and_configuration + weight: 101 + - name: Privacy Options + url: /session_replay/mobile/privacy_options + parent: session_replay_mobile + identifier: session_replay_mobile_privacy_options + weight: 102 + - name: Impact on App Performance + url: /session_replay/mobile/app_performance + parent: session_replay_mobile + identifier: session_replay_mobile_app_performance + weight: 103 + - name: Troubleshooting + url: /session_replay/mobile/troubleshooting + parent: session_replay_mobile + identifier: session_replay_mobile_troubleshooting + weight: 104 + - name: Playlists + url: /session_replay/playlists + parent: session_replay + identifier: session_replay_playlists + weight: 3 + - name: Heatmaps + url: /session_replay/heatmaps + parent: session_replay + identifier: session_replay_heatmaps + weight: 4 - name: Account Management url: account_management/ pre: cog-2 diff --git a/content/.gitignore b/content/.gitignore index d53b1529da4..5e252f19e32 100644 --- a/content/.gitignore +++ b/content/.gitignore @@ -5,9 +5,7 @@ # This file lists compiled Cdocs files to keep them out of version control. For more information, see the internal Cdocs documentation: https://datadoghq.atlassian.net/wiki/spaces/docs4docs/pages/4898063037/Cdocs+Build -/en/product_analytics/session_replay/mobile/privacy_options.md -/en/product_analytics/session_replay/mobile/setup_and_configuration.md /en/real_user_monitoring/guide/proxy-mobile-rum-data.md /en/real_user_monitoring/guide/proxy-rum-data.md -/en/real_user_monitoring/session_replay/mobile/privacy_options.md -/en/real_user_monitoring/session_replay/mobile/setup_and_configuration.md \ No newline at end of file +/en/session_replay/mobile/privacy_options.md +/en/session_replay/mobile/setup_and_configuration.md \ No newline at end of file diff --git a/content/en/account_management/billing/rum.md b/content/en/account_management/billing/rum.md index 7fdc4257d54..6783e8534a0 100644 --- a/content/en/account_management/billing/rum.md +++ b/content/en/account_management/billing/rum.md @@ -62,4 +62,4 @@ In other words, only the one RUM mobile session is visible in Datadog and theref {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/browser#disable-session-replay +[1]: /session_replay/browser#disable-session-replay diff --git a/content/en/data_security/_index.md b/content/en/data_security/_index.md index f4bc10f088c..b6d751608f8 100644 --- a/content/en/data_security/_index.md +++ b/content/en/data_security/_index.md @@ -16,7 +16,7 @@ further_reading: - link: "/data_security/real_user_monitoring/" tag: "Documentation" text: "RUM Data Security" -- link: "/real_user_monitoring/session_replay/browser/privacy_options" +- link: "/session_replay/browser/privacy_options" tag: "Documentation" text: "Session Replay Privacy Options" - link: "/security/sensitive_data_scanner/" @@ -162,7 +162,7 @@ Continuous Integration pipelines and tests [19]: /serverless/distributed_tracing/collect_lambda_payloads#obfuscating-payload-contents [20]: /data_security/synthetics/ [21]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/ -[22]: /real_user_monitoring/session_replay/browser/privacy_options +[22]: /session_replay/browser/privacy_options [23]: /database_monitoring/data_collected/#sensitive-information [24]: /getting_started/tagging/ [25]: /tracing/glossary/ diff --git a/content/en/data_security/real_user_monitoring.md b/content/en/data_security/real_user_monitoring.md index 4208b6db18f..6b7e879fcdf 100644 --- a/content/en/data_security/real_user_monitoring.md +++ b/content/en/data_security/real_user_monitoring.md @@ -9,7 +9,7 @@ further_reading: - link: "/data_security/synthetics/" tag: "Documentation" text: "Synthetic Monitoring Data Security" -- link: "/real_user_monitoring/session_replay/browser/privacy_options/" +- link: "/session_replay/browser/privacy_options/" tag: "Documentation" text: "Session Replay Privacy Options" - link: "https://www.datadoghq.com/blog/default-privacy-session-replay/" @@ -153,8 +153,8 @@ See [privacy options specific to Session Replay][19]. [13]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=npm#user-session [14]: /help/ [15]: /account_management/rbac/permissions/#real-user-monitoring -[16]: /real_user_monitoring/session_replay/privacy_options#override-an-html-element +[16]: /session_replay/privacy_options#override-an-html-element [17]: /security/sensitive_data_scanner/ [18]: https://app.datadoghq.com/organization-settings/sensitive-data-scanner/configuration -[19]: /real_user_monitoring/session_replay/browser/privacy_options +[19]: /session_replay/browser/privacy_options [20]: https://www.datadoghq.com/private-beta/product-analytics/ diff --git a/content/en/error_tracking/frontend/browser.md b/content/en/error_tracking/frontend/browser.md index 5e234f58012..97aae13bd64 100644 --- a/content/en/error_tracking/frontend/browser.md +++ b/content/en/error_tracking/frontend/browser.md @@ -223,7 +223,7 @@ You can monitor unhandled exceptions, unhandled promise rejections, handled exce [7]: /real_user_monitoring/application_monitoring/browser/data_collected/ [8]: /real_user_monitoring/platform/dashboards/errors/ [9]: https://datadoghq.dev/browser-sdk/interfaces/_datadog_browser-rum.RumInitConfiguration.html -[10]: /real_user_monitoring/session_replay/browser/privacy_options#mask-action-names +[10]: /session_replay/browser/privacy_options#mask-action-names [11]: https://github.com/DataDog/datadog-ci/tree/master/packages/datadog-ci/src/commands/sourcemaps#sourcemaps-command [12]: https://github.com [13]: https://about.gitlab.com diff --git a/content/en/error_tracking/frontend/replay_errors.md b/content/en/error_tracking/frontend/replay_errors.md index 2e2b94e93de..a09f91f3f53 100644 --- a/content/en/error_tracking/frontend/replay_errors.md +++ b/content/en/error_tracking/frontend/replay_errors.md @@ -50,22 +50,22 @@ Error Tracking Replay Snippets allows you to view a pixel-perfect recreation of {{% tab "iOS" %}} Follow [these steps][4] to setup and configure your mobile application's error replay for this platform. - [4]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/?tab=ios + [4]: /session_replay/mobile/setup_and_configuration/?tab=ios {{% /tab %}} {{% tab "Android" %}} Follow [these steps][5] to setup and configure your mobile application's error replay for this platform. - [5]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/?tab=android + [5]: /session_replay/mobile/setup_and_configuration/?tab=android {{% /tab %}} {{% tab "Kotlin Multiplatform" %}} Follow [these steps][6] to setup and configure your mobile application's error replay for this platform. - [6]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/?tab=kotlinmultiplatform + [6]: /session_replay/mobile/setup_and_configuration/?tab=kotlinmultiplatform {{% /tab %}} {{% tab "React Native" %}} Follow [these steps][7] to setup and configure your mobile application's error replay for this platform. - [7]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/?tab=reactnative + [7]: /session_replay/mobile/setup_and_configuration/?tab=reactnative {{% /tab %}} {{}} diff --git a/content/en/getting_started/application/_index.md b/content/en/getting_started/application/_index.md index cfb279fc95c..627a0222987 100644 --- a/content/en/getting_started/application/_index.md +++ b/content/en/getting_started/application/_index.md @@ -161,7 +161,7 @@ Navigate to the [Monitors List][23] in the app to get started. To learn more, re [9]: /tracing/ [10]: https://app.datadoghq.com/apm/home [11]: /real_user_monitoring/ -[12]: /real_user_monitoring/session_replay/browser/ +[12]: /session_replay/browser/ [13]: https://app.datadoghq.com/rum/sessions [14]: /synthetics/ [15]: https://app.datadoghq.com/synthetics/tests diff --git a/content/en/getting_started/session_replay/_index.md b/content/en/getting_started/session_replay/_index.md index d36a8eb60c7..20a55288b04 100644 --- a/content/en/getting_started/session_replay/_index.md +++ b/content/en/getting_started/session_replay/_index.md @@ -2,10 +2,10 @@ title: Getting Started with Session Replay description: Capture and analyze user sessions with video-like replays to understand customer interactions and troubleshoot issues. further_reading: - - link: '/real_user_monitoring/session_replay/browser' + - link: '/session_replay/browser' tag: 'Documentation' text: 'Session Replay' - - link: '/real_user_monitoring/session_replay/mobile/' + - link: '/session_replay/mobile/' tag: 'Documentation' text: 'Mobile Session Replay' - link: 'https://www.datadoghq.com/knowledge-center/session-replay/' @@ -132,12 +132,12 @@ You can share the replay with your team by selecting the **Share** dropdown at t [1]: https://www.datadoghq.com/?_gl=1*2g30ya*_gcl_au*OTEwMTA2MjI5LjE2OTIxMDc1MzA.*_ga_KN80RDFSQK*MTY5NDAwODQ4OS40OC4xLjE2OTQwMDg2MzcuMC4wLjA. [2]: /real_user_monitoring/#get-started -[3]: /real_user_monitoring/session_replay/mobile/ +[3]: /session_replay/mobile/ [4]: https://app.datadoghq.com/rum/sessions [5]: /real_user_monitoring/explorer/search/#facets [6]: /real_user_monitoring/explorer/saved_views/ [7]: /real_user_monitoring/application_monitoring/browser/setup/ -[8]: /real_user_monitoring/session_replay/browser/developer_tools +[8]: /session_replay/browser/developer_tools [9]: /real_user_monitoring/connect_rum_and_traces [10]: /real_user_monitoring/error_tracking/ [11]: /synthetics/guide/rum-to-synthetics/ diff --git a/content/en/product_analytics/_index.md b/content/en/product_analytics/_index.md index 0a2f845917c..10a8a0f4086 100644 --- a/content/en/product_analytics/_index.md +++ b/content/en/product_analytics/_index.md @@ -123,9 +123,9 @@ Suppose you want to make changes to your application interface but want to first [6]: /product_analytics/segmentation/ [8]: https://app.datadoghq.com/rum/ [9]: https://app.datadoghq.com/rum/list -[10]: /product_analytics/session_replay/heatmaps -[11]: /product_analytics/session_replay/ -[12]: /product_analytics/session_replay/playlists +[10]: /session_replay/heatmaps +[11]: /session_replay/ +[12]: /session_replay/playlists [13]: /product_analytics/charts/analytics_explorer [14]: /real_user_monitoring/application_monitoring/browser [15]: /real_user_monitoring/application_monitoring/ios diff --git a/content/en/product_analytics/charts/pathways.md b/content/en/product_analytics/charts/pathways.md index a377af4adc7..176e4ff92c7 100644 --- a/content/en/product_analytics/charts/pathways.md +++ b/content/en/product_analytics/charts/pathways.md @@ -72,4 +72,4 @@ Click a node for a list of analysis options, such as viewing a sample [Session R [1]: https://app.datadoghq.com/product-analytics/user-journey/pathways [2]: /real_user_monitoring/explorer/search_syntax/#wildcards -[3]: /product_analytics/session_replay/ +[3]: /session_replay/ diff --git a/content/en/product_analytics/session_replay/_index.md b/content/en/product_analytics/session_replay/_index.md deleted file mode 100644 index 2ca0e8aac38..00000000000 --- a/content/en/product_analytics/session_replay/_index.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Replaying User Activity -description: Learn about how to capture and visually replay your users' web browsing or mobile app experience with Session Replay. -aliases: -- /real_user_monitoring/guide/session-replay-getting-started/ -further_reading: -- link: 'https://www.datadoghq.com/blog/session-replay-datadog/' - tag: 'Blog' - text: 'Use Datadog Session Replay to view real-time user journeys' -- link: 'https://www.datadoghq.com/blog/reduce-customer-friction-funnel-analysis/' - tag: 'Blog' - text: 'Use funnel analysis to understand and optimize key user flows' -- link: 'https://www.datadoghq.com/blog/zendesk-session-replay-integration/' - tag: 'Blog' - text: 'Visually replay user-facing issues with Zendesk and Datadog Session Replay' -- link: '/integrations/content_security_policy_logs' - tag: 'Documentation' - text: 'Detect and aggregate CSP violations with Datadog' ---- - - -## Overview - -Session Replay expands your user experience monitoring by allowing you to capture and visually replay the web browsing or mobile app experience of your users. Combined with RUM performance data, Session Replay is beneficial for error identification, reproduction, and resolution, and provides insights into your application's usage patterns and design pitfalls. - -## Browser Session Replay - -Browser Session Replay expands your user experience monitoring by allowing you to capture and visually replay the web browsing experience of your users. Combined with RUM performance data, Session Replay is beneficial for error identification, reproduction, and resolution, and provides insights into your web application's usage patterns and design pitfalls. - -The RUM Browser SDK is [open source][1] and leverages the open source [rrweb][2] project. - -Learn more about the [Session Replay for Browsers][3]. - -## Mobile Session Replay - -Mobile Session Replay expands visibility into your mobile applications by visually replaying each user interaction, such as taps, swipes, and scrolls. It is available for native apps on both Android and iOS. Visually replaying user interactions on your applications makes it easier to reproduce crashes and errors, as well as understand the user journey for making UI improvements. - -Learn more about the [Session Replay for Mobile][4]. - -## Playback history - -You can see who has watched a given session replay by clicking the **watched** count displayed on the player page. This feature allows you to check whether someone you'd like to share the recording with has already watched it. - -{{< img src="real_user_monitoring/session_replay/session-replay-playback-history.png" alt="Check who has watched a session's recording" style="width:100%;" >}} - -The history includes only playbacks that occurred in the player page or in an embedded player, like in a [Notebook][5] or side panel. Included playbacks also generate an [Audit Trail][6] event. Thumbnail previews are not included in history. - -To view your own playback history, check out the [My Watch History][7] playlist. - -## Playlists - -You can create a playlist of Session Replays to organize them by any patterns you notice. Learn more about [Session Replay Playlists][8]. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: https://github.com/DataDog/browser-sdk -[2]: https://www.rrweb.io/ -[3]: /product_analytics/session_replay/browser/ -[4]: /product_analytics/session_replay/mobile/ -[5]: https://docs.datadoghq.com/notebooks/ -[6]: https://docs.datadoghq.com/account_management/audit_trail/ -[7]: https://app.datadoghq.com/rum/replay/playlists/my-watch-history -[8]: /product_analytics/session_replay/playlists \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/browser/_index.md b/content/en/product_analytics/session_replay/browser/_index.md deleted file mode 100644 index e3134389dea..00000000000 --- a/content/en/product_analytics/session_replay/browser/_index.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Browser Session Replay -description: Learn about how to capture and visually replay your users' web browsing experience with Session Replay. -further_reading: -- link: 'https://www.datadoghq.com/blog/session-replay-datadog/' - tag: 'Blog' - text: 'Use Datadog Session Replay to view real-time user journeys' -- link: 'https://www.datadoghq.com/blog/reduce-customer-friction-funnel-analysis/' - tag: 'Blog' - text: 'Use funnel analysis to understand and optimize key user flows' -- link: 'https://www.datadoghq.com/blog/zendesk-session-replay-integration/' - tag: 'Blog' - text: 'Visually replay user-facing issues with Zendesk and Datadog Session Replay' -- link: '/product_analytics/analytics_explorer' - tag: 'Documentation' - text: 'Visualize your Product Analytics data in the Analytics Explorer' -- link: '/integrations/content_security_policy_logs' - tag: 'Documentation' - text: 'Detect and aggregate CSP violations with Datadog' ---- - - -## Overview - -Session Replay expands your user experience monitoring by allowing you to capture and visually replay the web browsing experience of your users. Combined with RUM performance data, Session Replay is beneficial for error identification, reproduction, and resolution, and provides insights into your web application's usage patterns and design pitfalls. - -The RUM Browser SDK is [open source][1] and leverages the open source [rrweb][2] project. - -## How the Session Replay recorder works - -The Session Replay recorder is part of the RUM Browser SDK. The recorder takes a snapshot of the browser's DOM and CSS by tailing and recording events happening on a web page (such as DOM modification, mouse move, clicks, and input events) along with these events' timestamps. - -Datadog then rebuilds the web page and re-applies the recorded events at the appropriate time in the replay view. Session Replay follows the same 30 day retention policy as normal RUM sessions. - -The Session Replay recorder supports all browsers supported by the RUM Browser SDK. For more information, see the [Browser Support table][3]. - -To reduce Session Replay's network impact and ensure the Session Replay recorder has minimal overhead on your application's performance, Datadog compresses the data prior to sending it. Datadog also reduces the load on a browser's UI thread by delegating most of the CPU-intensive work (such as compression) to a dedicated web worker. The expected network bandwidth impact is less than 100kB/min. - -## Setup - -Learn how to [set up and configure Browser Session Replay][4]. - -## Privacy options - -See [Privacy Options][5]. - -## Troubleshooting - -Learn how to [troubleshoot Browser Session Replay][7]. - -## Mobile Session Replay - -Learn more about [Session Replay for Mobile][8]. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: https://github.com/DataDog/browser-sdk -[2]: https://www.rrweb.io/ -[3]: https://github.com/DataDog/browser-sdk/blob/main/packages/rum/BROWSER_SUPPORT.md -[4]: /product_analytics/session_replay/browser/setup_and_configuration -[5]: /product_analytics/session_replay/browser/privacy_options -[7]: /product_analytics/session_replay/browser/troubleshooting -[8]: /product_analytics/session_replay/mobile/ diff --git a/content/en/product_analytics/session_replay/browser/developer_tools.md b/content/en/product_analytics/session_replay/browser/developer_tools.md deleted file mode 100644 index 502cfce087d..00000000000 --- a/content/en/product_analytics/session_replay/browser/developer_tools.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Session Replay Browser Developer Tools -description: Describes the developer tools available in Session Replay -further_reading: - - link: '/product_analytics/session_replay/browser' - tag: Documentation - text: Browser Session Replay ---- - -{{< include-markdown "real_user_monitoring/session_replay/browser/developer_tools" >}} \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/browser/privacy_options.md b/content/en/product_analytics/session_replay/browser/privacy_options.md deleted file mode 100644 index 372b916824f..00000000000 --- a/content/en/product_analytics/session_replay/browser/privacy_options.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Session Replay Browser Privacy Options -description: Describes privacy controls available in Session Replay and how to set privacy options -further_reading: - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay - - link: "https://www.datadoghq.com/blog/default-privacy-session-replay/" - tag: "Blog" - text: "Obfuscate user data with Session Replay default privacy settings" ---- - -{{< include-markdown "real_user_monitoring/session_replay/browser/privacy_options" >}} \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/browser/setup_and_configuration.md b/content/en/product_analytics/session_replay/browser/setup_and_configuration.md deleted file mode 100644 index d06090f8d2c..00000000000 --- a/content/en/product_analytics/session_replay/browser/setup_and_configuration.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Browser Session Replay Setup and Configuration -description: Setting up and configuring Mobile Session Replay. -aliases: -further_reading: - - link: '/product_analytics/session_replay/browser' - tag: Documentation - text: Browser Session Replay - - link: '/product_analytics/session_replay/browser/privacy_options' - tag: Documentation - text: Browser Session Replay Privacy Options - - link: '/product_analytics/session_replay/browser/troubleshooting' - tag: Documentation - text: Troubleshoot Browser Session Replay - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay ---- - -{{< include-markdown "real_user_monitoring/session_replay/browser/setup_and_configuration" >}} diff --git a/content/en/product_analytics/session_replay/browser/troubleshooting.md b/content/en/product_analytics/session_replay/browser/troubleshooting.md deleted file mode 100644 index cb773e5e452..00000000000 --- a/content/en/product_analytics/session_replay/browser/troubleshooting.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Session Replay Browser Troubleshooting -description: Learn how to troubleshoot issues with Session Replay. -further_reading: -- link: 'https://github.com/DataDog/browser-sdk' - tag: "Source Code" - text: 'browser-sdk Source code' -- link: '/product_analytics/session_replay' - tag: 'Documentation' - text: 'Learn about Session Replay' -- link: '/integrations/content_security_policy_logs' - tag: 'Documentation' - text: 'Detect and aggregate CSP violations with Datadog' ---- - -{{< include-markdown "real_user_monitoring/session_replay/browser/troubleshooting" >}} \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/mobile/_index.md b/content/en/product_analytics/session_replay/mobile/_index.md deleted file mode 100644 index ea793d2ad51..00000000000 --- a/content/en/product_analytics/session_replay/mobile/_index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Mobile Session Replay -description: Setting up Session Replay for mobile devices. -aliases: -further_reading: - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay ---- - -## Overview - -Mobile Session Replay expands visibility into your mobile applications by visually replaying each user interaction, such as taps, swipes, and scrolls. It is available for native apps on both Android and iOS. Visually replaying user interactions on your applications makes it easier to reproduce crashes and errors, as well as understand the user journey for making UI improvements. - -{{< img src="real_user_monitoring/session_replay/mobile/mobile_replay.mp4" alt="An example of a Mobile Session Replay recording" video="true" style="width:60%;">}} - -## Setup - -Learn how to [Setup and Configure Mobile Session Replay][1]. - -## Privacy options - -See [Privacy Options][2]. - -## How Mobile Session Replay impacts app performance - -See [How Mobile Session Replay Impacts App Performance][3]. - -## Troubleshooting - -Learn how to [Troubleshoot Mobile Session Replay][4]. - -
For Session Replay, Datadog supports RUM for native iOS and Android mobile apps, but it is not supported for smart TVs or wearables.
- -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /product_analytics/session_replay/mobile/setup_and_configuration -[2]: /product_analytics/session_replay/mobile/privacy_options -[3]: /product_analytics/session_replay/mobile/app_performance -[4]: /product_analytics/session_replay/mobile/troubleshooting diff --git a/content/en/product_analytics/session_replay/mobile/app_performance.md b/content/en/product_analytics/session_replay/mobile/app_performance.md deleted file mode 100644 index 424b6488d8d..00000000000 --- a/content/en/product_analytics/session_replay/mobile/app_performance.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: How Mobile Session Replay Impacts App Performance -description: Performance benchmarking for Mobile Session Replay. -aliases: -further_reading: - - link: '/product_analytics/session_replay/mobile' - tag: Documentation - text: Mobile Session Replay - - link: '/product_analytics/session_replay/mobile/privacy_options' - tag: Documentation - text: Mobile Session Replay Privacy Options - - link: '/product_analytics/session_replay/mobile/setup_and_configuration' - tag: Documentation - text: Setup and Configure Mobile Session Replay - - link: '/product_analytics/session_replay/mobile/troubleshooting' - tag: Documentation - text: Troubleshoot Mobile Session Replay - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay ---- - -{{< include-markdown "real_user_monitoring/session_replay/mobile/app_performance" >}} \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/mobile/privacy_options.mdoc.md b/content/en/product_analytics/session_replay/mobile/privacy_options.mdoc.md deleted file mode 100644 index db9d3f18f44..00000000000 --- a/content/en/product_analytics/session_replay/mobile/privacy_options.mdoc.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Mobile Session Replay Privacy Options -description: Configure privacy options for Mobile Session Replay. -content_filters: - - trait_id: platform - option_group_id: rum_sdk_platform_options_v2 - label: "SDK" -further_reading: - - link: '/real_user_monitoring/session_replay/mobile' - tag: Documentation - text: Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/app_performance' - tag: Documentation - text: How Mobile Session Replay Impacts App Performance - - link: '/real_user_monitoring/session_replay/mobile/setup_and_configuration' - tag: Documentation - text: Setup and Configure Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/troubleshooting' - tag: Documentation - text: Troubleshoot Mobile Session Replay - - link: '/real_user_monitoring/session_replay' - tag: Documentation - text: Session Replay ---- - -{% partial file="real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" /%} \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/mobile/setup_and_configuration.mdoc.md b/content/en/product_analytics/session_replay/mobile/setup_and_configuration.mdoc.md deleted file mode 100644 index e11960b06da..00000000000 --- a/content/en/product_analytics/session_replay/mobile/setup_and_configuration.mdoc.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Mobile Session Replay Setup and Configuration -description: Setting up and configuring Mobile Session Replay. -content_filters: - - trait_id: platform - option_group_id: rum_session_replay_sdk_options - label: "SDK" -further_reading: - - link: '/product_analytics/session_replay/mobile' - tag: Documentation - text: Mobile Session Replay - - link: '/product_analytics/session_replay/mobile/app_performance' - tag: Documentation - text: How Mobile Session Replay Impacts App Performance - - link: '/product_analytics/session_replay/mobile/privacy_options' - tag: Documentation - text: Mobile Session Replay Privacy Options - - link: '/product_analytics/session_replay/mobile/troubleshooting' - tag: Documentation - text: Troubleshoot Mobile Session Replay - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay ---- - -{% partial file="real_user_monitoring/session_replay/setup_and_configuration.mdoc.md" /%} diff --git a/content/en/product_analytics/session_replay/mobile/troubleshooting.md b/content/en/product_analytics/session_replay/mobile/troubleshooting.md deleted file mode 100644 index a04985f60c2..00000000000 --- a/content/en/product_analytics/session_replay/mobile/troubleshooting.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Troubleshooting Mobile Session Replay -description: How to troubleshoot Mobile Session Replay. -aliases: -further_reading: - - link: '/product_analytics/session_replay/mobile' - tag: Documentation - text: Mobile Session Replay - - link: '/product_analytics/session_replay/mobile/setup_and_configuration' - tag: Documentation - text: Setup and Configure Mobile Session Replay - - link: '/product_analytics/session_replay/mobile/app_performance' - tag: Documentation - text: How Mobile Session Replay Impacts App Performance - - link: '/product_analytics/session_replay/mobile/privacy_options' - tag: Documentation - text: Mobile Session Replay Privacy Options - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay ---- - -{{< include-markdown "real_user_monitoring/session_replay/mobile/troubleshooting" >}} \ No newline at end of file diff --git a/content/en/product_analytics/session_replay/playlists.md b/content/en/product_analytics/session_replay/playlists.md deleted file mode 100644 index 38c55cbca0d..00000000000 --- a/content/en/product_analytics/session_replay/playlists.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Session Replay Playlists -description: Learn how to create and use Playlists for organizing Session Replays. -aliases: -further_reading: - - link: '/product_analytics/session_replay' - tag: Documentation - text: Session Replay ---- -{{< include-markdown "real_user_monitoring/session_replay/playlists" >}} \ No newline at end of file diff --git a/content/en/real_user_monitoring/_index.md b/content/en/real_user_monitoring/_index.md index 819f12edcc8..357c5f572ef 100644 --- a/content/en/real_user_monitoring/_index.md +++ b/content/en/real_user_monitoring/_index.md @@ -252,13 +252,13 @@ You must have edit access to restore general access to a restricted application. [5]: /real_user_monitoring/correlate_with_other_telemetry/apm/ [6]: /real_user_monitoring/error_tracking/ [7]: /real_user_monitoring/application_monitoring/browser/monitoring_page_performance/#event-timings-and-core-web-vitals -[8]: /real_user_monitoring/ios/mobile_vitals/ -[9]: /real_user_monitoring/android/mobile_vitals/ -[10]: /real_user_monitoring/ios/web_view_tracking/ -[11]: /real_user_monitoring/android/web_view_tracking/ -[12]: /real_user_monitoring/session_replay/browser/ -[13]: /real_user_monitoring/session_replay/browser/privacy_options/ -[14]: /real_user_monitoring/session_replay/browser/developer_tools/ +[8]: /real_user_monitoring/application_monitoring/ios/mobile_vitals/ +[9]: /real_user_monitoring/application_monitoring/android/mobile_vitals/ +[10]: /real_user_monitoring/application_monitoring/ios/web_view_tracking/ +[11]: /real_user_monitoring/application_monitoring/android/web_view_tracking/ +[12]: /session_replay/browser/ +[13]: /session_replay/browser/privacy_options/ +[14]: /session_replay/browser/developer_tools/ [15]: /real_user_monitoring/application_monitoring/browser/setup/ [16]: /real_user_monitoring/application_monitoring/ [17]: https://app.datadoghq.com/rum/optimization/inspect diff --git a/content/en/real_user_monitoring/application_monitoring/_index.md b/content/en/real_user_monitoring/application_monitoring/_index.md index ca2b7de9941..9636d2e4fdf 100644 --- a/content/en/real_user_monitoring/application_monitoring/_index.md +++ b/content/en/real_user_monitoring/application_monitoring/_index.md @@ -10,7 +10,7 @@ aliases: - /real_user_monitoring/mobile_and_tv_monitoring/setup/ - /real_user_monitoring/mobile_and_tv_monitoring/troubleshooting/ further_reading: -- link: '/real_user_monitoring/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Session Replay' --- diff --git a/content/en/real_user_monitoring/application_monitoring/browser/frustration_signals.md b/content/en/real_user_monitoring/application_monitoring/browser/frustration_signals.md index 3e8dc5264d4..68f47ffc147 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/frustration_signals.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/frustration_signals.md @@ -14,7 +14,7 @@ further_reading: - link: '/real_user_monitoring/explorer' tag: 'Documentation' text: 'Learn about the RUM Explorer' -- link: '/real_user_monitoring/session_replay' +- link: '/session_replay/' tag: 'Documentation' text: 'Learn about Session Replay' --- @@ -164,7 +164,7 @@ To provide feedback or submit a feature request, contact Datado [5]: /dashboards/ [6]: /monitors/ [7]: https://app.datadoghq.com/rum/replay/sessions/ -[8]: /real_user_monitoring/session_replay/browser/ +[8]: /session_replay/browser/ [9]: /monitors/types/real_user_monitoring/ [10]: mailto:success@datadoghq.com diff --git a/content/en/real_user_monitoring/application_monitoring/browser/optimizing_performance/_index.md b/content/en/real_user_monitoring/application_monitoring/browser/optimizing_performance/_index.md index 9cbda97ad74..4884805e496 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/optimizing_performance/_index.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/optimizing_performance/_index.md @@ -105,7 +105,7 @@ For deeper root cause analysis, use browser profiling alongside RUM to identify [1]: /real_user_monitoring/application_monitoring/browser/monitoring_page_performance/#event-timings-and-core-web-vitals [2]: /real_user_monitoring/application_monitoring/browser/monitoring_page_performance/#how-loading-time-is-calculated [3]: /real_user_monitoring/application_monitoring/browser/setup/ -[4]: /real_user_monitoring/session_replay/ +[4]: /session_replay/ [5]: https://app.datadoghq.com/rum/vitals [6]: https://app.datadoghq.com/rum/performance-monitoring [8]: https://web.dev/articles/lcp/ diff --git a/content/en/real_user_monitoring/application_monitoring/browser/setup/client.md b/content/en/real_user_monitoring/application_monitoring/browser/setup/client.md index 4ef28bb4479..59fea1e9881 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/setup/client.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/setup/client.md @@ -8,7 +8,7 @@ further_reading: - link: '/real_user_monitoring/application_monitoring/browser/advanced_configuration/' tag: 'Documentation' text: 'Advanced configuration' -- link: '/real_user_monitoring/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Setup Session Replay' - link: '/real_user_monitoring/error_tracking/browser/' diff --git a/content/en/real_user_monitoring/application_monitoring/web_view_tracking/_index.md b/content/en/real_user_monitoring/application_monitoring/web_view_tracking/_index.md index faeaab6471d..3bd3f4440bb 100644 --- a/content/en/real_user_monitoring/application_monitoring/web_view_tracking/_index.md +++ b/content/en/real_user_monitoring/application_monitoring/web_view_tracking/_index.md @@ -28,7 +28,7 @@ further_reading: - link: /real_user_monitoring tag: Documentation text: Explore Datadog RUM - - link: /real_user_monitoring/session_replay/mobile/setup_and_configuration#web-view-instrumentation + - link: /session_replay/mobile/setup_and_configuration#web-view-instrumentation tag: Documentation text: Web View Instrumentation --- @@ -108,7 +108,7 @@ DatadogWebViewTracking.xcframework {{% /collapse-content %}} [1]: /real_user_monitoring/application_monitoring/browser/setup/#npm -[2]: /real_user_monitoring/ios/ +[2]: /real_user_monitoring/application_monitoring/ios/ [3]: https://docs.datadoghq.com/logs/log_collection/ios {{% /tab %}} @@ -166,7 +166,7 @@ In order for instrumentation to work on the WebView component, it is very import ``` [1]: https://search.maven.org/artifact/com.datadoghq/dd-sdk-android-rum -[2]: /real_user_monitoring/android/?tab=kotlin#setup +[2]: /real_user_monitoring/application_monitoring/android/?tab=kotlin#setup [3]: https://search.maven.org/artifact/com.datadoghq/dd-sdk-android-logs [4]: /logs/log_collection/android/?tab=kotlin#setup @@ -379,7 +379,7 @@ See [RUM & Session Replay Billing][6] for details on how web views in mobile app {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/#web-view-instrumentation +[1]: /session_replay/mobile/setup_and_configuration/#web-view-instrumentation [2]: /real_user_monitoring/application_monitoring/browser/setup/#npm [3]: /real_user_monitoring/application_monitoring/ios/setup [4]: /logs/log_collection/ios diff --git a/content/en/real_user_monitoring/feature_flag_tracking/using_feature_flags.md b/content/en/real_user_monitoring/feature_flag_tracking/using_feature_flags.md index 3331f441544..b01c526a955 100644 --- a/content/en/real_user_monitoring/feature_flag_tracking/using_feature_flags.md +++ b/content/en/real_user_monitoring/feature_flag_tracking/using_feature_flags.md @@ -74,7 +74,7 @@ You can compare important metrics to you and your teams by grouping your query b {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/rum/feature-flags -[2]: /real_user_monitoring/session_replay/browser/ +[2]: /session_replay/browser/ [3]: /real_user_monitoring/error_tracking/explorer/#explore-your-issues [4]: https://app.datadoghq.com/rum/explorer [5]: /dashboards/ diff --git a/content/en/real_user_monitoring/guide/alerting-with-rum.md b/content/en/real_user_monitoring/guide/alerting-with-rum.md index e07bd670186..162227f3c32 100644 --- a/content/en/real_user_monitoring/guide/alerting-with-rum.md +++ b/content/en/real_user_monitoring/guide/alerting-with-rum.md @@ -94,7 +94,7 @@ This example monitor warns when INP exceeds 200 milliseconds and alerts when INP [8]: /monitors/notify/ [9]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=npm#global-context [10]: /real_user_monitoring/application_monitoring/browser/monitoring_page_performance/#all-performance-metrics -[11]: /real_user_monitoring/android/mobile_vitals/ +[11]: /real_user_monitoring/application_monitoring/android/mobile_vitals/ [12]: https://app.datadoghq.com/rum/performance-monitoring [13]: /real_user_monitoring/rum_without_limits/metrics [14]: /real_user_monitoring/explorer/events/ \ No newline at end of file diff --git a/content/en/real_user_monitoring/guide/browser-sdk-upgrade.md b/content/en/real_user_monitoring/guide/browser-sdk-upgrade.md index f2bff831e20..042638512b5 100644 --- a/content/en/real_user_monitoring/guide/browser-sdk-upgrade.md +++ b/content/en/real_user_monitoring/guide/browser-sdk-upgrade.md @@ -380,7 +380,7 @@ The RUM Browser SDK no longer lets you specify the source of an error collected {{< partial name="whats-next/whats-next.html" >}} [1]: /real_user_monitoring/faq/content_security_policy -[2]: /real_user_monitoring/session_replay +[2]: /session_replay/ [3]: /real_user_monitoring/application_monitoring/browser/collecting_browser_errors/ [4]: /real_user_monitoring/application_monitoring/browser/monitoring_resource_performance/ [5]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=npm#enrich-and-control-rum-data @@ -398,9 +398,9 @@ The RUM Browser SDK no longer lets you specify the source of an error collected [17]: /api/latest/rum/ [18]: /integrations/content_security_policy_logs/?tab=firefox#use-csp-with-real-user-monitoring-and-session-replay [19]: https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted -[20]: /real_user_monitoring/session_replay/browser/privacy_options/#configuration +[20]: /session_replay/browser/privacy_options/#configuration [21]: /real_user_monitoring/guide/sampling-browser-plans/#setup -[22]: /real_user_monitoring/session_replay/browser/#usage +[22]: /session_replay/browser/#usage [23]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=npm#enrich-and-control-rum-data [24]: /help/ [26]: /real_user_monitoring/application_monitoring/browser/ diff --git a/content/en/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools.md b/content/en/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools.md index a1389c34634..7def71e2768 100644 --- a/content/en/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools.md +++ b/content/en/real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools.md @@ -2,7 +2,7 @@ title: Connect Session Replay To Your Third-Party Tools description: "Integrate Session Replay with third-party customer experience and analytics tools by accessing replay URLs from the browser." further_reading: -- link: '/real_user_monitoring/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Learn about Session Replay' --- diff --git a/content/en/real_user_monitoring/guide/enable-rum-shopify-store.md b/content/en/real_user_monitoring/guide/enable-rum-shopify-store.md index b8f6988b43c..a15e47cc624 100644 --- a/content/en/real_user_monitoring/guide/enable-rum-shopify-store.md +++ b/content/en/real_user_monitoring/guide/enable-rum-shopify-store.md @@ -69,6 +69,6 @@ making data-driven decisions to improve your store [1]: /real_user_monitoring/application_monitoring/browser/setup/#choose-the-right-installation-method/ [2]: https://help.shopify.com/en/manual/online-store/themes/theme-structure/extend/edit-theme-code -[3]: /real_user_monitoring/session_replay/browser/ +[3]: /session_replay/browser/ [5]: /real_user_monitoring/platform/generate_metrics/ diff --git a/content/en/real_user_monitoring/guide/enable-rum-squarespace-store.md b/content/en/real_user_monitoring/guide/enable-rum-squarespace-store.md index 753d3057443..5d2f3e772cd 100644 --- a/content/en/real_user_monitoring/guide/enable-rum-squarespace-store.md +++ b/content/en/real_user_monitoring/guide/enable-rum-squarespace-store.md @@ -58,6 +58,6 @@ making data-driven decisions to improve your store [1]: /real_user_monitoring/application_monitoring/browser/setup/#choose-the-right-installation-method/ [2]: https://support.squarespace.com/hc/en-us/articles/205815908-Using-code-injection -[3]: /real_user_monitoring/session_replay/browser/ +[3]: /session_replay/browser/ [4]: /product_analytics/journeys/funnel_analysis/ [5]: /real_user_monitoring/generate_metrics/ diff --git a/content/en/real_user_monitoring/guide/enable-rum-woocommerce-store.md b/content/en/real_user_monitoring/guide/enable-rum-woocommerce-store.md index f6bc2c81c6e..ae5993290a0 100644 --- a/content/en/real_user_monitoring/guide/enable-rum-woocommerce-store.md +++ b/content/en/real_user_monitoring/guide/enable-rum-woocommerce-store.md @@ -57,5 +57,5 @@ making data-driven decisions to improve your store {{< partial name="whats-next/whats-next.html" >}} [1]: /real_user_monitoring/application_monitoring/browser/setup/#choose-the-right-installation-method/ -[2]: /real_user_monitoring/session_replay/ +[2]: /session_replay/ [3]: /real_user_monitoring/platform/generate_metrics/ \ No newline at end of file diff --git a/content/en/real_user_monitoring/guide/investigate-zendesk-tickets-with-session-replay.md b/content/en/real_user_monitoring/guide/investigate-zendesk-tickets-with-session-replay.md index 748ba602230..ac073e0939b 100644 --- a/content/en/real_user_monitoring/guide/investigate-zendesk-tickets-with-session-replay.md +++ b/content/en/real_user_monitoring/guide/investigate-zendesk-tickets-with-session-replay.md @@ -35,5 +35,5 @@ You can also add the replay to a playlist to group related issues together for e [1]: /integrations/zendesk/#zendesk-rum-app-installation [2]: https://www.zendesk.com/sg/marketplace/apps/support/993138/datadog-rum/?queryID=fb54e1e367559c15de7e8a0f1eb8aa6f -[3]: /real_user_monitoring/session_replay/browser/ -[4]: /real_user_monitoring/session_replay/playlists \ No newline at end of file +[3]: /session_replay/browser/ +[4]: /session_replay/playlists \ No newline at end of file diff --git a/content/en/real_user_monitoring/guide/mobile-sdk-upgrade.md b/content/en/real_user_monitoring/guide/mobile-sdk-upgrade.md index 696ab4e8ed6..df799b1f27a 100644 --- a/content/en/real_user_monitoring/guide/mobile-sdk-upgrade.md +++ b/content/en/real_user_monitoring/guide/mobile-sdk-upgrade.md @@ -432,7 +432,7 @@ Legacy delegate types have been replaced by a unified instrumentation API: |`DDURLSessionDelegate()`|`URLSessionInstrumentation.enable(with:)`| |`DDNSURLSessionDelegate()`|`URLSessionInstrumentation.enable(with:)`| -[1]: /real_user_monitoring/session_replay/mobile/privacy_options?platform=ios +[1]: /session_replay/mobile/privacy_options?platform=ios {{% /tab %}} {{< /tabs >}} @@ -447,7 +447,7 @@ SDK v2 offers a unified API layout and naming alignment between the iOS SDK, the SDK v2 enables the usage of [Mobile Session Replay][2] on Android and iOS applications. -[2]: /real_user_monitoring/session_replay/mobile/ +[2]: /session_replay/mobile/ {{% /tab %}} {{% tab "iOS" %}} @@ -458,7 +458,7 @@ SDK v2 offers a unified API layout and naming alignment between the iOS SDK, the SDK v2 enables the usage of [Mobile Session Replay][3] on Android and iOS applications. -[3]: /real_user_monitoring/session_replay/mobile/ +[3]: /session_replay/mobile/ {{% /tab %}} {{% tab "React Native" %}} @@ -987,7 +987,7 @@ To improve granularity for the Datadog SDK libraries used, the `dd-sdk-android-k For instructions on setting up Mobile Session Replay, see [Mobile Session Replay Setup and Configuration][6]. -[6]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/?tab=android +[6]: /session_replay/mobile/setup_and_configuration/?tab=android {{% /tab %}} {{% tab "iOS" %}} @@ -1182,7 +1182,7 @@ WebViewTracking.enable(webView: webView) For instructions on setting up Mobile Session Replay, see [Mobile Session Replay Setup and Configuration][7]. -[7]: /real_user_monitoring/session_replay/mobile/setup_and_configuration/?tab=ios +[7]: /session_replay/mobile/setup_and_configuration/?tab=ios {{% /tab %}} {{% tab "React Native" %}} diff --git a/content/en/real_user_monitoring/guide/session-replay-for-solutions.md b/content/en/real_user_monitoring/guide/session-replay-for-solutions.md index 36deb2d2c14..acd68d3f404 100644 --- a/content/en/real_user_monitoring/guide/session-replay-for-solutions.md +++ b/content/en/real_user_monitoring/guide/session-replay-for-solutions.md @@ -6,10 +6,10 @@ further_reading: - link: '/real_user_monitoring/correlate_with_other_telemetry/apm/' tag: 'Documentation' text: 'Learn how to connect RUM with APM traces' -- link: '/real_user_monitoring/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Learn about Session Replay' -- link: '/real_user_monitoring/session_replay/browser/developer_tools' +- link: '/session_replay/browser/developer_tools' tag: 'Documentation' text: 'Learn about Browser Dev Tools' --- @@ -70,7 +70,7 @@ The Frontend team may also be encouraged to implement an error message in the UI {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/browser/ -[2]: /real_user_monitoring/session_replay/browser/developer_tools/ +[1]: /session_replay/browser/ +[2]: /session_replay/browser/developer_tools/ [3]: /real_user_monitoring/connect_rum_and_traces [4]: https://app.datadoghq.com/rum/explorer diff --git a/content/en/real_user_monitoring/guide/session-replay-service-worker.md b/content/en/real_user_monitoring/guide/session-replay-service-worker.md index 5aa9251100d..ada92ea5b16 100644 --- a/content/en/real_user_monitoring/guide/session-replay-service-worker.md +++ b/content/en/real_user_monitoring/guide/session-replay-service-worker.md @@ -4,7 +4,7 @@ description: "Configure third-party service worker permissions for Session Repla aliases: - /real_user_monitoring/faq/session_replay_service_worker/ further_reading: -- link: '/real_user_monitoring/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Learn about Session Replay' --- diff --git a/content/en/real_user_monitoring/guide/shadow-dom.md b/content/en/real_user_monitoring/guide/shadow-dom.md index 9827426e844..0409176b22b 100644 --- a/content/en/real_user_monitoring/guide/shadow-dom.md +++ b/content/en/real_user_monitoring/guide/shadow-dom.md @@ -3,7 +3,7 @@ title: Enrich Your Session Replays With Shadow DOM Components description: Guide about Shadow DOM compatibility with Session Replay. further_reading: -- link: '/real_user_monitoring/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Learn about Session Replay' --- diff --git a/content/en/real_user_monitoring/rum_without_limits/retention_filters.md b/content/en/real_user_monitoring/rum_without_limits/retention_filters.md index 87071c3f59a..2955ec305a0 100644 --- a/content/en/real_user_monitoring/rum_without_limits/retention_filters.md +++ b/content/en/real_user_monitoring/rum_without_limits/retention_filters.md @@ -125,7 +125,7 @@ Analyze performance with [metrics][7]. {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/browser/#force-session-replay +[1]: /session_replay/browser/#force-session-replay [2]: https://app.datadoghq.com/rum/list [3]: /real_user_monitoring/explorer/ [4]: /real_user_monitoring/guide/retention_filter_best_practices diff --git a/content/en/real_user_monitoring/session_replay/browser/developer_tools.md b/content/en/real_user_monitoring/session_replay/browser/developer_tools.md deleted file mode 100644 index c98f9d48092..00000000000 --- a/content/en/real_user_monitoring/session_replay/browser/developer_tools.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Session Replay Browser Developer Tools -description: Describes the developer tools available in Session Replay -aliases: -- /real_user_monitoring/session_replay/developer_tools -further_reading: - - link: '/real_user_monitoring/session_replay/browser' - tag: Documentation - text: Browser Session Replay ---- - -## Overview - -Session Replay's Browser Dev Tools are built-in debugging tools that can help you troubleshoot issues in your applications. You do not need to configure anything to use Browser Dev Tools. - -## Browser Dev Tools - -To access Browser Dev Tools, either click the **Jump to Replay** button to the left of a session in the **Sessions** tab or click on a session and click **Replay Session** on the top right corner in the [RUM Explorer][1]. - -{{< img src="real_user_monitoring/session_replay/dev_tools/dev-tools-1.png" alt="Dev Tools button" style="width:80%;">}} - -The ** Dev Tools** button appears to the right of the **Share** button. You can view performance data, console logs, errors, and attributes about your replays. - -### Performance - -The **Performance** tab displays a waterfall of events (such as actions, errors, resources, and long tasks) and timestamps in a session. - -Select and apply filters such as Action Name and resource Type to change the scope of resources and event types displayed. You can also drag and drop the sliders in the waterfall to expand the time range. - -{{< img src="real_user_monitoring/session_replay/dev_tools/performance-filters-2.mp4" alt="Performance filters" video="true" style="width:60%;">}} - -### Console - -The **Console** tab displays all [logs collected from the web browser][2] and errors for each view. - -Click **Error**, **Warn**, **Info**, and **Debug** to filter your logs based on severity. To search for these logs in the [Log Explorer][3], click **View in Log Explorer**. - -{{< img src="real_user_monitoring/session_replay/dev_tools/dev-tools-console.png" alt="Console View in Log Explorer button" style="width:50%;">}} - -The Log Explorer opens in a separate tab with a pre-filled search query. - -### Errors - -The **Errors** tab displays [RUM errors][4] and [Error Tracking][5] issues that correlate to the session. - -{{< img src="real_user_monitoring/session_replay/dev_tools/dev-tools-errors.png" alt="Errors tab" style="width:70%;">}} - -### Attributes - -The **Attributes** tab displays all attributes related to the session. For more information, see [Default attributes][6]. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /real_user_monitoring/explorer/ -[2]: /logs/log_collection/javascript/ -[3]: /logs/explorer/ -[4]: /real_user_monitoring/application_monitoring/browser/collecting_browser_errors/ -[5]: /real_user_monitoring/error_tracking/ -[6]: /real_user_monitoring/application_monitoring/browser/data_collected/#default-attributes diff --git a/content/en/real_user_monitoring/session_replay/heatmaps.md b/content/en/real_user_monitoring/session_replay/heatmaps.md deleted file mode 100644 index d04064ed594..00000000000 --- a/content/en/real_user_monitoring/session_replay/heatmaps.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: Heatmaps -description: Heatmaps are a type of visualization that lets you to see where users click on your website. -aliases: -- /real_user_monitoring/heatmaps -further_reading: -- link: '/real_user_monitoring/session_replay/browser/' - tag: 'Documentation' - text: 'Session Replay for Browsers' -- link: '/real_user_monitoring/session_replay/mobile/' - tag: 'Documentation' - text: 'Session Replay for Mobile' -- link: 'https://www.datadoghq.com/blog/visualize-behavior-datadog-scrollmaps/' - tag: 'Blog' - text: 'Visualize user interactions with your pages by using Scroll maps in Datadog Heatmaps' ---- - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-landing.png" alt="Overview of the heatmaps page showing the Click map option." style="width:100%;">}} - -A heatmap (or heat map) is a visualization of your user's interactions overlaid on Session Replay data. Real User Monitoring (RUM) has three different types of heatmaps: - -- **Click maps:** View user interactions (clicks) to understand how users engage with your page. -- **Top elements:** View a ranking of up to the top 10 most interacted-with elements on a given page. -- **Scroll maps:** View how far users scroll down a page, including where the average fold of a page falls. The average fold is the lowest point on a page that a user can see on their device without scrolling. - -Use heatmaps to review user interaction data and identify ways to improve your user experience. - -## Prerequisites - -To get started with heatmaps: - -1. Verify your SDK version: - - For Click maps, you must be on the latest version of the SDK (v4.40.0+). - - For Scroll maps, you must be on v4.50.0+. -2. Enable [Session Replay][1]. -3. Set `trackUserInteractions: true` in the SDK initialization to enable action tracking (required for Click maps). - -## Getting started - -On the [Real User Monitoring landing page][3], select your [application][4] and view from the application selector. Then navigate to [**Digital Experience > Real User Monitoring > Session Replay > Heatmaps**][2]. - -To the left of the timeframe selector, you can select the type of heatmap you would like to view: Top elements, Click map, or Scroll map. This takes you to the [heatmap page][2] for a particular view. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-different-views.png" alt="The heatmaps page has multiple ways to show different views: by application, map type, device type, action name, and granular filters." style="width:100%;">}} - -You have the following additional view options: - -- To switch the view being shown, use the **View Name** and **Application** selectors at the top. -- To change the device view, use the **Device type** selector. -- To filter by action name, use the **Filter actions by** dropdown. -- To add more granular filters, like a specific geography for example, click the **Add Filter** button. - -## Top Elements - -Top Elements heatmaps aggregate click actions on a given view by displaying the elements that are most interacted with, in addition to their interaction rank. The ranking on the map itself corresponds to the action name on the side. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-top-elements.png" alt="A ranking of the top elements clicked on a page." style="width:100%;">}} - -Hover over any action name in the panel to highlight the corresponding action on the map. - -## Click maps - -A Click map shows you the actions most interacted with on a given view by aggregating user click actions from sessions and visualizing them as blobs on the map. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-clickmaps.png" alt="Click map data overlayed on a website." style="width:100%;">}} - -On the left is a list of all actions that occurred on the page, listed by frequency. When you click into an action, you can understand more about that interaction, for example: - -- The number of times the user performed the action and where it falls in overall analytics of top actions on a given page. -- If that action had a frustration signal occurring on it (for example, if a user rage clicked on that button), you can view the associated frustration signals as well. - -From this view, you can also click the **Start a Funnel** button to identify user drop off. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-clickmap-actions.png" alt="Shows an example action and the information you can get about that action." style="width:50%;">}} - -## Scroll maps - -Scroll maps display the aggregate scroll activity on a given page. Use Scroll maps to see where the average fold of the page falls, and how many users scroll to a given depth. You can drag the floating blue bar on a Scroll map to the depth you wish to assess. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-scrollmap.png" alt="Scroll map of a sample ecommerce page showing the average fold and scroll depth distribution." style="width:100%;">}} - -The panel to the left of the Scroll map provides high-level insights with direct links to query results, such as a link to a list of views where the user scrolled past a given percentile. Below the insight panel is a minimap of the page and a distribution graph displaying granular scroll data, useful for identifying where the biggest drop-off occurs. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-minimap.png" alt="A screenshot of the queries for scroll data insights" style="width:50%;">}} - -## Screenshots - -A screenshot is the state of a view at a particular point in time. Changing the screenshot shows different results, depending on the screenshot selected. You can also save screenshots so that everyone in your organization can analyze the same view state. - -### Changing screenshots -From the heatmap view, click the **Change Screenshot** button. Choose from existing screenshots previously saved by teammates, or grab a screenshot from a Session Replay. - -To select a screenshot from a Session Replay: - -1. Click **Grab from replay** if the desired heatmap screenshot has not been previously saved. - - {{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-change-screenshot-button-1.png" alt="Click the Grab from replay button to change the screenshot the heatmap background is based on." style="width:100%;">}} - -1. Click an action event on the right to select a different snapshot for your heatmap. - - {{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-list-all-events-1.png" alt="List of action events for the session replay." style="width:100%;">}} - -1. If the session [does not contain the action](#the-view-that-i-selected-is-not-showing-the-initial-content) that leads to the desired screenshot, you can return to the list of replays by clicking **Choose Another Replay**. -1. Click the **Take Screenshot** button to apply the screenshot at the paused point to the heatmap. - -### Saving screenshots - -You can save the current heatmap state as a screenshot so it becomes the default view for anyone in your organization who opens the heatmap. To save the current screenshot auto-picked from a recent replay, click **Save** on the current screenshot. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-save-screenshot-1.png" alt="Click Save to apply the auto-picked screenshot." style="width:100%;">}} - -You can save multiple screenshots for the same view (for example: default view, open navigation menu, open modal) and switch between screenshots saved by teammates. - -To remove the currently saved screenshot and revert to an auto-picked one from a recent replay, click **Unpin** on the current screenshot. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-unpin-screenshot-1.png" alt="Click unpin to remove the currently pinned screenshot." style="width:100%;">}} - -## Next steps - -After you analyze heatmaps, explore related data to understand why users behave that way. Pivot to the [Analytics explorer][3] or watch associated [session replays][1] to visually see user actions in the context of their overall session. - -## Troubleshooting - -### I am looking at a heatmap for a given view, but it's showing me an unexpected page. - -Heatmaps are based on RUM view names. Depending on how your RUM application is configured, many pages may be grouped under the same view name, or you may have very specific view names. - -### The view that I selected is not showing the initial content. - -Heatmaps are generated with Session Replay data. Datadog automatically selects a replay that is both recent and closely matches the initial state of the page. In some cases, you might want to see the heatmap for a different view state. To switch the screenshot of your heatmap, click **Change Screenshot**, then **Grab from replay** to navigate through the different states of a replay and find the one you are looking for. If the replay you're viewing does not have the screenshot you're looking for, you can use the **Choose Another Replay** button to select another replay of the same view. - -### On the action list on the side of my heatmap, I see an icon showing an element that is not visible in the heatmap. - -The tooltip on the icon says element is not visible. This means that the element is a common action on your page, but it's not displayed on the screenshot in the heatmap. To see that element, you can click **Change Screenshot** in the top right corner to switch the screenshot of your heatmap to one where that element is present. - -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-hidden-elements.png" alt="Hidden elements in the action list on a heatmap." style="width:100%;">}} - -### After attempting to create a heatmap, I see a "No Replay Data" state appear. - -This means that Datadog could not find any Session Replays to use as a heatmap background that matches the current search filters. If you just started to record sessions with the [Browser SDK][5], it may also take a few minutes for the Session Replay to be available for viewing. - -### After attempting to create a heatmap, I see a "Not enough data to generate a heatmap" state appear. - -This means that Datadog was not able to match any user actions with the current selected replay. This happens for a variety of reasons, such as: - -- Your application is not using the latest SDK version (>= 4.20.0). -- Your page has recently changed drastically. - -### All of the user information on the page is empty. - -User information is not collected by default. Heatmaps use the user information available in your session data to display relevant insights on behavior. To populate user information, configure user attributes in your RUM SDK implementation. - -## Further reading -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /real_user_monitoring/session_replay/ -[2]: https://app.datadoghq.com/rum/heatmap/ -[3]: https://app.datadoghq.com/rum/performance-monitoring -[4]: /real_user_monitoring/explorer/#view-by-application -[5]: https://github.com/DataDog/browser-sdk/blob/main/packages/rum/package.json diff --git a/content/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md b/content/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md deleted file mode 100644 index bb7ff30a54a..00000000000 --- a/content/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Mobile Session Replay Privacy Options -description: Configure privacy options for Mobile Session Replay. -content_filters: - - trait_id: platform - option_group_id: rum_sdk_platform_options_v2 - label: "SDK" -further_reading: - - link: '/real_user_monitoring/session_replay/mobile' - tag: Documentation - text: Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/app_performance' - tag: Documentation - text: How Mobile Session Replay Impacts App Performance - - link: '/real_user_monitoring/session_replay/mobile/setup_and_configuration' - tag: Documentation - text: Setup and Configure Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/troubleshooting' - tag: Documentation - text: Troubleshoot Mobile Session Replay - - link: '/real_user_monitoring/session_replay' - tag: Documentation - text: Session Replay ---- - -{% partial file="real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" /%} diff --git a/content/en/real_user_monitoring/session_replay/_index.md b/content/en/session_replay/_index.md similarity index 50% rename from content/en/real_user_monitoring/session_replay/_index.md rename to content/en/session_replay/_index.md index 6229bcbc1a6..c13a06d1cf5 100644 --- a/content/en/real_user_monitoring/session_replay/_index.md +++ b/content/en/session_replay/_index.md @@ -3,6 +3,11 @@ title: Session Replay description: Learn about how to capture and visually replay your users' web browsing or mobile app experience with Session Replay. aliases: - /real_user_monitoring/guide/session-replay-getting-started/ +- /real_user_monitoring/session_replay/ +- /product_analytics/session_replay/ +- /real_user_monitoring/session_replay/developer_tools +- /real_user_monitoring/session_replay/browser/developer_tools +- /product_analytics/session_replay/browser/developer_tools further_reading: - link: 'https://www.datadoghq.com/blog/session-replay-datadog/' tag: 'Blog' @@ -23,21 +28,21 @@ further_reading: ## Overview -Session Replay expands your user experience monitoring by allowing you to capture and visually replay the web browsing or mobile app experience of your users. Combined with RUM performance data, Session Replay is beneficial for error identification, reproduction, and resolution, and provides insights into your application's usage patterns and design pitfalls. +Session Replay expands your user experience monitoring by allowing you to capture and visually replay the web browsing or mobile app experience of your users. Session Replay is available in both [RUM][1] and [Product Analytics][2], helping you identify and reproduce errors, understand user journeys, and gain insights into your application's usage patterns and design pitfalls. ## Browser Session Replay Browser Session Replay expands your user experience monitoring by allowing you to capture and visually replay the web browsing experience of your users. Combined with RUM performance data, Session Replay is beneficial for error identification, reproduction, and resolution, and provides insights into your web application's usage patterns and design pitfalls. -The RUM Browser SDK is [open source][1] and leverages the open source [rrweb][2] project. +The RUM Browser SDK is [open source][3] and leverages the open source [rrweb][4] project. -Learn more about the [Session Replay for Browsers][3]. +Learn more about the [Session Replay for Browsers][5]. ## Mobile Session Replay Mobile Session Replay expands visibility into your mobile applications by visually replaying each user interaction, such as taps, swipes, and scrolls. It is available for native apps on both Android and iOS. Visually replaying user interactions on your applications makes it easier to reproduce crashes and errors, as well as understand the user journey for making UI improvements. -Learn more about the [Session Replay for Mobile][4]. +Learn more about the [Session Replay for Mobile][6]. ## Extend data retention @@ -45,17 +50,17 @@ By default, Session Replay data is retained for 30 days. To extend Session Replay data retention to 15 months, you can enable _Extended Retention_ on individual session replays. These sessions must be non-active (the user has completed their experience). -To access any Session Replay at a later time, Datadog recommends saving the URL or adding it to a [Playlist][8]. +To access any Session Replay at a later time, Datadog recommends saving the URL or adding it to a [Playlist][7]. Extended Retention only applies to Session Replay and does not include associated events. The 15 months start when Extended Retention is enabled, not when the session is collected. You can disable Extended Retention at any time. If the session replay is still within its default 30 days of retention, the replay expires at the end of the initial 30 day window. If you disable Extended Retention on a session replay that is older than 30 days, the replay immediately expires. -{{< img src="real_user_monitoring/session_replay/session-replay-extended-retention.png" alt="Enable extended retention" style="width:100%;" >}} +{{< img src="real_user_monitoring/session_replay/extended-retention-1.png" alt="Enable extended retention" style="width:100%;" >}} Refer to the below diagram to understand what data is retained with extended retention. -{{< img src="real_user_monitoring/session_replay/replay-extended-retention.png" alt="Diagram of what data is retained with extended retention" style="width:100%;" >}} +{{< img src="real_user_monitoring/session_replay/replay-extended-retention-1.png" alt="Diagram of what data is retained with extended retention" style="width:100%;" >}} ## Playback history @@ -63,23 +68,55 @@ You can see who has watched a given session replay by clicking the **watched** c {{< img src="real_user_monitoring/session_replay/session-replay-playback-history.png" alt="Check who has watched a session's recording" style="width:100%;" >}} -The history includes only playbacks that occurred in the player page or in an embedded player, like in a [Notebook][5] or side panel. Included playbacks also generate an [Audit Trail][6] event. Thumbnail previews are not included in history. +The history includes only playbacks that occurred in the player page or in an embedded player, like in a [Notebook][8] or side panel. Included playbacks also generate an [Audit Trail][9] event. Thumbnail previews are not included in history. -To view your own playback history, check out the [My Watch History][7] playlist. +To view your own playback history, check out the [My Watch History][10] playlist. ## Playlists -You can create a playlist of Session Replays to organize them by any patterns you notice. Learn more about [Session Replay Playlists][8]. +You can create a playlist of Session Replays to organize them by any patterns you notice. Learn more about [Session Replay Playlists][7]. + +## Dev Tools + +Dev Tools is a built-in debugging panel in Session Replay that exposes key information during playback. Use it to identify issues, trace requests, and understand performance bottlenecks—all without reproducing the issue yourself. Dev Tools are available for both [RUM][1] and [Product Analytics][2] sessions. + +To access Dev Tools, click the **Dev Tools** button in the Session Replay view. + +**Note:** Dev Tools are only available for sessions that have been retained. + +### Available tabs + +| Tab | Description | +|-----|-------------| +| **Console** | Displays logs collected during the session. Errors are highlighted in red. Filter by severity (Error, Warn, Info, Debug) and click **View in Log Explorer** to search logs in a separate tab. | +| **Errors** | Shows [RUM errors][13] linked to the session and surfaces which errors are connected to larger issues affecting multiple users through [Error Tracking][11]. | +| **Performance** | Displays a waterfall of events (actions, errors, resources, long tasks) with timestamps. Filter by action name or resource type and adjust the time range using the sliders. For browser sessions, this also includes Core Web Vitals. | +| **Network** | Shows a waterfall view of network events. Filter by resource type or error type to identify long-running requests and bottlenecks. | +| **Attributes** | Displays all attributes related to the session, including [default attributes][14]. | + +### Trace issues from frontend to backend + +If [APM is integrated with RUM][12], frontend requests are connected to backend traces automatically in Dev Tools. When a trace is associated with a request, an APM icon appears next to it in the Network waterfall. Click the icon to open the trace view and visualize the end-to-end path of the request. + +### Identify CSP violations + +Console logs also surface Content Security Policy (CSP) violations. If a legitimate resource is being blocked, these logs help you identify which CSP policies need updating. ## Further Reading {{< partial name="whats-next/whats-next.html" >}} -[1]: https://github.com/DataDog/browser-sdk -[2]: https://www.rrweb.io/ -[3]: /real_user_monitoring/session_replay/browser/ -[4]: /real_user_monitoring/session_replay/mobile/ -[5]: https://docs.datadoghq.com/notebooks/ -[6]: https://docs.datadoghq.com/account_management/audit_trail/ -[7]: https://app.datadoghq.com/rum/replay/playlists/my-watch-history -[8]: /real_user_monitoring/session_replay/playlists \ No newline at end of file +[1]: /real_user_monitoring/ +[2]: /product_analytics/ +[3]: https://github.com/DataDog/browser-sdk +[4]: https://www.rrweb.io/ +[5]: /session_replay/browser/ +[6]: /session_replay/mobile/ +[7]: /session_replay/playlists +[8]: /notebooks/ +[9]: /account_management/audit_trail/ +[10]: /rum/replay/playlists/my-watch-history +[11]: /error_tracking/ +[12]: /real_user_monitoring/correlate_with_other_telemetry/apm/ +[13]: /real_user_monitoring/application_monitoring/browser/collecting_browser_errors/ +[14]: /real_user_monitoring/application_monitoring/browser/data_collected/#default-attributes \ No newline at end of file diff --git a/content/en/real_user_monitoring/session_replay/browser/_index.md b/content/en/session_replay/browser/_index.md similarity index 85% rename from content/en/real_user_monitoring/session_replay/browser/_index.md rename to content/en/session_replay/browser/_index.md index c1f95e4fdcf..bde4256d5df 100644 --- a/content/en/real_user_monitoring/session_replay/browser/_index.md +++ b/content/en/session_replay/browser/_index.md @@ -3,6 +3,8 @@ title: Browser Session Replay description: Learn about how to capture and visually replay your users' web browsing experience with Session Replay. aliases: - /real_user_monitoring/guide/session-replay-getting-started/ +- /real_user_monitoring/session_replay/browser/ +- /product_analytics/session_replay/browser further_reading: - link: 'https://www.datadoghq.com/blog/session-replay-datadog/' tag: 'Blog' @@ -16,6 +18,9 @@ further_reading: - link: '/real_user_monitoring/explorer' tag: 'Documentation' text: 'Visualize your RUM data in the Explorer' +- link: '/product_analytics/analytics_explorer' + tag: 'Documentation' + text: 'Visualize your Product Analytics data in the Analytics Explorer' - link: '/integrations/content_security_policy_logs' tag: 'Documentation' text: 'Detect and aggregate CSP violations with Datadog' @@ -33,7 +38,7 @@ The Session Replay recorder is part of the RUM Browser SDK. The recorder takes a Datadog then rebuilds the web page and re-applies the recorded events at the appropriate time in the replay view. -The Session Replay recorder supports all browsers supported by the RUM Browser SDK with the exception of IE11. For more information, see the [browser support table][3]. +The Session Replay recorder supports all browsers supported by the RUM Browser SDK. For more information, see the [browser support table][3]. To reduce Session Replay's network impact and ensure the Session Replay recorder has minimal overhead on your application's performance, Datadog compresses the data prior to sending it. Datadog also reduces the load on a browser's UI thread by delegating most of the CPU-intensive work (such as compression) to a dedicated web worker. The expected network bandwidth impact is less than 100kB/min. @@ -60,7 +65,7 @@ Learn more about [Session Replay for Mobile][8]. [1]: https://github.com/DataDog/browser-sdk [2]: https://www.rrweb.io/ [3]: https://github.com/DataDog/browser-sdk/blob/main/packages/rum/BROWSER_SUPPORT.md -[4]: /real_user_monitoring/session_replay/browser/setup_and_configuration -[5]: /real_user_monitoring/session_replay/browser/privacy_options -[7]: /real_user_monitoring/session_replay/browser/troubleshooting -[8]: /real_user_monitoring/session_replay/mobile/ +[4]: /session_replay/browser/setup_and_configuration +[5]: /session_replay/browser/privacy_options +[7]: /session_replay/browser/troubleshooting +[8]: /session_replay/mobile/ diff --git a/content/en/real_user_monitoring/session_replay/browser/privacy_options.md b/content/en/session_replay/browser/privacy_options.md similarity index 97% rename from content/en/real_user_monitoring/session_replay/browser/privacy_options.md rename to content/en/session_replay/browser/privacy_options.md index af2a98006f4..1b0cfd2746e 100644 --- a/content/en/real_user_monitoring/session_replay/browser/privacy_options.md +++ b/content/en/session_replay/browser/privacy_options.md @@ -3,8 +3,10 @@ title: Session Replay Browser Privacy Options description: Describes privacy controls available in Session Replay and how to set privacy options aliases: - /real_user_monitoring/session_replay/privacy_options +- /real_user_monitoring/session_replay/browser/privacy_options +- /product_analytics/session_replay/browser/privacy_options further_reading: - - link: '/real_user_monitoring/session_replay' + - link: '/session_replay/' tag: Documentation text: Session Replay - link: "https://www.datadoghq.com/blog/default-privacy-session-replay/" diff --git a/content/en/real_user_monitoring/session_replay/browser/setup_and_configuration.md b/content/en/session_replay/browser/setup_and_configuration.md similarity index 96% rename from content/en/real_user_monitoring/session_replay/browser/setup_and_configuration.md rename to content/en/session_replay/browser/setup_and_configuration.md index 4a76e91b5ae..d000fc56586 100644 --- a/content/en/real_user_monitoring/session_replay/browser/setup_and_configuration.md +++ b/content/en/session_replay/browser/setup_and_configuration.md @@ -1,6 +1,9 @@ --- title: Browser Session Replay Setup and Configuration description: Capture and visually replay your users' web browsing experience with Session Replay. +aliases: +- /real_user_monitoring/session_replay/browser/setup_and_configuration +- /product_analytics/session_replay/browser/setup_and_configuration further_reading: - link: 'https://www.datadoghq.com/blog/session-replay-datadog/' tag: 'Blog' @@ -166,5 +169,5 @@ See [Connect Session Replay to your third-party tools][6]. [2]: /real_user_monitoring/guide/sampling-browser-plans/ [3]: https://datadoghq.dev/browser-sdk/interfaces/_datadog_browser-rum.RumGlobal.html#startsessionreplayrecording [4]: https://datadoghq.dev/browser-sdk/interfaces/_datadog_browser-rum.RumGlobal.html#stopsessionreplayrecording -[5]: /real_user_monitoring/session_replay/browser/privacy_options +[5]: /session_replay/browser/privacy_options [6]: /real_user_monitoring/guide/connect-session-replay-to-your-third-party-tools diff --git a/content/en/real_user_monitoring/session_replay/browser/troubleshooting.md b/content/en/session_replay/browser/troubleshooting.md similarity index 96% rename from content/en/real_user_monitoring/session_replay/browser/troubleshooting.md rename to content/en/session_replay/browser/troubleshooting.md index fc8084c06c3..142525781c4 100644 --- a/content/en/real_user_monitoring/session_replay/browser/troubleshooting.md +++ b/content/en/session_replay/browser/troubleshooting.md @@ -3,11 +3,13 @@ title: Session Replay Browser Troubleshooting description: Learn how to troubleshoot issues with Session Replay. aliases: - /real_user_monitoring/session_replay/troubleshooting +- /real_user_monitoring/session_replay/browser/troubleshooting +- /product_analytics/session_replay/browser/troubleshooting further_reading: - link: 'https://github.com/DataDog/browser-sdk' tag: "Source Code" text: 'browser-sdk Source code' -- link: '/real_user_monitoring/session_replay' +- link: '/session_replay/' tag: 'Documentation' text: 'Learn about Session Replay' - link: '/integrations/content_security_policy_logs' diff --git a/content/en/product_analytics/session_replay/heatmaps.md b/content/en/session_replay/heatmaps.md similarity index 63% rename from content/en/product_analytics/session_replay/heatmaps.md rename to content/en/session_replay/heatmaps.md index bcd3bea491d..d35a1e5c755 100644 --- a/content/en/product_analytics/session_replay/heatmaps.md +++ b/content/en/session_replay/heatmaps.md @@ -1,48 +1,75 @@ --- title: Heatmaps -description: Heatmaps are a type of visualization that lets you see where users click on your website. +description: Heatmaps are a type of visualization showing where users click on your website. aliases: +- /real_user_monitoring/session_replay/heatmaps +- /real_user_monitoring/heatmaps +- /product_analytics/session_replay/heatmaps - /product_analytics/heatmaps further_reading: -- link: '/product_analytics/session_replay/browser/' +- link: '/session_replay/browser/' tag: 'Documentation' text: 'Session Replay for Browsers' -- link: '/product_analytics/session_replay/mobile/' +- link: '/session_replay/mobile/' tag: 'Documentation' text: 'Session Replay for Mobile' - link: 'https://www.datadoghq.com/blog/visualize-behavior-datadog-scrollmaps/' tag: 'Blog' - text: 'Visualize user interactions with your pages by using Scroll maps in Datadog Heatmaps' + text: 'Visualize user interactions with your pages by using Scrollmaps in Datadog Heatmaps' --- -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-landing.png" alt="Overview of the heatmaps page showing the Click map option." style="width:100%;">}} +{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-landing.png" alt="An overview of the heatmap functionality." style="width:100%;">}} -A heatmap (or heat map) is a visualization of your user's interactions overlaid on Session Replay data. Product Analytics has three different types of heatmaps: +A heatmap (or heat map) is a visualization of your user's interactions overlaid on Session Replay data. There are three different types of heatmaps: - **Click maps:** View user interactions (clicks) to understand how users engage with your page. -- **Top elements:** View a ranking of up to the top 10 most interacted-with elements on a given page. +- **Top Elements:** View a ranking of up to the top 10 most interacted-with elements on a given page. - **Scroll maps:** View how far users scroll down a page, including where the average fold of a page falls. The average fold is the lowest point on a page that a user can see on their device without scrolling. -Use heatmaps to review user interaction data and identify ways to improve your user experience. +Use heatmaps to review complex data at a glance and gain insights around optimizing your user experience. ## Prerequisites To get started with heatmaps: 1. Verify your SDK version: - - For Click maps, you must be on the latest version of the SDK (v4.40.0+). - - For Scroll maps, you must be on v4.50.0+. + - For Click maps, you must be on the latest version of the SDK (v4.40.0 or later). + - For Scroll maps, you must be on (v4.50.0 or later). 2. Enable [Session Replay][1]. -3. Set `trackUserInteractions: true` in the SDK initialization to enable action tracking (required for Click maps). +3. Set`trackUserInteractions: true` in the SDK initialization to enable action tracking (required for Clickmaps). ## Getting started -Navigate to [**Digital Experience > Product Analytics > Session Replay > Heatmaps**][2]. Select your application and view. +{{< tabs >}} +{{% tab "RUM" %}} -To the left of the timeframe selector, you can select the type of heatmap you would like to view: Top Elements, Click Map, or Scroll Map. +Navigate to [**Digital Experience > Real User Monitoring > Session Replay > Heatmaps**][1]. Select your application and view. + +On the [Real User Monitoring landing page][2], select your application from the application selector and view. To the left of the timeframe selector, you can select the type of heatmap you would like to view: Top elements, Click map, or Scroll map. + +{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-different-views.png" alt="The heatmaps page has multiple ways to show different views: by application, map type, device type, action name, and granular filters." style="width:100%;">}} + +[1]: https://app.datadoghq.com/rum/heatmap/ +[2]: https://app.datadoghq.com/rum/performance-monitoring + +{{% /tab %}} +{{% tab "Product Analytics" %}} + +Navigate to [**Digital Experience > Product Analytics > Session Replay > Heatmaps**][1]. Select your application and view. + +From this page, you can select the type of heatmap (Top elements, Click map, Scroll map) you would like to see for a particular view. {{< img src="product_analytics/heatmaps/pa-heatmaps-page.png" alt="For each view, you can select a different type of heatmap: Top Elements, Click Map, or Scroll Map." style="width:100%;">}} +Click on a view name for a more detailed look at the related heatmap. + +{{< img src="product_analytics/heatmaps/pa-heatmaps-annotated.png" alt="The heatmaps page has multiple ways to show different views: by application, map type, device type, action name, and granular filters." style="width:100%;">}} + +[1]: https://app.datadoghq.com/product-analytics/heatmap + +{{% /tab %}} +{{< /tabs >}} + You have the following additional view options: - To switch the view being shown, use the **View Name** and **Application** selectors at the top. @@ -50,8 +77,6 @@ You have the following additional view options: - To filter by action name, use the **Filter actions by** dropdown. - To add more granular filters, like a specific geography for example, click the **Add Filter** button. -{{< img src="product_analytics/heatmaps/pa-heatmaps-annotated.png" alt="The heatmaps page has multiple ways to show different views: by application, map type, device type, action name, and granular filters." style="width:100%;">}} - ## Top Elements Top Elements heatmaps aggregate click actions on a given view by displaying the elements that are most interacted with, in addition to their interaction rank. The ranking on the map itself corresponds to the action name on the side. @@ -64,7 +89,7 @@ Hover over any action name in the panel to highlight the corresponding action on A Click map shows you the actions most interacted with on a given view by aggregating user click actions from sessions and visualizing them as blobs on the map. -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-clickmaps.png" alt="Click map data overlayed on a website." style="width:100%;">}} +{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-clickmaps.png" alt="Clickmap data overlayed on a website." style="width:100%;">}} On the left is a list of all actions that occurred on the page, listed by frequency. When you click into an action, you can understand more about that interaction, for example: @@ -79,7 +104,7 @@ From this view, you can also click the **Start a Funnel** button to identify use Scroll maps display the aggregate scroll activity on a given page. Use Scroll maps to see where the average fold of the page falls, and how many users scroll to a given depth. You can drag the floating blue bar on a Scroll map to the depth you wish to assess. -{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-scrollmap.png" alt="Scroll map of a sample ecommerce page showing the average fold and scroll depth distribution." style="width:100%;">}} +{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-scrollmap.png" alt="Scrollmap of the bedding page in a sample ecommerce application" style="width:100%;">}} The panel to the left of the Scroll map provides high-level insights with direct links to query results, such as a link to a list of views where the user scrolled past a given percentile. Below the insight panel is a minimap of the page and a distribution graph displaying granular scroll data, useful for identifying where the biggest drop-off occurs. @@ -117,29 +142,38 @@ To remove the currently saved screenshot and revert to an auto-picked one from a {{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-unpin-screenshot-1.png" alt="Click unpin to remove the currently pinned screenshot." style="width:100%;">}} +## Data retention + +The time periods you can view in a heatmap depend on where you access it: + +- **RUM**: Session Replay heatmaps use RUM click data (RUM action events), which has a 30-day retention period. +- **Product Analytics**: Heatmaps use Product Analytics click data, which has a 15-month retention period. + ## Next steps -After you analyze heatmaps, explore related data to understand why users behave that way. Pivot to the [Analytics explorer][3] or watch associated [session replays][1] to visually see user actions in the context of their overall session. +After analyzing heatmaps, the next step is to understand the user action by exploring related data. Watch associated [session replays][1] to see user actions in the context of their overall session, or navigate to an Analytics explorer in [RUM][3] or [Product Analytics][4] to analyze your user data. ## Troubleshooting ### I am looking at a heatmap for a given view, but it's showing me an unexpected page. -Heatmaps are based on Product Analytics view names. Depending on how your Product Analytics application is configured, many pages may be grouped under the same view name, or you may have very specific view names. +Heatmaps are based on view names. Depending on how your application is configured, many pages can start being grouped under the same view name, or you can start having specific view names. ### The view that I selected is not showing the initial content. -Heatmaps are generated with Session Replay data. Datadog automatically selects a replay that is both recent and closely matches the initial state of the page. In some cases, you might want to see the heatmap for a different view state. To switch the screenshot of your heatmap, click **Change Screenshot**, then **Grab from replay** to navigate through the different states of a replay and find the one you are looking for. If the replay you're viewing does not have the screenshot you're looking for, you can use the **Choose Another Replay** button to select another replay of the same view. +Heatmaps are generated with Session Replay data. Datadog's intelligent algorithm picks a replay that is both recent and best matches the initial state of the page. In some cases, this replay might not be the one you want to use. To switch the snapshot of your heatmap, use the **Change Snapshot** button to navigate through the different states of a replay and find the one you want. If the replay you're viewing does not have the snapshot you're looking for, you can use the **Choose Another Replay** button to select another replay of the same view. + +{{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-change-the-snapshot.mp4" alt="Select a different background by clicking the Change Snapshot button" video=true >}} ### On the action list on the side of my heatmap, I see an icon showing an element that is not visible in the heatmap. -The tooltip on the icon says element is not visible. This means that the element is a common action on your page, but it's not displayed on the screenshot in the heatmap. To see that element, you can click **Change Screenshot** in the top right corner to switch the screenshot of your heatmap to one where that element is present. +The tooltip on the icon says element is not visible. This means that the element is a common action on your page, but it's not displayed on the snapshot in the heatmap. To see that element, you can click **Change Snapshot** in the top right corner to switch the snapshot of your heatmap to one where that element is present. {{< img src="real_user_monitoring/session_replay/heatmaps/heatmaps-hidden-elements.png" alt="Hidden elements in the action list on a heatmap." style="width:100%;">}} ### After attempting to create a heatmap, I see a "No Replay Data" state appear. -This means that Datadog could not find any Session Replays to use as a heatmap background that matches the current search filters. If you just started to record sessions with the [Browser SDK][4], it may also take a few minutes for the Session Replay to be available for viewing. +The "No Replay Data" state means that Datadog could not find any Session Replays to use as a heatmap background that matches the current search filters. If you just started to record sessions with the [Browser SDK][2], it may also take a few minutes for the Session Replay to be available for viewing. ### After attempting to create a heatmap, I see a "Not enough data to generate a heatmap" state appear. @@ -150,12 +184,12 @@ This means that Datadog was not able to match any user actions with the current ### All of the user information on the page is empty. -User information is not collected by default. Heatmaps use the user information available in your session data to display relevant insights on behavior. To populate user information, configure user attributes in your SDK implementation. +User information is not collected by default. Heatmaps use the user information available in your session data to display relevant insights on behavior. ## Further reading {{< partial name="whats-next/whats-next.html" >}} -[1]: /product_analytics/session_replay/browser/ -[2]: https://app.datadoghq.com/product-analytics/heatmap -[3]: /product_analytics/analytics_explorer/ -[4]: https://github.com/DataDog/browser-sdk/blob/main/packages/rum/package.json +[1]: /session_replay/ +[2]: https://github.com/DataDog/browser-sdk/blob/main/packages/rum/package.json +[3]: /real_user_monitoring/explorer/ +[4]: /product_analytics/charts/analytics_explorer/ diff --git a/content/en/real_user_monitoring/session_replay/mobile/_index.md b/content/en/session_replay/mobile/_index.md similarity index 94% rename from content/en/real_user_monitoring/session_replay/mobile/_index.md rename to content/en/session_replay/mobile/_index.md index 4f03e23e341..6cc914d75ac 100644 --- a/content/en/real_user_monitoring/session_replay/mobile/_index.md +++ b/content/en/session_replay/mobile/_index.md @@ -2,10 +2,12 @@ title: Mobile Session Replay description: Setting up Session Replay for mobile devices. aliases: + - /real_user_monitoring/session_replay/mobile/ + - /product_analytics/session_replay/mobile/ further_reading: - - link: '/real_user_monitoring/session_replay' - tag: Documentation - text: Session Replay + - link: '/session_replay' + tag: Documentation + text: Session Replay --- ## Overview @@ -100,8 +102,8 @@ Learn how to [troubleshoot Mobile Session Replay][5]. {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/browser/#how-it-works -[2]: /real_user_monitoring/session_replay/mobile/setup_and_configuration -[3]: /real_user_monitoring/session_replay/mobile/privacy_options -[4]: /real_user_monitoring/session_replay/mobile/app_performance -[5]: /real_user_monitoring/session_replay/mobile/troubleshooting +[1]: /session_replay/browser/#how-it-works +[2]: /session_replay/mobile/setup_and_configuration +[3]: /session_replay/mobile/privacy_options +[4]: /session_replay/mobile/app_performance +[5]: /session_replay/mobile/troubleshooting \ No newline at end of file diff --git a/content/en/real_user_monitoring/session_replay/mobile/app_performance.md b/content/en/session_replay/mobile/app_performance.md similarity index 80% rename from content/en/real_user_monitoring/session_replay/mobile/app_performance.md rename to content/en/session_replay/mobile/app_performance.md index f4dc68f4d39..6d062b5cbf1 100644 --- a/content/en/real_user_monitoring/session_replay/mobile/app_performance.md +++ b/content/en/session_replay/mobile/app_performance.md @@ -2,22 +2,24 @@ title: How Mobile Session Replay Impacts App Performance description: Performance benchmarking for Mobile Session Replay. aliases: + - /real_user_monitoring/session_replay/mobile/app_performance + - /product_analytics/session_replay/mobile/app_performance further_reading: - - link: '/real_user_monitoring/session_replay/mobile' - tag: Documentation - text: Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/privacy_options' - tag: Documentation - text: Mobile Session Replay Privacy Options - - link: '/real_user_monitoring/session_replay/mobile/setup_and_configuration' - tag: Documentation - text: Setup and Configure Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/troubleshooting' - tag: Documentation - text: Troubleshoot Mobile Session Replay - - link: '/real_user_monitoring/session_replay' - tag: Documentation - text: Session Replay + - link: '/session_replay/mobile' + tag: Documentation + text: Mobile Session Replay + - link: '/session_replay/mobile/privacy_options' + tag: Documentation + text: Mobile Session Replay Privacy Options + - link: '/session_replay/mobile/setup_and_configuration' + tag: Documentation + text: Setup and Configure Mobile Session Replay + - link: '/session_replay/mobile/troubleshooting' + tag: Documentation + text: Troubleshoot Mobile Session Replay + - link: '/session_replay' + tag: Documentation + text: Session Replay --- ## Overview diff --git a/content/en/session_replay/mobile/privacy_options.md b/content/en/session_replay/mobile/privacy_options.md new file mode 100644 index 00000000000..d15dfa85a42 --- /dev/null +++ b/content/en/session_replay/mobile/privacy_options.md @@ -0,0 +1,3320 @@ +--- +title: Mobile Session Replay Privacy Options +description: Configure privacy options for Mobile Session Replay. +aliases: + - /real_user_monitoring/session_replay/mobile/privacy_options + - /product_analytics/session_replay/mobile/privacy_options +further_reading: + - link: /session_replay/mobile + tag: Documentation + text: Mobile Session Replay + - link: /session_replay/mobile/app_performance + tag: Documentation + text: How Mobile Session Replay Impacts App Performance + - link: /session_replay/mobile/setup_and_configuration + tag: Documentation + text: Setup and Configure Mobile Session Replay + - link: /session_replay/mobile/troubleshooting + tag: Documentation + text: Troubleshoot Mobile Session Replay + - link: /session_replay + tag: Documentation + text: Session Replay +--- +

SDK


+

Overview

+

+ Session Replay provides privacy controls to ensure organizations of any + scale do not expose sensitive or personal data. Data is stored on + Datadog-managed cloud instances and encrypted at rest. +

+

+ Default privacy options for Session Replay protect end user privacy and + prevent sensitive organizational information from being collected. +

+

+ By enabling Mobile Session Replay, you can automatically mask sensitive + elements from being recorded through the RUM Mobile SDK. When data is + masked, that data is not collected in its original form by Datadog's SDKs + and thus is not sent to the backend. +

+

Fine-grained masking

+

+ Using the masking modes below, you can override the default setup on a + per-application basis. Masking is fine-grained, which means you can override + masking for text and inputs, images, and touches individually to create a + custom configuration that suits your needs. +

+

Text and input masking

+

+ By default, the mask_all setting is enabled for all data. With + this setting enabled, all text and input content on screen is masked, as + shown below. +

+
+
+ What your application screen may resemble when `mask` is enabled. +
+

Mask sensitive inputs

+

+ With the mask_sensitive_inputs setting enabled, all text and + inputs are shown except those considered sensitive (passwords, emails, and + phone numbers). +

+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: .maskSensitiveInputs,
+  imagePrivacyLevel: imagePrivacyLevel,
+  touchPrivacyLevel: touchPrivacyLevel
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  TextAndInputPrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        textAndInputPrivacyLevel: TextAndInputPrivacyLevel.maskSensitiveInputs,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Mask all inputs

+

+ With the mask_all_inputs setting enabled, all inputs fields are + masked in the replay. +

+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+.setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL_INPUTS)
+.build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: .maskAllInputs,
+  imagePrivacyLevel: imagePrivacyLevel,
+  touchPrivacyLevel: touchPrivacyLevel
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  TextAndInputPrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL_INPUTS,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        textAndInputPrivacyLevel: TextAndInputPrivacyLevel.maskAllInputs,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Mask all

+

+ With the mask_all setting enabled, all text and input fields + are masked in the replay. +

+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_ALL)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: .maskAll,
+  imagePrivacyLevel: imagePrivacyLevel,
+  touchPrivacyLevel: touchPrivacyLevel
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  TextAndInputPrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: TextAndInputPrivacyLevel.MASK_ALL,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        textAndInputPrivacyLevel: TextAndInputPrivacyLevel.maskAll,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Image masking

+

+ By default, the mask_all setting is enabled for all images. + With this setting enabled, all images on screen are masked. +

+
+

+ For performance reasons, large images (those exceeding 1000x1000 total + pixels) are masked in Flutter, and will display "Large Image" in + the Session Replay player. +

+
+

Mask all images

+

+ With the mask_all setting enabled, all images are replaced by + placeholders labeled 'Image' in the replay. +

+
+
+ What your application screen may resemble when `mask-all` is enabled. +
+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setImagePrivacy(ImagePrivacy.MASK_ALL)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: textAndInputPrivacyLevel,
+  imagePrivacyLevel: .maskAll,
+  touchPrivacyLevel: touchPrivacyLevel
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  ImagePrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  imagePrivacyLevel: ImagePrivacyLevel.MASK_ALL,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        imagePrivacyLevel: ImagePrivacyLevel.maskAll,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Mask content images

+

+ You can manage content masking while still allowing system or bundled images + to be visible. +

+
+

+ Use the maskNonBundledOnly setting to replace non-bundled + images with a "Content Image" placeholder in the replay. +

+
    +
  • + In UIKit, the SDK can determine whether an image is bundled and can mask + it accordingly. +
  • +
  • + In SwiftUI, this determination isn't possible. Instead, the SDK uses a + heuristic: if an image exceeds 100×100 points, it is assumed to be + non-bundled and is masked. +
  • +
+
+
+

+ Select the mask_large_only setting, which replaces images + with dimensions that exceed 100x100dp with a "Content Image" + placeholder. +

+

+ Note: These dimensions refer to the drawable resource, + not the view's size. +

+
+
+
+
+ What your application screen may resemble when `mask_large_only` is enabled on Android. +
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+ What your application screen may resemble when `mask_non_bundled_only` is enabled on iOS. +
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: textAndInputPrivacyLevel,
+  imagePrivacyLevel: .maskNonBundledOnly,
+  touchPrivacyLevel: touchPrivacyLevel
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  ImagePrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  imagePrivacyLevel: ImagePrivacyLevel.MASK_NON_BUNDLED_ONLY,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+
+

+ Bundled images are those that use AssetImage as their image + provider. +

+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        imagePrivacyLevel: ImagePrivacyLevel.maskNonAssetsOnly,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Show all images

+

+ With the mask_none setting enabled, all images are shown in the + replay. +

+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setImagePrivacy(ImagePrivacy.MASK_NONE)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: textAndInputPrivacyLevel,
+  imagePrivacyLevel: .maskNone,
+  touchPrivacyLevel: touchPrivacyLevel
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  ImagePrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  imagePrivacyLevel: ImagePrivacyLevel.MASK_NONE,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+

Touch masking

+

+ By default, the hide setting is enabled for all touches. With + this setting enabled, all touches on screen are hidden. +

+

Hide all touches

+

+ With the hide setting enabled, all touches that occur during + the replay are hidden. This is the default setting. +

+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setTouchPrivacy(TouchPrivacy.HIDE)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: textAndInputPrivacyLevel,
+  imagePrivacyLevel: imagePrivacyLevel,
+  touchPrivacyLevel: .hide
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  TouchPrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  touchPrivacyLevel: TouchPrivacyLevel.HIDE,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        imagePrivacyLevel: ImagePrivacyLevel.maskNone,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Show all touches

+

+ With the show setting enabled, all touches that occur during + the replay are shown. +

+
+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
val sessionReplayConfig = SessionReplayConfiguration.Builder([sampleRate])
+  .setTouchPrivacy(TouchPrivacy.SHOW)
+  .build()
+SessionReplay.enable(sessionReplayConfig)
+
+
+
+
+
+
+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
let sessionReplayConfig = SessionReplay.Configuration(
+  replaySampleRate: sampleRate,
+  textAndInputPrivacyLevel: textAndInputPrivacyLevel,
+  imagePrivacyLevel: imagePrivacyLevel,
+  touchPrivacyLevel: .show
+)
+SessionReplay.enable(with: sessionReplayConfig)
+
+
+
+
+
+
+
+
+

App.tsx

+
+
+
+
+
+
+
+ +
+
+
import {
+  SessionReplay,
+  SessionReplayConfiguration,
+  TouchPrivacyLevel,
+} from "@datadog/mobile-react-native-session-replay";
+
+const config: SessionReplayConfiguration = {
+  replaySampleRate: sampleRate,
+  touchPrivacyLevel: TouchPrivacyLevel.SHOW,
+}
+
+SessionReplay.enable(config)
+
+
+
+
+
+

+ Bundled images are those that use AssetImage as their image + provider. +

+
+
+
+
+
+
+
+
+
+
+ +
+
+
final configuration = DatadogConfiguration(
+    // ...
+)..enableSessionReplay(
+    DatadogSessionReplayConfiguration(
+        touchPrivacyLevel: TouchPrivacyLevel.show,
+        replaySampleRate: replay,
+    ),
+);
+
+
+
+
+
+
+

Privacy overrides

+

+ The sections above describe the global masking levels that apply to the + entire application. However, it is also possible to override these settings + at the view level. The same privacy levels as above are available for text + and inputs, images, touches, and an additional setting to completely hide a + specific view. +

+

+ To ensure overrides are recognized properly, they should be applied as early + as possible in the view lifecycle. This prevents scenarios where Session + Replay might process a view before applying the overrides. +

+

+ Privacy overrides affect views and their descendants. This means that even + if an override is applied to a view where it might have no immediate effect + (for example, applying an image override to a text input), the override + still applies to all child views. +

+

+ Overrides operate using a "nearest parent" principle: if a view + has an override, it uses that setting. Otherwise, it inherits the privacy + level from the closest parent in the hierarchy with an override. If no + parent has an override, the view defaults to the application's general + masking level. +

+
+

Text and input override

+
+

+ To override text and input privacy in Android classic view, use + setSessionReplayTextAndInputPrivacy on a view instance and + pass a value from the TextAndInputPrivacy enum. Passing + null removes the override. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Set a text and input override on your view
+myView.setSessionReplayTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
+// Remove a text and input override from your view
+myView.setSessionReplayTextAndInputPrivacy(null)
+
+
+
+
+

+ To override text and input privacy in Jetpack Compose, use + Modifier.sessionReplayTextAndInputPrivacy on the modifier + of a composable and pass a value from the + TextAndInputPrivacy enum. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Set a text and input override on your view
+Text(modifier = Modifier
+    .padding(16.dp)
+    .sessionReplayTextAndInputPrivacy(textAndInputPrivacy = TextAndInputPrivacy.MASK_SENSITIVE_INPUTS),
+  text = "Datadog"
+)
+
+
+
+
+
+
+

+ To override text and input privacy in UIKit views, use + dd.sessionReplayOverrides.textAndInputPrivacy on a view + instance and set a value from the + TextAndInputPrivacyLevel enum. Setting it to + nil removes the override. +

+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
// Set a text and input override on your view
+myView.dd.sessionReplayOverrides.textAndInputPrivacy = .maskSensitiveInputs
+// Remove a text and input override from your view
+myView.dd.sessionReplayOverrides.textAndInputPrivacy = nil
+
+
+
+
+

+ To override text and input privacy in SwiftUI, wrap your content with + SessionReplayPrivacyView and configure the + textAndInputPrivacy parameter. You can combine this with + other privacy settings in the same view for better performance. +

+
+
+

ContentView.swift

+
+
+
+
+
+
+
+ +
+
+
struct ContentView: View {
+    @State private var username = ""
+    @State private var password = ""
+
+    var body: some View {
+        // Set a text and input override on your SwiftUI content
+        SessionReplayPrivacyView(textAndInputPrivacy: .maskAllInputs) {
+            VStack {
+                Text("User Profile")
+                TextField("Enter name", text: $username)
+                SecureField("Password", text: $password)
+            }
+        }
+    }
+}
+
+
+
+
+
+
+

+ To override text and input privacy in Flutter, use the + SessionReplayPrivacy widget to override the privacy + settings for an entire widget tree. Setting any value to + null keeps the privacy values unchanged from values + provided higher up the widget tree. +

+
+
+
+
+
+
+
+
+
+ +
+
+
class MyWidget: StatelessWidget {
+  Widget build() {
+    return SessionReplayPrivacy(
+      textAndInputPrivacyLevel: TextAndInputPrivacyLevel.maskAllInputs,
+      child: TextField(
+        decoration: InputDecoration(
+          labelText: 'Simple Text Field',
+        ),
+      ),
+    );
+  }
+}
+
+
+
+
+
+

Image override

+
+

+ To override image privacy in Android classic view, use + setSessionReplayImagePrivacy on a view instance and pass a + value from the ImagePrivacy enum. Passing + null removes the override. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Set an image override on your view
+myView.setSessionReplayImagePrivacy(ImagePrivacy.MASK_ALL)
+// Remove an image override from your view
+myView.setSessionReplayImagePrivacy(null)
+
+
+
+
+

+ To override image privacy in Jetpack Compose, use + Modifier.sessionReplayImagePrivacy on the modifier of a + composable and pass a value from the ImagePrivacy enum. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Set a image privacy override on your image
+Image(modifier = Modifier
+  .padding(16.dp)
+  .sessionReplayImagePrivacy(imagePrivacy = ImagePrivacy.MASK_ALL),
+  painter = painterResource(id = R.drawable.ic_datadog),
+  contentDescription = null
+)
+
+
+
+
+
+
+

+ To override image privacy in UIKit views, use + dd.sessionReplayOverrides.imagePrivacy on a view instance + and set a value from the ImagePrivacyLevel enum. Setting it + to nil removes the override. +

+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
// Set an image override on your view
+myView.dd.sessionReplayOverrides.imagePrivacy = .maskAll
+// Remove an image override from your view
+myView.dd.sessionReplayOverrides.imagePrivacy = nil
+
+
+
+
+

+ To override image privacy in SwiftUI, wrap your content with + SessionReplayPrivacyView and configure the + imagePrivacy parameter. +

+
+
+

ContentView.swift

+
+
+
+
+
+
+
+ +
+
+
struct ProfileView: View {
+    let profileImageURL = URL(string: "https://example.com/profile.jpg")
+
+    var body: some View {
+        // Set an image privacy override on your SwiftUI content
+        SessionReplayPrivacyView(imagePrivacy: .maskAll) {
+            VStack {
+                Image("userAvatar")
+                    .resizable()
+                    .frame(width: 60, height: 60)
+                    .clipShape(Circle())
+
+                AsyncImage(url: profileImageURL) { image in
+                    image.resizable()
+                } placeholder: {
+                    ProgressView()
+                }
+                .frame(width: 100, height: 100)
+            }
+        }
+    }
+}
+
+
+
+
+
+
+

+ To override image privacy in Flutter, use the + SessionReplayPrivacy widget to override the privacy + settings for an entire widget tree. Setting any value to + null keeps the privacy values unchanged from values + provided higher up the widget tree. +

+
+
+
+
+
+
+
+
+
+ +
+
+
class MyWidget: StatelessWidget {
+  Widget build() {
+    return SessionReplayPrivacy(
+      imagePrivacyLevel: ImagePrivacyLevel.maskAll,
+      child: Image.asset('assets/my_image.png'),
+    );
+  }
+}
+
+
+
+
+
+

Touch override

+
+

+ To override touch privacy in Android classic view, use + setSessionReplayTouchPrivacy on a view instance and pass a + value from the TouchPrivacy enum. Passing + null removes the override. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Set a touch override on your view
+view.setSessionReplayTouchPrivacy(TouchPrivacy.HIDE)
+// Remove a touch override from your view
+view.setSessionReplayTouchPrivacy(null)
+
+
+
+
+

+ To override touch privacy in Jetpack Compose, use + Modifier.sessionReplayTouchPrivacy on the modifier of a + composable and pass a value from the TouchPrivacy enum. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Set a touch privacy override on your view
+Column(modifier = Modifier
+  .padding(16.dp)
+  .sessionReplayTouchPrivacy(touchPrivacy = TouchPrivacy.HIDE)){
+  // Content
+}
+
+
+
+
+
+
+

+ To override touch privacy in UIKit views, use + dd.sessionReplayOverrides.touchPrivacy on a view instance + and set a value from the TouchPrivacyLevel enum. Setting it + to nil removes the override. +

+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
// Set a touch override on your view
+myView.dd.sessionReplayOverrides.touchPrivacy = .hide
+// Remove a touch override from your view
+myView.dd.sessionReplayOverrides.touchPrivacy = nil
+
+
+
+
+

+ To override touch privacy in SwiftUI, wrap your content with + SessionReplayPrivacyView and configure the + touchPrivacy parameter. +

+
+
+

ContentView.swift

+
+
+
+
+
+
+
+ +
+
+
struct SettingsView: View {
+    @State private var sliderValue = 0.5
+
+    var body: some View {
+        // Set a touch privacy override on your SwiftUI content
+        SessionReplayPrivacyView(touchPrivacy: .hide) {
+            VStack(spacing: 20) {
+                Button("Some Action") {
+                    // Handle action
+                }
+                .padding()
+                .background(Color.blue)
+                .foregroundColor(.white)
+                .cornerRadius(8)
+
+                Slider(value: $sliderValue, in: 0...1) {
+                    Text("Some Value")
+                }
+            }
+            .padding()
+        }
+    }
+}
+
+
+
+
+
+
+

+ To override touch privacy in Flutter, use the + SessionReplayPrivacy widget to override the privacy + settings for an entire widget tree. Setting any value to + null keeps the privacy values unchanged from values + provided higher up the widget tree. +

+

+ Enabling touch privacy affects the entire widget tree, and cannot be + toggled back to "show" in children. +

+
+
+
+
+
+
+
+
+
+ +
+
+
class MyWidget: StatelessWidget {
+  Widget build() {
+    return SessionReplayPrivacy(
+      touchPrivacyLevel: TouchPrivacyLevel.hide,
+      child: PinPadWidget(),
+    );
+  }
+}
+
+
+
+
+
+

Hidden elements override

+

+ For sensitive elements that need to be completely hidden, use the + hidden setting. +

+

+ When an element is hidden, it is replaced by a placeholder + labeled as "Hidden" in the replay, and its subviews are not + recorded. +

+

+ Note: Marking a view as hidden does not + prevent touch interactions from being recorded on that element. To hide + touch interactions as well, use the + touch override in addition to marking the + element as hidden. +

+
+

+ Use setSessionReplayHidden(hide = true) to hide the + element. Setting hide to false removes the + override. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Mark a view as hidden
+myView.setSessionReplayHidden(hide = true)
+// Remove the override from the view
+myView.setSessionReplayHidden(hide = false)
+
+
+
+
+

+ Use Modifier.sessionReplayHide to hide the element in + Jetpack Compose. +

+
+
+

application.kt

+
+
+
+
+
+
+
+ +
+
+
// Mark a Column as hidden
+Column(modifier = Modifier
+  .padding(16.dp)
+  .sessionReplayHide(hide = true)){
+  // Content
+}
+
+
+
+
+
+
+

+ In UIKit views, use dd.sessionReplayOverrides.hide to hide + the element: +

+
+
+

AppDelegate.swift

+
+
+
+
+
+
+
+ +
+
+
// Mark a view as hidden
+myView.dd.sessionReplayOverrides.hide = true
+// Remove the override from the view
+myView.dd.sessionReplayOverrides.hide = false
+
+
+
+
+

+ In SwiftUI, wrap your content with + SessionReplayPrivacyView and set the + hide parameter to true: +

+
+
+

ContentView.swift

+
+
+
+
+
+
+
+ +
+
+
struct PaymentView: View {
+    @State private var cardNumber = ""
+    @State private var cvv = ""
+
+    var body: some View {
+        // Mark SwiftUI content as hidden
+        SessionReplayPrivacyView(hide: true) {
+            VStack(spacing: 16) {
+                Text("Payment Information")
+                    .font(.headline)
+
+                TextField("Card Number", text: $cardNumber)
+                    .textFieldStyle(RoundedBorderTextFieldStyle())
+
+                SecureField("CVV", text: $cvv)
+                    .textFieldStyle(RoundedBorderTextFieldStyle())
+
+                Text("Card ending in 1234")
+                    .foregroundColor(.secondary)
+            }
+            .padding()
+        }
+    }
+}
+
+
+
+
+

+ Note: Setting the hidden override to + nil or false has the same effect—it disables + the override. +

+

+ Combining privacy settings in SwiftUI +

+

+ Combine multiple privacy settings in one + SessionReplayPrivacyView for different configurations. + Datadog recommends + combining options in a single view rather than nesting multiple + instances + to avoid adding unnecessary view layers. +

+
+
+

ContentView.swift

+
+
+
+
+
+
+
+ +
+
+
struct UserProfileView: View {
+    @State private var userBio = ""
+    @State private var cardNumber = ""
+
+    var body: some View {
+        VStack(spacing: 30) {
+            // Preferred: Combine multiple privacy settings in one view
+            SessionReplayPrivacyView(
+                textAndInputPrivacy: .maskSensitiveInputs,
+                imagePrivacy: .maskNonBundledOnly,
+                touchPrivacy: .show
+            ) {
+                VStack(spacing: 20) {
+                    // User profile section
+                    HStack {
+                        AsyncImage(url: URL(string: "https://example.com/profile.jpg")) { image in
+                            image.resizable()
+                        } placeholder: {
+                            Circle().fill(Color.gray.opacity(0.3))
+                        }
+                        .frame(width: 60, height: 60)
+                        .clipShape(Circle())
+
+                        VStack(alignment: .leading) {
+                            Text("John Doe")
+                                .font(.headline)
+                            TextField("Enter bio", text: $userBio)
+                                .textFieldStyle(RoundedBorderTextFieldStyle())
+                        }
+                    }
+
+                    Button("Save Profile") {
+                        // Save action
+                        print("Profile saved")
+                    }
+                    .padding()
+                    .background(Color.blue)
+                    .foregroundColor(.white)
+                    .cornerRadius(8)
+                }
+                .padding()
+            }
+
+            // For completely different privacy requirements, use separate `SessionReplayPrivacyView` instances
+            SessionReplayPrivacyView(hide: true) {
+                VStack(spacing: 16) {
+                    Text("Credit Card Information")
+                        .font(.headline)
+                    TextField("Card Number", text: $cardNumber)
+                        .textFieldStyle(RoundedBorderTextFieldStyle())
+                }
+                .padding()
+                .background(Color.gray.opacity(0.1))
+                .cornerRadius(8)
+            }
+        }
+        .padding()
+    }
+}
+
+
+
+
+

+ Note: Each + SessionReplayPrivacyView introduces an additional native + view layer. For optimal performance, prefer combining privacy settings + instead of nesting multiple privacy views when possible. +

+
+
+

+ To hide a widget tree in Flutter, use the + SessionReplayPrivacy widget to override the privacy + settings for an entire widget tree. +

+

+ Hiding a widget tree affects the entire widget tree, and cannot be + toggled back to false in children, as Session Replay stops + processing widget trees that are marked with hide. +

+
+
+
+
+
+
+
+
+
+ +
+
+
class MyWidget: StatelessWidget {
+  Widget build() {
+    return SessionReplayPrivacy(
+      hide: true,
+      child: PinPadWidget(),
+    );
+  }
+}
+
+
+
+
+
+
+
+

+ Privacy overrides are fully supported in React Native starting from + version 2.8.0 of the Datadog + React Native SDK. Although the underlying functionality is shared with native Android and + iOS platforms, the integration in React Native is designed to align with + common React patterns. +

+

Behavior consistency

+

+ React Native's implementation is built on the same foundation as the + native Android and iOS SDKs. As a result, you can rely on the privacy + features behaving the same way across all three platforms. +

+

Usage with SessionReplayView

+

+ The SDK provides a set of React components under the + SessionReplayView namespace, which are used to configure + privacy settings within your React Native application. +

+

To use them, import SessionReplayView as follows:

+
+
+

App.tsx

+
+
+
+ +
+
+
import { SessionReplayView } from "@datadog/mobile-react-native-session-replay";
+
+
+
+
+

This import provides access to four privacy-focused components.

+

+ Each of these components behaves like a regular React Native View, meaning + they can be used anywhere you would typically use a View, with the + addition of privacy-related behavior. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ComponentDescriptionProperties
SessionReplayView.Privacy + Adds support for customizing text, image, and touch privacy settings + for its children. + + +
SessionReplayView.MaskAll + Applies the most restrictive privacy settings (MaskAll + or platform equivalent) to all children. + +
    +
  • showTouch?: boolean
  • +
+
SessionReplayView.MaskNone + Applies the least restrictive settings (MaskNone or + platform equivalent). All child components are visible. + (No additional properties)
SessionReplayView.HideCompletely hides all child components from session replay.(No additional properties)
+

Integration approaches

+

There are two ways to apply privacy overrides in React Native:

+
    +
  • + Wrap specific components with a privacy-focused + SessionReplayView to target only certain elements, or +
  • +
  • + Replace an entire <View> with a + SessionReplayView to apply privacy settings to a whole + section of your UI. +
  • +
+

+ This flexibility lets you control which parts of your app are masked or + visible in session replays. +

+
+ +
+
+

+ Use SessionReplayView components to wrap specific parts + of your UI where you want to override privacy settings. +

+

For example, going from:

+
+
+

App.tsx

+
+
+
+ +
+
+
const App = () => {
+  return (
+    <View>
+      {/* content */}
+      <TextInput placeholder="First Name" value="Data" />
+      <TextInput placeholder="Last Name" value="Dog" />
+      {/* content */}
+    </View>
+  );
+}
+
+
+
+
+

To:

+
+
+

App.tsx

+
+
+
+ +
+
+
const App = () => {
+  return (
+    <View>
+      {/* content */}
+      <SessionReplayView.MaskAll showTouch={true}>
+      <TextInput placeholder="First Name" value="Data" />
+      <TextInput placeholder="Last Name" value="Dog" />
+      </SessionReplayView.MaskAll>
+      {/* content */}
+    </View>
+  );
+}
+
+
+
+
+
+
+

+ Replace an existing <View> with a + SessionReplayView component directly. This is ideal + when a view already encapsulates the section of the UI that needs + modified privacy behavior. +

+

For example, instead of:

+
+
+

App.tsx

+
+
+
+ +
+
+
const App = () => {
+  return (
+    <View>
+      {/* content */}
+    </View>
+  );
+}
+
+
+
+
+

You can use:

+
+
+

App.tsx

+
+
+
+ +
+
+
const App = () => {
+  return (
+    <SessionReplayView.MaskNone>
+      {/* content */}
+    </SessionReplayView.MaskNone>
+  );
+}
+
+
+
+
+
+
+
+

Combining privacy components

+

+ You can freely combine the SessionReplayView components to + apply different privacy settings to distinct sections of your UI. This is + especially useful when you need a mix of hidden elements, masked input + fields, and visible content within the same screen. +

+

For example:

+
+
+

App.tsx

+
+
+
+ +
+
+
import { ImagePrivacyLevel, SessionReplayView, TextAndInputPrivacyLevel, TouchPrivacyLevel } from "@datadog/mobile-react-native-session-replay";
+
+const App = () => {
+  return (
+    <SessionReplayView.Privacy
+      textAndInputPrivacy={TextAndInputPrivacyLevel.MASK_SENSITIVE_INPUTS}
+      imagePrivacy={ImagePrivacyLevel.MASK_NONE}
+      touchPrivacy={TouchPrivacyLevel.SHOW}>
+      {/* content */}
+      <SessionReplayView.MaskAll showTouch={true}>
+        {/* content */}
+        <SessionReplayView.MaskNone>
+          {/* content */}
+        </SessionReplayView.MaskNone>
+        {/* content */}
+      </SessionReplayView.MaskAll>
+        {/* content */}
+      <SessionReplayView.Hide>
+        {/* content */}
+      </SessionReplayView.Hide>
+    </SessionReplayView.Privacy>
+  );
+}
+
+
+
+
+
+

Notes on WebViews

+ +

How and what data is masked

+

+ This section describes how the Datadog recorder handles masking based on + data type and how that data is defined. +

+

Text masking strategies

+

+ Depending on how you've configured your privacy settings, the type of text, + and sensitivity of data, Datadog's masking rules apply different strategies + to different types of text fields. +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Text masking strategyDescriptionExample
No maskThe text is revealed in the session replay + "Hello world" → + "Hello world" +
Space-preserving mask + Each visible character is replaced with a lowercase "x" + + "Hello world" → + "xxxxx xxxxx" +
Fixed-length mask + The entire text field is replaced with a constant of three asterisks + (***) + + "Hello world""***" +
+

+ With the above text strategies in mind, you have a few different options if + you want to override the default privacy rule of mask in your + configuration. +

+

+ The following chart shows how Datadog applies different text masking + strategies, using the rules you set up in your configuration, to the below + text types. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeAllow allMask allMask user input
Sensitive textFixed-length maskFixed-length maskFixed-length mask
Input and option textNo maskFixed-length maskFixed-length mask
Static textNo maskSpace-preserving maskNo mask
Hint textNo maskFixed-length maskNo mask
+

Text masking definitions

+

+ Find below a description of how Datadog's recorder treats each text type. +

+

Sensitive text

+

+ Sensitive text includes passwords, e-mails, and phone numbers marked in a + platform-specific way, and other forms of sensitivity in text available to + each platform. +

+
+

Sensitive text can be detected in:

+
    +
  • Edit Text
  • +
  • Address information
  • +
+
+
+

Sensitive text can be detected in:

+
    +
  • Text Field
  • +
  • Text View
  • +
  • Address information
  • +
  • Credit card numbers
  • +
  • One-time codes
  • +
+
+
+

Sensitive text can be detected in the following components.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ComponentPlatform(s)
Text FieldiOS
Text ViewiOS
Edit TextAndroid
Address informationiOS, Android
Credit card numbersiOS
One-time codesiOS
+
+ + + + + + + + + + + + +
TextInputType.nameTextInputType.phoneTextInputType.emailAddressTextInputType.streetAddressTextInputType.twitterTextInputType.visiblePassword
+

Input and option text

+

+ Input and option text is text entered by the user with a keyboard or other + text-input device, or a custom (non-generic) value in selection elements. +

+

This includes the below.

+
+
    +
  • + User-entered text in: +
      +
    • Text Field
    • +
    • Text View
    • +
    +
  • +
  • + User-selected options in: +
      +
    • Value Picker
    • +
    • Segment
    • +
    +
  • +
  • + Notable exclusions: +
      +
    • + Placeholder (hint) texts in Text Field and Text View (not entered by + the user) +
    • +
    • Non-editable texts in Text View
    • +
    • Month, day, and year labels in Date Picker (generic values)
    • +
    +
  • +
+
+
+
    +
  • + User-entered text in: +
      +
    • Edit Text
    • +
    +
  • +
  • + User-selected options in: +
      +
    • Value Picker
    • +
    • Drop Down List
    • +
    +
  • +
  • + Notable exclusions: +
      +
    • + Placeholder (hint) texts in Edit Text (not entered by the user) +
    • +
    • Month, day, and year labels in Date Picker (generic values)
    • +
    +
  • +
+
+
+
    +
  • + User-entered text in: +
      +
    • Text Field (iOS)
    • +
    • Text View (iOS)
    • +
    • Edit Text (Android)
    • +
    +
  • +
  • + User-selected options in: +
      +
    • Value Picker (iOS + Android)
    • +
    • Segment (iOS)
    • +
    • Drop Down List (Android)
    • +
    +
  • +
  • + Notable exclusions: +
      +
    • + Placeholder (hint) texts in Text Field, Text View and Edit Text (not + entered by the user) +
    • +
    • Non-editable texts in Text View (iOS).
    • +
    • Month, day, and year labels in Date Picker (generic values)
    • +
    +
  • +
+
+
+
    +
  • + User-entered text in EditableText, which is used in: +
      +
    • TextField
    • +
    • CupertinoTextField
    • +
    • many custom TextField implementations
    • +
    +
  • +
  • + Notable exclusions: +
      +
    • + Placeholder (hint) texts in Text Field and Text View (not entered by + the user) +
    • +
    • Text in Text Decorations (not entered by the user)
    • +
    • Month, day, and year labels in Date Picker (generic values)
    • +
    +
  • +
+
+

Static text

+

+ Static text is any text that is not directly entered by the user. This + includes the below. +

+

All texts in:

+
+
    +
  • Texts in non-editable Text View
  • +
  • Month, day, and year labels in the date and time picker
  • +
  • + Values updated in response to gesture interaction with input elements, + such as the current value of the Slider +
  • +
  • + Other controls, not considered as "user input elements", such + as Labels, Tab Bar, and Navigation Bar +
  • +
+
+
+
    +
  • Checkbox and Radio Button titles
  • +
  • Month, day, and year labels in the date and time picker
  • +
  • + Values updated in response to gesture interaction with input elements, + such as the current value of the Slider +
  • +
  • + Other controls, not considered as "user input elements", such + as Tabs +
  • +
+
+
+
    +
  • Checkbox and Radio Button titles (Android)
  • +
  • Texts in non-editable Text View (iOS)
  • +
  • Month, day and year labels in the date and time picker
  • +
  • + Values updated in response to gesture interaction with input elements, + such as the current value of the Slider +
  • +
  • + Other controls, not considered as "user input elements", such + as Labels, Tab Bar, and Navigation Bar (iOS), or Tabs (Android) +
  • +
+
+
+
    +
  • Checkbox and Radio Button titles
  • +
  • Month, day and year labels in the date and time picker
  • +
  • + Values updated in response to gesture interaction with input elements, + such as the current value of the Slider +
  • +
  • + Other controls, not considered as "user input elements", such + as Text, Tab Bar, and Bottom Navigation Bar +
  • +
+
+

Hint text

+

+ Hint text is static text in editable text elements or option selectors that + is displayed when no value is given. This includes: +

+
+
    +
  • Placeholders in Text Field
  • +
  • Placeholders in Text View
  • +
+
+
+
    +
  • Hints in Edit Text
  • +
  • Prompts in Drop Down lists
  • +
+
+
+
    +
  • Placeholders in Text Field (iOS), Text View (iOS)
  • +
  • Hints in Edit Text (Android)
  • +
  • Prompts in Drop Down lists (Android)
  • +
+
+
+
    +
  • InputDecoration elements in TextView
  • +
  • Placeholder text in CupertinoTextField
  • +
+
+

Appearance masking

+

+ The following chart shows how we apply different appearance masking + strategies, using the rules you set up in your configuration, to the below + text types. +

+ + + + + + + + + + + + + + + + + + + + + + + +
TypeAllow allMask allMask user input
Revealing attributes
Other attributes
+

Revealing attributes

+

+ Revealing attributes are attributes that can reveal or suggest the value of + input elements and can be used to infer a user's input or selection. +

+

This includes:

+
+

Shapes

+
    +
  • Background of selected option in Segment
  • +
  • Circle surrounding the selected date in a Date Picker
  • +
  • Thumb of a Slider
  • +
+

Text attributes

+
    +
  • The color of a label rendering the selected date in Date Picker
  • +
  • The position of the first and last option in Value Picker
  • +
+
+
+

Shapes

+
    +
  • Selection mark in Checkbox
  • +
  • Thumb of a Slider
  • +
+

Text attributes

+
    +
  • The position of the first and last option in Value Picker
  • +
+
+
+

Shapes

+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypePlatform(s)
Background of selected option in SegmentiOS
Circle surrounding the selected date in Date PickeriOS
Selection mark in CheckboxAndroid
Thumb of a SlideriOS, Android
+

Text attributes

+ + + + + + + + + + + + + + + + + +
TypePlatform(s)
+ The color of a label rendering the selected date in Date Picker + iOS
The position of the first and last option in Value PickeriOS, Android
+
+
+

Shapes

+
    +
  • Background of selected option in Segment
  • +
  • Circle surrounding the selected date in a Date Picker
  • +
  • Thumb of a Slider
  • +
+

Text attributes

+
    +
  • The color of a label rendering the selected date in Date Picker
  • +
  • The position of the first and last option in Value Picker
  • +
+
+

Touch interactions

+

+ The following chart shows how we apply different touch interaction + strategies, using the rules you set up in your configuration, to the below + text types. While any interaction that happens on an on-screen keyboard is + masked, interactions with other elements are not masked. +

+ + + + + + + + + + + + + + + + + + + + + + + +
TypeAllow allMask allMask user input
Other attributes
On-screen keyboard
+

Image masking

+

+ The following chart shows how we apply different image masking strategies: +

+ + + + + + + + + + + + + + + + + + + + + + + +
TypeMask None +
+ Mask Large Only +
+
+ Mask Non Bundled Only +
+
+ Mark Large Only (Android) / Mask Non Bundled Only (iOS) +
+
Mask All
Content ImageShownMaskedMasked
System ImageShownShownMasked
+

Further reading

+
+
+ +{{< img src="real_user_monitoring/session_replay/mobile/masking-mode-mask-all-2.png" style="display:none;" alt="" >}} +{{< img src="real_user_monitoring/session_replay/mobile/masking-image-mask-all.png" style="display:none;" alt="" >}} +{{< img src="real_user_monitoring/session_replay/mobile/masking-image-mask-large-only.png" style="display:none;" alt="" >}} +{{< img src="real_user_monitoring/session_replay/mobile/masking-image-mask-non-bundled-only.png" style="display:none;" alt="" >}} + diff --git a/content/en/session_replay/mobile/privacy_options.mdoc.md b/content/en/session_replay/mobile/privacy_options.mdoc.md new file mode 100644 index 00000000000..7d51c570498 --- /dev/null +++ b/content/en/session_replay/mobile/privacy_options.mdoc.md @@ -0,0 +1,30 @@ +--- +title: Mobile Session Replay Privacy Options +description: Configure privacy options for Mobile Session Replay. +aliases: + - /real_user_monitoring/session_replay/mobile/privacy_options + - /product_analytics/session_replay/mobile/privacy_options +content_filters: + - trait_id: platform + option_group_id: rum_sdk_platform_options_v2 + label: "SDK" +further_reading: + - link: '/session_replay/mobile' + tag: Documentation + text: Mobile Session Replay + - link: '/session_replay/mobile/app_performance' + tag: Documentation + text: How Mobile Session Replay Impacts App Performance + - link: '/session_replay/mobile/setup_and_configuration' + tag: Documentation + text: Setup and Configure Mobile Session Replay + - link: '/session_replay/mobile/troubleshooting' + tag: Documentation + text: Troubleshoot Mobile Session Replay + - link: '/session_replay' + tag: Documentation + text: Session Replay +--- + +{% partial file="real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md" /%} + diff --git a/content/en/real_user_monitoring/session_replay/mobile/setup_and_configuration.mdoc.md b/content/en/session_replay/mobile/setup_and_configuration.mdoc.md similarity index 71% rename from content/en/real_user_monitoring/session_replay/mobile/setup_and_configuration.mdoc.md rename to content/en/session_replay/mobile/setup_and_configuration.mdoc.md index 97a0a279499..d11be27a410 100644 --- a/content/en/real_user_monitoring/session_replay/mobile/setup_and_configuration.mdoc.md +++ b/content/en/session_replay/mobile/setup_and_configuration.mdoc.md @@ -6,19 +6,19 @@ content_filters: option_group_id: rum_session_replay_sdk_options label: "SDK" further_reading: - - link: '/real_user_monitoring/session_replay/mobile' + - link: '/session_replay/mobile/' tag: Documentation text: Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/app_performance' + - link: '/session_replay/mobile/app_performance' tag: Documentation text: How Mobile Session Replay Impacts App Performance - - link: '/real_user_monitoring/session_replay/mobile/privacy_options' + - link: '/session_replay/mobile/privacy_options' tag: Documentation text: Mobile Session Replay Privacy Options - - link: '/real_user_monitoring/session_replay/mobile/troubleshooting' + - link: '/session_replay/mobile/troubleshooting' tag: Documentation text: Troubleshoot Mobile Session Replay - - link: '/real_user_monitoring/session_replay' + - link: '/session_replay/' tag: Documentation text: Session Replay - link: '/real_user_monitoring/application_monitoring/android/web_view_tracking' diff --git a/content/en/real_user_monitoring/session_replay/mobile/troubleshooting.md b/content/en/session_replay/mobile/troubleshooting.md similarity index 89% rename from content/en/real_user_monitoring/session_replay/mobile/troubleshooting.md rename to content/en/session_replay/mobile/troubleshooting.md index 7d496c7e29e..a41cc5628b0 100644 --- a/content/en/real_user_monitoring/session_replay/mobile/troubleshooting.md +++ b/content/en/session_replay/mobile/troubleshooting.md @@ -3,19 +3,19 @@ title: Troubleshooting Mobile Session Replay description: How to troubleshoot Mobile Session Replay. aliases: further_reading: - - link: '/real_user_monitoring/session_replay/mobile' + - link: '/session_replay/mobile' tag: Documentation text: Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/setup_and_configuration' + - link: '/session_replay/mobile/setup_and_configuration' tag: Documentation text: Setup and Configure Mobile Session Replay - - link: '/real_user_monitoring/session_replay/mobile/app_performance' + - link: '/session_replay/mobile/app_performance' tag: Documentation text: How Mobile Session Replay Impacts App Performance - - link: '/real_user_monitoring/session_replay/mobile/privacy_options' + - link: '/session_replay/mobile/privacy_options' tag: Documentation text: Mobile Session Replay Privacy Options - - link: '/real_user_monitoring/session_replay' + - link: '/session_replay/' tag: Documentation text: Session Replay --- @@ -66,4 +66,4 @@ At any time during the lifetime of the host app, it's possible to change the tra {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/mobile/privacy_options/?platform=ios&tab=as-wrappers#image-masking +[1]: /session_replay/mobile/privacy_options/?platform=ios&tab=as-wrappers#image-masking diff --git a/content/en/real_user_monitoring/session_replay/playlists.md b/content/en/session_replay/playlists.md similarity index 81% rename from content/en/real_user_monitoring/session_replay/playlists.md rename to content/en/session_replay/playlists.md index c6603e8642f..e723d93da82 100644 --- a/content/en/real_user_monitoring/session_replay/playlists.md +++ b/content/en/session_replay/playlists.md @@ -2,13 +2,15 @@ title: Session Replay Playlists description: Learn how to create and use Playlists for organizing Session Replays. aliases: + - /real_user_monitoring/session_replay/playlists + - /product_analytics/session_replay/playlists further_reading: - - link: '/real_user_monitoring/session_replay' - tag: Documentation - text: Session Replay - - link: 'https://www.datadoghq.com/blog/datadog-rum-session-replay-playlists/' - tag: Blog - text: Organize and analyze related session replays with Playlists in Datadog RUM + - link: '/session_replay' + tag: Documentation + text: Session Replay + - link: 'https://www.datadoghq.com/blog/datadog-rum-session-replay-playlists/' + tag: Blog + text: Organize and analyze related session replays with Playlists in Datadog --- ## Overview @@ -23,6 +25,8 @@ Playlists are collections of Session Replays you can aggregate in a folder-like You can create a playlist directly from the [Playlist page][1] or from an individual Session Replay. +If you spot any notable behaviors after viewing a Session Replay, you can click **Save to Playlist** to build a new playlist or add that particular Session Replay to an existing playlist. + To create it directly from the **Playlist page**: 1. In Datadog, go to [**Digital Experience > Session Replay > Playlists**][1]. @@ -34,14 +38,10 @@ To create it directly from the **Playlist page**: To create it from an individual Session Replay: 1. Open the replay you want to save. -2. Click the **Save to Playlist** button at the top. -3. Add the recording to an existing playlist, or create a new one like in the video below. - - {{< img src="real_user_monitoring/session_replay/playlists/playlist-individual-session-replay.mp4" alt="Build a new playlist from the individual recording" video="true" width="90%" >}} - -If you spot any notable behaviors after viewing a Session Replay, you can click **Save to Playlist** to build a new playlist or add that particular Session Replay to an existing playlist. +2. Click the **Share** button at the top, then select **Save to Playlist**. -{{< img src="real_user_monitoring/session_replay/playlists/playlists-build-new-playlist.mp4" alt="Build a new playlist" video="true" width="90%" >}} + {{< img src="real_user_monitoring/session_replay/playlists/share-playlist.png" alt="Build a new playlist from the individual recording" style="width:90%;">}} +3. Add the recording to an existing playlist, or create a new one. ## Use cases @@ -84,4 +84,4 @@ By default, Session Replay retention is 30 days. With [extended retention][2], y {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/rum/replay/playlists -[2]: /real_user_monitoring/session_replay/#retention +[2]: /session_replay/#retention diff --git a/content/en/synthetics/guide/explore-rum-through-synthetics.md b/content/en/synthetics/guide/explore-rum-through-synthetics.md index 9adcfc94b12..77043a24e60 100644 --- a/content/en/synthetics/guide/explore-rum-through-synthetics.md +++ b/content/en/synthetics/guide/explore-rum-through-synthetics.md @@ -67,8 +67,8 @@ To navigate back to Synthetic Monitoring and your test's results, click **View S {{< partial name="whats-next/whats-next.html" >}} -[1]: /real_user_monitoring/session_replay/browser/ -[2]: /real_user_monitoring/session_replay/browser/developer_tools/ +[1]: /session_replay/browser/ +[2]: /session_replay/browser/developer_tools/ [3]: /real_user_monitoring/explorer/ [4]: /real_user_monitoring/error_tracking/ [5]: https://app.datadoghq.com/synthetics/settings/integrations diff --git a/content/en/synthetics/guide/rum-to-synthetics.md b/content/en/synthetics/guide/rum-to-synthetics.md index 47a81a726eb..aac4ffda49a 100644 --- a/content/en/synthetics/guide/rum-to-synthetics.md +++ b/content/en/synthetics/guide/rum-to-synthetics.md @@ -43,6 +43,6 @@ Further customize your tests and test steps to suit your needs, just as you woul [1]: /real_user_monitoring/ [2]: /synthetics/browser_tests [3]: https://app.datadoghq.com/rum/sessions -[4]: /real_user_monitoring/session_replay/browser/ +[4]: /session_replay/browser/ [5]: /synthetics/browser_tests/test_steps [6]: /synthetics/browser_tests/?tab=requestoptions#test-configuration \ No newline at end of file diff --git a/content/en/synthetics/platform/test_coverage/_index.md b/content/en/synthetics/platform/test_coverage/_index.md index cc737a0408c..20dbbc98cd8 100644 --- a/content/en/synthetics/platform/test_coverage/_index.md +++ b/content/en/synthetics/platform/test_coverage/_index.md @@ -85,7 +85,7 @@ Add the most popular sections of your application to a new or existing browser t [4]: /synthetics/browser_tests/ [5]: /real_user_monitoring/guide/send-rum-custom-actions/ [6]: /synthetics/metrics/ -[7]: /real_user_monitoring/session_replay/browser/ +[7]: /session_replay/browser/ [8]: https://app.datadoghq.com/rum/explorer/ [9]: /continuous_testing/ diff --git a/data/partials/home.yaml b/data/partials/home.yaml index d73d7dfd273..f46b4f33de9 100644 --- a/data/partials/home.yaml +++ b/data/partials/home.yaml @@ -123,6 +123,10 @@ nav_sections: link: product_analytics/ icon: product-analytics desc: Gain insight into user behavior and make data-driven product decisions + - title: Session Replay + link: session_replay/ + icon: session-replay + desc: Capture and visually replay the user experience of your users - title: Mobile Application Testing link: mobile_app_testing/ icon: mobile diff --git a/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md b/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md index 3aa4e9e5d48..f86c03eb792 100644 --- a/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md +++ b/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/mobile/privacy_options.mdoc.md @@ -1485,5 +1485,5 @@ The following chart shows how we apply different image masking strategies: - Masked {% /table %} -[1]: /real_user_monitoring/session_replay/privacy_options +[1]: /session_replay/browser/privacy_options [2]: https://github.com/DataDog/dd-sdk-reactnative diff --git a/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md b/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md index 1c8a2d6781d..dc1dd45a182 100644 --- a/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md +++ b/layouts/shortcodes/mdoc/en/real_user_monitoring/session_replay/setup_and_configuration.mdoc.md @@ -586,7 +586,7 @@ DatadogSdk.instance.sdkVerbosity = CoreLoggerLevel.debug; See [Privacy Options][2]. [1]: /real_user_monitoring/application_monitoring/ios/web_view_tracking -[2]: /real_user_monitoring/session_replay/mobile/privacy_options +[2]: /session_replay/mobile/privacy_options [3]: https://reactnative.dev/architecture/landing-page [4]: https://central.sonatype.com/artifact/com.datadoghq/dd-sdk-kotlin-multiplatform-session-replay/versions [5]: /real_user_monitoring/android/?tab=kotlin @@ -601,16 +601,16 @@ See [Privacy Options][2]. [14]: /real_user_monitoring/application_monitoring/react_native/setup [15]: https://yarnpkg.com/package?q=datadog%20react%20native%20ses&name=%40datadog%2Fmobile-react-native-session-replay [16]: https://www.npmjs.com/package/@datadog/mobile-react-native-session-replay?activeTab=versions -[17]: /real_user_monitoring/session_replay/mobile/privacy_options/?tab=reactnative +[17]: /session_replay/mobile/privacy_options/?tab=reactnative [18]: https://github.com/DataDog/dd-sdk-reactnative [19]: https://github.com/DataDog/dd-sdk-android/releases/tag/2.8.0 [20]: /real_user_monitoring/application_monitoring/android/web_view_tracking/?tab=android#instrument-your-web-views -[21]: /real_user_monitoring/session_replay/browser/#setup +[21]: /session_replay/browser/#setup [22]: https://github.com/DataDog/dd-sdk-ios/releases/tag/2.13.0 [23]: /real_user_monitoring/application_monitoring/ios/web_view_tracking/?tab=ios#instrument-your-web-views [24]: /real_user_monitoring/application_monitoring/kotlin_multiplatform/web_view_tracking/?tab=kotlinmultiplatform#instrument-your-web-views [25]: /real_user_monitoring/application_monitoring/web_view_tracking/?tab=reactnative#instrument-your-web-views -[26]: /real_user_monitoring/session_replay/browser/#setup +[26]: /session_replay/browser/#setup [27]: https://reactnative.dev/architecture/landing-page [28]: https://docs.datadoghq.com/real_user_monitoring/application_monitoring/flutter/setup?tab=rum [29]: https://pub.dev/packages/datadog_session_replay diff --git a/static/images/real_user_monitoring/session_replay/extended-retention-1.png b/static/images/real_user_monitoring/session_replay/extended-retention-1.png new file mode 100644 index 00000000000..290aaf98e00 Binary files /dev/null and b/static/images/real_user_monitoring/session_replay/extended-retention-1.png differ diff --git a/static/images/real_user_monitoring/session_replay/playlists/share-playlist.png b/static/images/real_user_monitoring/session_replay/playlists/share-playlist.png new file mode 100644 index 00000000000..97016dc2b06 Binary files /dev/null and b/static/images/real_user_monitoring/session_replay/playlists/share-playlist.png differ diff --git a/static/images/real_user_monitoring/session_replay/replay-extended-retention-1.png b/static/images/real_user_monitoring/session_replay/replay-extended-retention-1.png new file mode 100644 index 00000000000..3cc447dbd78 Binary files /dev/null and b/static/images/real_user_monitoring/session_replay/replay-extended-retention-1.png differ