Troubleshooting
Troubleshooting: Masking Questions
Answers to common AnyReplay masking questions: visible text that should be hidden, fields shown as asterisks, images in replays, and checking what is sent.
Masking is applied in the page before data is sent, so every answer below comes down to what the recorder saw at the moment it serialised the page. The rules are in masking and blocking.
Personal data is visible in a replay
- Masking was turned off. Form fields are masked by default;
maskAllInputs: falsein your snippet records what visitors type. Remove that line to mask every field again, or keep it and mark the sensitive ones withar-mask. - Text that is not in an input — names, emails, addresses rendered as ordinary text — is recorded unless it is inside an element with
ar-maskorar-block. Input masking does not cover it. - It was typed into a rich-text editor. A
contenteditableelement holds page text, not an input value, somaskAllInputsdoes not reach it. SetmaskAllTyping: trueto mask every editable region as well; see masking and blocking. - The option was a string.
maskAllTyping: "true"— what a tag manager variable often hands over — is nottrue, so it is ignored and editors are not masked. The console says so; the value must be a real boolean. - The class was added after the text appeared. Put
ar-maskin the markup that renders the text, not in code that runs later. - You changed `maskClass` or `blockClass`. The custom names replace the defaults;
ar-maskno longer applies. - It is inside an iframe, a canvas or an image. Canvas contents are not recorded; images are recorded by URL. Use
ar-blockon the container to keep the picture out. - It is in a custom event or a screen name. Properties passed to
trackand names passed toscreen()are stored as sent. Do not put personal data in them.
A field I need to see shows asterisks
Form fields are masked by default. Set maskAllInputs: false to see what visitors type (and check that maskAllTyping: true is not set, which masks every field whatever maskAllInputs says, and that the value is a real false, not the string "false"). If it still shows asterisks, the field is one of those that are masked in every configuration: a password, a one-time code, a payment field, a field inside an element carrying ar-mask, a value of 13–19 digits that passes the card-number check, or a number that could still become one — digits starting 2–6, more than six of them, grouped like a card. Email and telephone inputs are not on that list — they are ordinary fields, so asterisks there mean field masking is still on. The last two catch an order number now and then — any run of seven or more digits starting 2–6; rename the field or accept the asterisks, because there is no option that turns the floor off. The length and timing of typing are still visible when a value is masked.
The layout looks wrong around a blocked element
ar-block records a placeholder with the element's size at the time it was recorded. If the element changes size later, the placeholder may not follow it. Use ar-mask instead where layout fidelity matters and the text is the only sensitive part.
React Native
- What a person types into a
TextInputis masked by default, as in the browser SDK.maskAllInputs: falserecords it;maskAllTyping: truemasks every field and cannot be weakened. secureTextEntryfields are always masked, on both iOS and Android, and so is any field whosetextContentType,autoComplete,keyboardType, accessibility label, placeholder ortestIDnames a password, a one-time code or a payment instrument — plus any value shaped like a card number, or like one being typed.- A bare
<TextInput />with no props tells us nothing about itself, so withmaskAllInputs: falseit is recorded. Give a sensitive one atextContentType, anautoCompleteor atestIDcontainingar-mask. - To mask a
Text, aViewor anything else, give it atestIDcontainingar-mask. Everything inside a masked element is masked too. - Images are recorded by URL; bundled app images are uploaded once per project. Set
maskImages: trueif pictures could be personal, such as avatars people upload. - Photos from the device's caches or photo library are never read.
Are masked values translated?
No. They are asterisks before they leave the device, so there is nothing to translate. See session translation.
How do I prove what is sent?
Type a unique value
Enter something you can search for, such as
mask-test-4821, into a form on your site.Inspect the request
In the network panel, open the
POST /v1/ingest/eventsrequests made after typing and search their payloads for the value.Confirm
A masked field carries asterisks of the same length and no occurrence of the value; an unmasked one carries exactly what you typed. Try it with a password field too: that one is asterisks whatever your options say.