Перейти к содержимому

Обзор ​

replayIntegration записывает то, что видит пользователь, — изменения DOM, движения мыши, прокрутку, ввод — с помощью rrweb, так что можно посмотреть сессию перед ошибкой, а не восстанавливать её по логам. Каждое событие со страницы помечается контекстом replay.id, который связывает инцидент с его записью в панели. Как включить и настроить — на странице Запись сессий.

Сессия записывается в одном из двух режимов:

  • Сессия целиком — с вероятностью sessionSampleRate вся сессия отправляется с начала, сегментами каждые flushInterval мс.
  • При ошибке — любая другая сессия только буферизуется в памяти, примерно последние checkoutEveryNms мс. Когда поймано исключение, с вероятностью onErrorSampleRate буфер отправляется, и запись продолжается дальше. Сессии без ошибок из браузера не уходят.

Использование ​

ts
import { use } from '@buglapse/browser'
import { replayIntegration } from '@buglapse/browser/integrations'

use(replayIntegration({
    sessionSampleRate: 0.1,
    onErrorSampleRate: 1,
}))

Приватность ​

Значения всех <input> маскируются по умолчанию (maskAllInputs). Чтобы скрыть больше, добавьте класс самим элементам:

html
<div class="buglapse-block">Не записывается совсем — в записи пустое место</div>
<p class="buglapse-mask">Текст записывается звёздочками</p>

Эти два класса по умолчанию также не пускают текст элемента в хлебные крошки: клик внутри такого элемента называется только по атрибутам. Это работает для имён классов по умолчанию — если вы изменили blockClass или maskTextClass, добавьте для хлебных крошек data-buglapse-mask.

Опции ​

ОпцияТипПо умолчаниюОписание
sessionSampleRatenumber0.1Доля сессий (0–1), записываемых с начала
onErrorSampleRatenumber1Вероятность (0–1), что исключение запустит отправку буферизованной сессии
flushIntervalnumber5000Как часто, в мс, записываемая сессия отправляет сегмент
maxSegmentEventsnumber300Отправить сегмент раньше, когда в нём накопится столько событий rrweb
checkoutEveryNmsnumber30000Как часто, в мс, делается полный снимок DOM; также ограничивает, насколько далеко назад заглядывает запись при ошибке
maskAllInputsbooleantrueМаскировать значения всех полей форм
blockClassstring'buglapse-block'Класс, исключающий элемент из записи
maskTextClassstring'buglapse-mask'Класс, маскирующий текст элемента
recordCanvasbooleantrueЗаписывать содержимое <canvas>; без этого canvas в записи пустые
canvasFpsnumber4Частота кадров записи canvas

rrweb — заметная зависимость: импортируйте replayIntegration только в приложениях, где записи действительно нужны.