Session Replay

Ingest replay chunks, timeline player, RUM и privacy masking.

Web Session Replay — основной сценарий: запись chunks через JS SDK, timeline player в кабинете и связь session с issue при ошибке в той же сессии. Mobile replay (iOS/Android) — частичная поддержка через ingest с полем platform.

Web: ingest POST /api/{projectId}/replay/, Sentry envelope replay_event / replay_recording, timeline player, RUM (LCP/FCP/TTFB), privacy masking в SDK.

1. Ingest

Два способа:

  • Native: POST /api/{projectId}/replay/ с JSON chunks
  • Sentry envelope: items replay_event и replay_recording
json
{
  "replayId": "session-abc123",
  "sequence": 0,
  "url": "https://app.example/page",
  "durationMs": 12000,
  "events": [
    { "type": "navigation", "timestamp": 0, "url": "https://app.example/page" },
    { "type": "click", "timestamp": 500, "selector": "button.submit" }
  ],
  "rum": { "lcpMs": 2100, "fcpMs": 800, "ttfbMs": 120, "durationMs": 1500 }
}

Авторизация: X-Sentry-Auth или публичный ключ DSN (как для store/envelope).

2. devlogs-sdk-js replay

javascript
import { init, startReplayRecording } from 'devlogs-sdk-js';

init({ dsn: 'https://YOUR_PUBLIC_KEY@dev-logs.ru/YOUR_PROJECT_ID' });

const recorder = startReplayRecording({
  maskAllInputs: true, // по умолчанию true — не записывать value полей
});

// при ошибке replayId попадёт в context события
// recorder.stop() при выходе

Опционально: полный rrweb через peer dependency; базовая запись — navigation, click, visibility без DOM snapshot.

3. Privacy masking (по умолчанию)

  • maskAllInputs: true — значения input/textarea не попадают в events
  • Не записываем содержимое password-полей даже при maskAllInputs=false
  • Для production настройте beforeSend и отключите replay на sensitive routes

4. Dashboard

  • Список: /dashboard/projects/[id]/replays
  • Player: /dashboard/projects/[id]/replays/[replayId]
  • RUM таблица на странице replays (LCP/FCP/TTFB)
  • Issue → ссылка Session replay при replayId в context

5. Retention

Worker удаляет replay sessions и RUM метрики по SystemSettings.retentionDays (как events и transactions). См. лимиты.

6. Mobile replay (частично)

Native mobile replay (iOS/Android) принимается через поле platform в replay ingest и отображается в списке с фильтром Mobile. Полноценный player и запись DOM — только для web (JS и npm SDK). Для production рекомендуем web replay как основной инструмент отладки.

7. RUM из APM transactions

При Sentry Performance transaction с tags lcp, fcp, ttfbingest сохраняет RumMetric. См. также APM.