Redaction runs at capture time. A token in a query string never reaches the buffer, which means it cannot be recovered from a report even by us — the difference between “we do not show it” and “we do not have it”.
Defaults
The engine is default-deny: props and attributes are dropped unless
known-safe, and the rules are built in rather than configured. The React Native
provider exposes no redaction option — there is no maskInputs,
allowProps or customRules to pass. (The React SDK on the web does; this one
does not.)
What you get without doing anything: the built-in patterns run over every
breadcrumb message and data string, every native log line and every screen
name before it is buffered, with credit-card-shaped strings Luhn-validated
before masking (so a 16-digit order number is not mistaken for a card).
Custom patterns
Not available on React Native today. Keep secrets out of log lines and request URLs at the source; if you need a rule for a shape only you know, tell us and we will scope it.
What redaction does not cover
Pixels. A card number rendered on screen is caught by
TraceItXSensitive, not by a rule — the engine
reads text, not images.
Meaning. Screen names do pass through the patterns, but the engine recognises shapes, not meaning — an order id or an internal username in a route name sails through. See Screen tracking.
Server-side safety net
Ingest runs a subset of these rules again on arrival. It is idempotent and deliberately narrower than the client engine — it exists to catch an SDK that is old or misconfigured, not to replace client-side redaction. By the time it runs, the data has already left the device.