On this page

Data Privacy for Mobile

Data privacy considerations when using Statsig mobile SDKs, including handling of identifiers, opt-out mechanisms, and platform-specific requirements.

General

What data does Statsig collect from users of my app

Statsig collects only the data that you configure to send to Statsig. This data typically includes the occurrence of feature flag evaluations (Feature Gates), experiment exposures, and custom events you log with the SDK.

Does that data include any personally identifiable information (PII)

By default, Statsig uses randomly generated IDs as described in this article. You can also augment data sent to Statsig with additional context and metadata, including user names, email addresses, or custom attributes. This data, alone or in combination with other data, may constitute PII if it identifies an individual directly or indirectly.

Does Statsig use the device ID to identify a user

No. Statsig on Mobile doesn't use device IDs such as Secure.ANDROID_ID or advertisingIdentifier on iOS. Instead, Statsig uses a StableID, which it randomly generates per device, per app, and per installation, and which can't identify a single device across installations. Statsig generates a new StableID when you reinstall an application. These IDs provide approximate statistical information as part of the application monitoring service, for example, for Crash Free Session and User Rates. The IDs also indicate the impact of issues based on number of events versus affected users.

What does Statsig do with the data it collects

Statsig processes the data you send to it to provide feature flag management, experimentation, and analytics services.

Apple App Store

Do I need to disclose the use of Statsig in App Store Connect on the Apple App Store

Yes, Statsig is a third-party partner whose code (SDKs) you integrate in your app that collects data from users of your app.

What do I need to disclose to Apple

Disclose all types of data you're collecting through your app, including data you're sending to Statsig. This may include "Contact Info" or "Identifiers" if you provide those in the StatsigUser object. Include any other categories of data you have configured the SDKs to send to Statsig.

How does Statsig use my data

The standard data use cases for Statsig are "Analytics" and "App Functionality". Disclose to Apple any other ways in which you or your app use the data you collect.

Does Statsig use my data to track users

Statsig doesn't use your data to track users. However, if you or your other third-party partners are tracking users, you still need to disclose this to Apple.

Does Statsig use the Advertising Identifier (IDFA)

No. Statsig doesn't require IDFA.

Google Play

Does Statsig collect any PII from children

If your app targets children and you configure Statsig to collect PII, Statsig collects the elements you have designated. You remain responsible for obtaining appropriate parental consents for the PII you collect from users and send to Statsig. You also remain responsible for declaring your app's target age group to Google Play.

Do Statsig SDKs cause my app to contain ads

No. Statsig doesn't cause your app to contain any ads.

What do I need to disclose to Google Play

Disclose in your app privacy policy all types of data you're collecting through your app, including data you're sending to Statsig.

Privacy controls

What device and user metadata does Statsig automatically collect

The Statsig SDKs automatically collect the following metadata for targeting and analytics purposes:

iOS SDK collects:

  • appIdentifier: Your app's bundle identifier
  • appVersion: Your app's version
  • deviceModel: The device model (e.g., iPhone14,3)
  • deviceOS: The operating system (iOS)
  • language: The user's preferred language
  • locale: The user's locale identifier
  • sdkType: The type of SDK (ios-client)
  • sdkVersion: The version of the Statsig SDK
  • sessionID: A randomly generated UUID for the current session
  • stableID: A persistent device identifier (see below)
  • systemVersion: The iOS version
  • systemName: The system name (iOS)

Android SDK collects:

  • appIdentifier: Your app's package name
  • appVersion: Your app's version name
  • deviceModel: The device model (e.g., Pixel 7)
  • deviceOS: The operating system (Android)
  • locale: The user's locale
  • language: The user's language
  • sdkType: The type of SDK (android-client)
  • sdkVersion: The version of the Statsig SDK
  • sessionID: A randomly generated UUID for the current session
  • stableID: A persistent device identifier (see below)
  • systemVersion: The Android API level
  • systemName: The system name (Android)

How can I limit the metadata collected by Statsig

Both iOS and Android SDKs provide the optOutNonSdkMetadata option to limit the collection of device-specific information:

iOS SDK:

swift
let options = StatsigOptions()
options.optOutNonSdkMetadata = true
Statsig.start(sdkKey: "client-sdk-key", options: options)

Android SDK:

kotlin
val options = StatsigOptions(optOutNonSdkMetadata = true)

When you enable optOutNonSdkMetadata, the SDK includes only the following core SDK metadata:

  • sdkType: The type of SDK
  • sdkVersion: The version of the Statsig SDK
  • sessionID: A randomly generated UUID for the current session
  • stableID: A persistent device identifier

The SDK excludes all device-specific information (appIdentifier, appVersion, deviceModel, deviceOS, locale, language, systemVersion, systemName) from logs and targeting.

How does StableID work

The StableID is a persistent identifier that Statsig uses to provide consistent user experiences and analytics:

iOS Implementation:

  • Statsig stores the StableID in UserDefaults under the key "com.Statsig.InternalStore.stableIDKey".
  • On first generation, Statsig creates the StableID as a random UUID.
  • The StableID persists across app launches, but Statsig regenerates it when you reinstall the app.
  • You can override the StableID through the StatsigOptions.overrideStableID parameter.

Android Implementation:

  • Statsig stores the StableID in SharedPreferences.
  • On first generation, Statsig creates the StableID as a random UUID.
  • The StableID persists across app launches, but Statsig regenerates it when you reinstall the app.
  • You can override the StableID through the StatsigOptions.overrideStableID parameter.

Statsig doesn't share the StableID across different apps or websites, and it can't track users across different applications or platforms.

How can I prevent sending sensitive user data to Statsig

Use the privateAttributes field for sensitive data you want to use for targeting but not log:

iOS SDK:

swift
let user = StatsigUser(
    userID: "user-123",
    email: nil, // Not included at top level to keep private
    privateAttributes: ["email": "user@example.com"] // Used for evaluation but not logged
)

Android SDK:

kotlin
val user = StatsigUser("user-123")
user.privateAttributes = mapOf("email" to "user@example.com")

The SDK sends these attributes to Statsig servers during initialization for feature flag and experiment evaluation, but Statsig removes them before sending any event logs to Statsig servers. Use the attributes for targeting users with specific features or experiments, but they don't appear in your analytics data.

For more comprehensive privacy controls, use Client Bootstrapping to generate all assignments locally on your server. This approach eliminates the need to send any user attributes from the client device to Statsig.

Was this helpful?