ReadyNative

Privacy consent

Privacy consent for an Expo app, compared: Consent sheet (GDPR / CCPA), or none - Expo Go support and what each option installs.

Hey - here's how privacy consent works in ReadyNative. This category is a yes/no: does a consent sheet ask before analytics and crash reporting start?

What stays the same either way: the consent store (src/stores/consent.ts, key readynative:consent), the @/lib/consent contract (consent.get() / useConsent() / set() / setDoNotSell()), and the Settings Privacy card ("Export my data", and "Do not sell or share" whenever an analytics module is selected) are core. The analytics and crash modules follow the consent store and only create their SDK clients once their category is consented to, so the SDK files are identical under both options. Setup picks the option for you - consent when an analytics or crash module is selected, none otherwise - and bun run setup --consent <option> overrides it.

  • consent - a sheet after onboarding wherever a device locale region or the time zone points to the EU/EEA, UK, Switzerland, Canada or Brazil (and wherever the device has no region; or everywhere with privacy.askEverywhere): one switch per category the build has, "Accept all" or "Only necessary". SDKs stay off there until answered; elsewhere they start on and the Settings switches turn them off. Needs expo-localization (installed by the module).
  • none - nothing asks; undecided reads as consented, "Do not sell or share" still turns analytics off. Right when you ship no analytics or crash module (the default preset).

Options

One option per category - --consent <option> picks it:

bun run setup --consent consent
OptionLabelExpo GoHint
consentConsent sheet (GDPR / CCPA) (default)yesasks before analytics + crash start (EU/EEA, UK, Switzerland, Canada, Brazil or everywhere); Settings toggles · Expo Go OK
noneNo consent sheetyesconsent.get() reads all-true; analytics and crash SDKs start as before

On this page

Get ReadyNative