O que é capturado por default
O SDK monkey-patcheswindow.fetch + XMLHttpRequest.prototype.{open,send}
e empurra cada request como rrweb custom event (tag: 'atlas-network'). Cada
evento contém:
tag: 'atlas-console'):
URL scrubbing automático
Sempre que uma URL é capturada (fetch, XHR, navigation), o SDK rodascrubURL(rawUrl). Query params na seguinte lista são substituídos por
[redacted] (URL-encoded como %5Bredacted%5D):
[redacted], não apenas um pedaço).
Headers hardcoded como blocklist
Mesmo comrecordHeaders: true, estes headers nunca aparecem no replay:
Configurações disponíveis
Truncamento + stringify dos args do console
console.warn(obj) no app vira string no replay via:
null/undefined→ “null” / “undefined”Errorinstances →"<name>: <message>"- Objetos →
JSON.stringify(obj)(catch para circular refs →Object.prototype.toString.call(...)) - Funções →
"function <name>"ou"function" - Resto →
String(value)
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)) reportamresponseSize=0quando 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.