Session Replay for Mobile
Use Session Replay for mobile to get video-like reproductions of user sessions. You'll be able to repro issues faster and get a better understanding of user impact.
Session Replay for mobile is currently in open beta for all plans except Enterprise. (If you’re on an Enterprise plan, please reach out to your Customer Success Manager for more information).
Beta features are still in progress and may have bugs. We recognize the irony. If you have any questions, feedback, or would like to report a bug, please open a GitHub issue with a link to a relevant replay (Android, iOS and React Native).
Session Replay allows you to see reproductions of user sessions, which can help you understand what happened before, during, and after an error or performance issue occurred. As you play back each session, you'll be able to see every user interaction in relation to network requests, frontend and backend errors, backend spans, and more.
Replays help you see exactly how the user experience is impacted by errors. Because they're integrated with our Issues product, you'll be able to see session replays connected to error events on the Issue Details page in Sentry. To make sure backend errors are also included in the replay, see our backend set up instructions.
Session Replay for mobile works by taking snapshots of the view hierarchy as well as a screenshot within the same frame, at the rate of one per second. These screenshots are then compressed into a video file representing a segment of the user’s session. All these small segments are then streamed into Sentry with additional trace identifiers, breadcrumbs, and other useful debugging information to compose the full user session.
The user session (replay) lasts until the user closes the app, the app crashes, the user puts the app in the background for over 30 seconds, or the session reaches 60 minutes in duration. The result is a video playback that can help you reproduce bugs in your mobile app, including hard-to-debug issues related to backend APIs and microservices.
To redact anything potentially sensitive and preserve maximum user privacy, the view hierarchy is used to find the position of controls such as text boxes, images, labels, and buttons. Redaction is done with a block that's drawn over these controls, using the most predominant color of the control.
Every replay has a detailed view that contains the embedded video player and rich debugging context. Playing back the video will allow you to see every user interaction in relation to network requests, frontend and backend errors, backend spans, and more. Almost every component on this page is connected through timestamps.
The below list shows the breakdown of each component and why it’s valuable:
- Breadcrumbs: The replay breadcrumbs show when key user interactions took place, specifically: user taps with the relevant component, navigations, when the user put the app in background or foreground, and custom breadcrumbs set by your organization. Breadcrumbs also provide insight into the device of a given user session at particular timestamps:
device battery
(when battery level or charging status changes)orientation
(when the user rotates the device)connectivity
(when this status changes between wifi, cellular, and offline).
These breadcrumbs are synced with the replay player and will auto-scroll as the video plays. Some breadcrumb types visible in Issue Details are not 1:1 to the replay breadcrumbs list. On the Replay Details page, the trail of events typically seen in the Issue Details page are instead displayed in the Network and Console components.
Timeline: This is the section at the bottom of the Replay Details page that illustrates where significant events (such as errors, device battery, and user interactions) happen over the course of the replay. This allows users to easily scrub to key events by dragging across the timeline. It also visually conveys the amount of time that took place between events and has a zoom functionality so you can easily zoom-in to distinguish between events that happened close together.
Network: This is a list of all network requests that were initiated by the app while the replay recording was active. As the video plays, there’s a visual indicator that tracks through the table of network requests, highlighting which requests happened prior to, or next to this point in the video. When a request fails, it is highlighted in red. You can also click the timestamp on the far right of each request to bring yourself to that point in the replay player.
Console: Some debugging messages that don't belong in the breadcrumb list will show up here. For example a custom
console.log
in React Native.Errors: All the errors that occurred in the replay (including in your backend), with links to the corresponding events and issue(s), as well as the impact these issues have had holistically across all users on your application, seen when you hover over the issue ID.
Tags: A complete list of built-in fields and custom tags associated with a replay, such as operating system version and name, device specs, release, and user details.
Trace: A view that connects all the trace(s) that happened during the replay.
Session Replay for mobile is currently available for Android and iOS on both native SDKs, as well as for React Native and Flutter.
We recommend updating to the latest version, but the minimum versions supported are:
How do you protect user data?
Sentry is privacy-focused so protecting user data is always top of mind. That’s why by default, our privacy configuration is very aggressive and redacts all text and images to ensure no sensitive user information is collected. We also provide server-side scrubbing on debugging context to additionally filter on the server as an added precaution.
Additionally, we offer a self-serve deletion capability of individual replays in the UI.
What is the performance overhead of the Replay package?
For most mobile applications, the performance overhead of our client SDK will be imperceptible to end-users. In our own testing, the overhead was not noticeable by end-users. However, this testing was not exhaustive and you may discover the recording overhead may negatively impact your mobile application performance depending on your application complexity.
To reduce the performance overhead, we only take screenshots when something changes on the screen. Our default frame rate is 1 frame (16ms) per second of the main thread time. If you experience any performance degradations after installing Session Replay, please open an issue on GitHub for your respective SDK: Android, iOS, React Native, and Flutter.
How much does it cost to use Session Replay for mobile?
Session Replay for mobile is currently in open beta and can be used free of charge. At some point in the future, it will becomes a paid solution (similar to Session Replay for web). The exact release date and pricing have yet to be determined.
Are unhandled exceptions (for example, crashes) available as part of Session Replay for mobile?
Currently, only handled exceptions will include a replay. We’re actively working on covering replays for crashes and ANRs and plan to support them for mobile in the coming weeks. Please refer to the SDK release notes for updates.
How does Session Replay for mobile work if my app is offline?
Session Replay for mobile currently doesn’t work in offline mode. We plan on adding support for at least a few segments leading up to errors and crashes. Please subscribe to this GitHub issue for updates.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").