Skip to content

A replay event is one chunk (segment) of a session recording. A full replay is the ordered sequence of segments that share a replayId; the dashboard stitches them back together and plays them alongside the exception they're linked to. Browser only.

Where it comes from ​

ReplayIntegration records the page with rrweb and sends a segment every flushInterval ms (default 5 s) or once maxSegmentEvents (default 300) have piled up — but only while the session is actually recording:

  • a sessionSampleRate share of sessions (default 10%) records from the start;
  • the rest keep a short in-memory buffer and start uploading only when an exception is captured (onErrorSampleRate, default 100%), so you still get the moments leading up to the error.

Payload ​

json
{
    "type": "replay",
    "timestamp": "2026-09-24T10:15:07.000Z",
    "tags": {},
    "contexts": { "replay.id": "0f6a…" },
    "payload": {
        "replayId": "0f6a…",
        "segmentId": 3,
        "events": [ { "type": 3, "data": { … }, "timestamp": 1790244907000 } ]
    }
}
FieldTypeDescription
replayIdstringThe recording this segment belongs to — one per page load.
segmentIdnumberPosition of this segment in the recording, starting at 0.
eventsarrayRaw rrweb events (DOM snapshots, mutations, input, scroll, …). Their format is rrweb's, not Buglapse's.

Linking to exceptions ​

The integration also sets the replay.id context on the client, so every other event from that page — in particular every exception — carries it. That's how an issue's event page finds the replay to show.

Privacy ​

Inputs are masked by default (maskAllInputs), and elements with the buglapse-block / buglapse-mask classes are excluded or masked before anything leaves the browser. See the integration page for the options.

Quota ​

Counts as one toward the monthly replay limit — per segment, not per recording.