Once a recording has been uploaded, watching it back doesn't require any setup beyond signing in to the dashboard.
Opening a replay#
Select an organization, then a client app, and its recordings appear in a list — newest first. Each row shows the platform, app version, duration, size, and any
hadError/label tags (see Tags). Click Watch replay
to open the viewer in a new tab.
Reading the timeline#
Three things surround the replayed screen: a transport (play/pause, stepping, speed, loop, skip-idle), a session timeline of stacked lanes, and an event list.
The session timeline's lanes#
The session timeline is where notable moments are drawn. It stacks six lanes over one shared time axis, so a single moment can be read across all of them at once — an error, the screen the user was on when it happened, and whether they were doing anything at the time:
| Lane | What it draws |
|---|---|
| Exceptions |
A tick per uncaught error. If a session
hadError
, this is the fastest way to find where it happened.
|
| Slow Frames | A bar per burst of slow frames, spanning the stutter. A burst containing a frozen frame — or a frozen frame's own event — is drawn taller, in the same color. See Frame Performance . |
| Frustration | Rage, dead and error tap clusters, labelled with the kind and the tap count. |
| Screen | The route the user was on, from screen tracking — empty if the app never added the observer. |
| Events | Your own custom events. |
| Activity | Pointer density — where in the session the user was actually doing something. |
Screen and Events sit next to each other on purpose, and they are not the same thing. A screen is where the user was, reported automatically by your app's navigator; a custom event is something that happened, because your code marked it.
The event list#
Every recorded event in one scrollable list, in its own color per category.
- Clicking a row seeks the replay to that exact moment.
- The chips above it filter by category: Errors, Tags, Screen, Device (lifecycle, metrics, brightness, focus), Taps and Skipped. Taps and Skipped are off by default — they are ambient signal rather than notable moments. A chip is greyed out when the session contains none of that category.
A replay of a session that hadError may also begin close to the error rather than at the start of the session: the upload is trimmed to a window around the first error. That is expected, not a truncated file — see
The Error Capture Window.
Images in a replay#
Two kinds of images can appear:
-
Assets from your app's bundle (
Image.asset) resolve automatically if you've run the asset upload script for this client app — otherwise they show as placeholders. -
Explicitly captured real images (anything your app wrapped in
CaptureRealImages) are embedded directly in the recording and always render, no separate upload needed.
What you won't see#
A replay you could open last month may simply not be there: uploaded recordings are kept for 30 days and then deleted, while the exceptions, frozen frames and frustration taps captured during the same session outlive them. See Recording Retention for what survives and what doesn't.
On-screen text appears as it was rendered, captured as images rather than characters, so it cannot be searched or copied. Text the app masked with
CaptureText(enabled: false), or that exceeded the session's text capture limits, is drawn as placeholder bars instead. Focus events record only that a text field or other focusable widget gained or lost focus, never its value — see
What We Capture.