Concepts
Privacy & data
Masking, before capture
On the web, input values are masked before the screenshot is taken and before the replay is recorded — so private text never enters the captured image or the DOM recording in the first place. You can explicitly unmask an element where full fidelity matters (an internal or beta project can loosen this globally).
Scrubbing, before transport
Every report — human-sent or auto-captured — passes through the same client-side scrubbers:
- URLs lose query strings and PII in path segments.
- Console and error text loses emails, bearer tokens, and long digit runs.
- Network crumbs are metadata-only — method, scrubbed URL, status, timing, sizes, content-type, and a failure classification. Never a request or response body, never a header.
On the backend
@fixback/node captures the route pattern (never the concrete path
with values), the method, status, a correlation id, and an app-supplied user reference. It never
sends request/response bodies, Authorization/Cookie headers,
environment variables, or query-string values.
The beforeSend hook
Every SDK exposes a beforeSend choke point — the last chance to redact further, or to
drop a report entirely by returning null. It runs on both human reports and
automatic error captures.
init({ key: "pk_live_…", beforeSend(report) { // Drop anything from an internal admin path entirely. if (report.url?.includes("/admin")) return null; return report; },});