Skip to content

Privacy and storage

What the widget stores, who can read it, and how to wait for consent.

On this page

The widget runs entirely in the visitor's browser.

No network, no cookies

It makes no network requests, sets no cookies and has no analytics. The only request is the script itself, from your server or the CDN.

What is saved

With persist: true (the default) it uses two localStorage keys on your origin: a11yw-settings holds the visitor's adjustments and active profiles, and is removed when everything is back to default; a11yw-settings:lang holds the chosen language. storageKey changes the name.

JavaScript
// localStorage["a11yw-settings"]
{"v":1,"fontSize":120,"profiles":["visionImpaired"],"readableFont":true,"colorMode":"high-contrast"}

// localStorage["a11yw-settings:lang"]
ar

Who can read it

Any script on the same origin (analytics, tag managers, session replay) can read those keys, the a11yw-* classes on html and the data-a11yw-fs attributes. Profile ids such as visionImpaired describe adjustments, but could be read as a hint about a visitor's needs. If you use session replay, mask the widget (.a11yw-root) and don't record the class names of html.

Whether saving preferences is strictly necessary (ePrivacy Art. 5(3)) and how GDPR applies is for your privacy team to decide. To store nothing, pass persist: false. To save only after consent, start with persist: false and turn it on once the visitor agrees.

TypeScript
const widget = init({ persist: false }); // store nothing yet

onConsent(() => {
  widget.setOptions({ persist: true });     // saving starts with the visitor's next change
});

Edit this page on GitHub