Обзор
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.
Опции
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
sessionSampleRate | number | 0.1 | Доля сессий (0–1), записываемых с начала |
onErrorSampleRate | number | 1 | Вероятность (0–1), что исключение запустит отправку буферизованной сессии |
flushInterval | number | 5000 | Как часто, в мс, записываемая сессия отправляет сегмент |
maxSegmentEvents | number | 300 | Отправить сегмент раньше, когда в нём накопится столько событий rrweb |
checkoutEveryNms | number | 30000 | Как часто, в мс, делается полный снимок DOM; также ограничивает, насколько далеко назад заглядывает запись при ошибке |
maskAllInputs | boolean | true | Маскировать значения всех полей форм |
blockClass | string | 'buglapse-block' | Класс, исключающий элемент из записи |
maskTextClass | string | 'buglapse-mask' | Класс, маскирующий текст элемента |
recordCanvas | boolean | true | Записывать содержимое <canvas>; без этого canvas в записи пустые |
canvasFps | number | 4 | Частота кадров записи canvas |
rrweb — заметная зависимость: импортируйте replayIntegration только в приложениях, где записи действительно нужны.