Событие replay — один кусок (сегмент) записи сессии. Полная запись — упорядоченная последовательность сегментов с общим replayId; панель склеивает их обратно и проигрывает рядом с исключением, с которым они связаны. Только для браузера.
Откуда берётся
ReplayIntegration записывает страницу через rrweb и отправляет сегмент каждые flushInterval мс (по умолчанию 5 с) или когда накопится maxSegmentEvents (по умолчанию 300) событий — но только пока сессия действительно записывается:
- доля
sessionSampleRateсессий (по умолчанию 10 %) записывается с начала; - остальные держат короткий буфер в памяти и начинают отправку, только когда поймано исключение (
onErrorSampleRate, по умолчанию 100 %), так что моменты перед ошибкой всё равно попадают в запись.
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 } ]
}
}| Поле | Тип | Описание |
|---|---|---|
replayId | string | Запись, к которой относится сегмент, — одна на загрузку страницы. |
segmentId | number | Номер сегмента в записи, начиная с 0. |
events | array | Исходные события rrweb (снимки DOM, мутации, ввод, прокрутка, …). Формат у них rrweb, а не Buglapse. |
Связь с исключениями
Интеграция также задаёт на клиенте контекст replay.id, так что его несёт каждое другое событие этой страницы — в частности каждое exception. Так страница события инцидента находит запись для показа.
Приватность
Поля ввода маскируются по умолчанию (maskAllInputs), а элементы с классами buglapse-block / buglapse-mask исключаются или маскируются ещё до того, как что-либо покинет браузер. Опции — на странице интеграции.
Квота
Учитывается как одно событие в месячном лимите записей — за сегмент, а не за запись целиком.