Vexo collects product analytics and records session replays, so both Apple and Google expect your app to declare that data collection — and Apple additionally expects a consent flow for session recording. This page lists exactly what the SDK collects and what to answer on each store's forms.
Everything below is collected for analytics only. It is linked to the device record (and to your own user identifier if you set one), and it is not used for cross-app tracking or advertising:
identifyDevice() with your own identifier (an email, user id or hash); if you never call it, no user ID is collectedIn App Store Connect → your app → App Privacy, answer yes to "Do you or your third-party partners collect any data from this app?" and declare the following data types for Vexo:
identifyDevice()For each of these, answer linked to the user's identity: yes and used for tracking: no. Vexo does not track users across other companies' apps and does not share data for advertising, so the SDK itself does not require an App Tracking Transparency prompt.
Since 1.8.0 the pod ships its own privacy manifest (PrivacyInfo.xcprivacy) declaring the required-reason APIs the SDK uses: UserDefaults (reason CA92.1, to persist the device ID) and file timestamps (reason C617.1, used by its internal storage). Xcode aggregates it into your app's privacy report automatically — you don't need to declare these APIs on Vexo's behalf in your own manifest.
Session replay is a recording of user activity, and App Review Guideline 2.5.14 requires apps that record user activity to obtain explicit user consent and show a clear visual indication that recording is taking place. The SDK gives you the switches; the consent UI is yours to build.
Gate initialization on consent — nothing is recorded or sent before vexo() runs:
import { vexo, enableTracking, disableTracking } from 'vexo-analytics';
if (userHasConsented) {
vexo('YOUR_API_KEY');
}
Runtime opt-out — disableTracking() stops event collection and session recording (including a recording already in progress), and the choice is persisted across launches. enableTracking() turns it back on; recording resumes with the next session.
Visual indication — the SDK does not render a recording indicator, so show your own persistent indicator while tracking is enabled.
Masking — captured screenshots are blurred by default (the blur setting in your dashboard, on by default). There is currently no API to mask or exclude an individual view, so keep blurring on for any screen that can show sensitive content.
In Play Console → App content → Data safety, declare the same collection mapped to Play's categories:
identifyDevice()For each: data is collected (not shared with third parties) and encrypted in transit. Users can request deletion of their data by emailing Vexo support. If you gate vexo() behind consent as shown above, you can declare the collection as optional rather than required.
Google Play requires apps to support devices with 16 KB memory pages. The SDK's native dependencies are 16 KB-aligned (enforced in the SDK's CI), so vexo-analytics will not block your app from meeting this requirement.