Skip to main content
Política metric-only por default. O SDK NÃO captura headers nem request/response body. O operador pode opt-in via recordHeaders: true ou recordBody: true, mas mesmo nesse modo as blocklists hardcoded (Authorization, Cookie, etc) permanecem ativas.

O que é capturado por default

O SDK monkey-patches window.fetch + XMLHttpRequest.prototype.{open,send} e empurra cada request como rrweb custom event (tag: 'atlas-network'). Cada evento contém:
Console também é capturado (custom event tag: 'atlas-console'):

URL scrubbing automático

Sempre que uma URL é capturada (fetch, XHR, navigation), o SDK roda scrubURL(rawUrl). Query params na seguinte lista são substituídos por [redacted] (URL-encoded como %5Bredacted%5D):
Exemplo:
Matching é case-insensitive no nome do param. O valor do param é sempre substituído integralmente — não há heurística parcial (todo o token vira [redacted], não apenas um pedaço).
Se o operador usa nomes custom para tokens (auth_token_v2, bearer, etc), adicione-os na lista via fork local do SDK. Phase 2.5 vai expor isto como config (network.scrubAdditionalParams).

Headers hardcoded como blocklist

Mesmo com recordHeaders: true, estes headers nunca aparecem no replay:
Matching é case-insensitive. Headers extras podem ser adicionados via config do operador:

Configurações disponíveis

Truncamento + stringify dos args do console

console.warn(obj) no app vira string no replay via:
  1. null / undefined → “null” / “undefined”
  2. Error instances → "<name>: <message>"
  3. Objetos → JSON.stringify(obj) (catch para circular refs → Object.prototype.toString.call(...))
  4. Funções → "function <name>" ou "function"
  5. Resto → String(value)
Cada arg é truncado em maxLength chars (default 2000). Truncated value termina em '…' para sinalizar corte.

Erros no app NÃO param o console nativo

Auditando o que está sendo capturado

Recomendação de produção

Manter metric-only

Default config (recordHeaders: false, recordBody: false) é safe. Atende 90% dos casos de debug — duração, status, ordem das requests.

Opt-in com Compliance review

Habilitar recordHeaders: true só após review do time de Compliance e audit log ativo. Body capture (recordBody: true) requer DPA explícito com o jogador.

Limitações

  • Streams (fetch().then(r => r.body)) reportam responseSize=0 quando o client lê via .body.getReader() em vez de .text()/.json().
  • WebSocket NÃO é capturado nesta versão (briefing v4 §5.14 — Phase 2.5).
  • Server-Sent Events (EventSource) NÃO é capturado — Phase 2.5.

Próximos passos

Masking

Garantir que PII visual também não vaza.

Triggers

Reduzir volume capturando só sessões críticas.