Browser Sessions

Watch it happen, then open the trace

A replay shows you what the user did. The trace under it shows you why it failed. Both carry the same session id, so the jump between them is one click, not a reconstruction.

The surface

The recording and the evidence, side by side

The viewport plays back exactly as rendered, with console lines, network requests and thrown exceptions on the same timeline as the clicks that caused them.

A session replay with the recorded viewport playing beside its console, network and error tabs
/replays session s_9f31 · 6:12
signal
sessions
records
DOM · console · network · errors
joins.on
session_id · trace_id
masking
input · text · client-side
sampling
per org

In motion

A session, playing

The cursor travels to Pay now, the click lands, and the event stream fills in beside it — each entry carrying the trace id it belongs to.

replay · checkout flow LIVE
app.acme.com/checkout Chrome macOS Desktop
trace ↳ 9f3c · POST /api/pay 1.24s · 5 spans
edge 1.24s
api 180ms
payment-svc 880ms
stripe 690ms
postgres 85ms
1 session · 9 events · 2 errors trace-linked · 30d retention

What it does

What the recording carries

event stream
Every event, in order
Navigations, clicks, inputs, console lines, network calls and errors land in one ordered stream. Each row carries the trace id that was live when it happened.
rrweb
Pixel-accurate replay
The DOM is recorded, not the screen. Scroll position, hover state and mid-typing input values play back as the user left them, at any window size.
session_id
From a moment to a span
Pause on the failed click and open the request it fired. The replay and the waterfall are two views of one session id, not two products stitched by timestamp.
http.status_code
Console and network, inline
Requests are recorded with method, status and duration. A 500 on POST /checkout shows up in the stream at the second it returned, not in a separate tab.
mask rules
Masked before it leaves
Inputs and text nodes are masked in the browser, before anything is sent. Sampling rate and redaction rules are config, not a support request.

Keep going

Surfaces that share this data

Point OTLP at Maple.

One endpoint, one key. Traces, logs, metrics and sessions land on the same trace id from the first request.