Tracking transparency and nutrition labels - the cookbook for aligning iOS App Tracking Transparency (ATT), Privacy Nutrition Labels, and Google Play Data safety with what your Expo SDK 57 app actually does at runtime. Policy context lives in App Store Review Guidelines and Permissions & Play Policy.
// app.config.ts - ATT string + honest tracking declarationexport default { expo: { ios: { bundleIdentifier: "com.example.shopapp", infoPlist: { NSUserTrackingUsageDescription: "ShopApp uses this identifier to measure ad campaign performance and limit duplicate offers.", }, privacyManifests: { NSPrivacyTracking: false, // set true only if you track across other companies' apps/sites NSPrivacyTrackingDomains: [], NSPrivacyCollectedDataTypes: [ { NSPrivacyCollectedDataType: "NSPrivacyCollectedDataTypeCrashData", NSPrivacyCollectedDataTypeLinked: false, NSPrivacyCollectedDataTypeTracking: false, NSPrivacyCollectedDataTypePurposes: [ "NSPrivacyCollectedDataTypePurposeAppFunctionality", ], }, ], }, }, },};
// features/ads/requestTrackingIfNeeded.tsimport * as TrackingTransparency from "expo-tracking-transparency";import { Platform } from "react-native";export async function requestTrackingIfNeeded(): Promise<boolean> { if (Platform.OS !== "ios") return true; const { status: current } = await TrackingTransparency.getTrackingPermissionsAsync(); if (current === "granted") return true; if (current === "denied") return false; // Show your own pre-prompt explaining value BEFORE system dialog const { status } = await TrackingTransparency.requestTrackingPermissionsAsync(); return status === "granted";}
When to reach for this:
Adding AdMob, Facebook SDK, AppsFlyer, or any SDK that reads IDFA.
First App Store submission - Nutrition Labels and App Privacy questionnaire.
Play Console Data safety redraft after SDK upgrade.
Rejection citing Guideline 5.1.2 (tracking) or inaccurate privacy labels.
Legal asks for cross-store privacy parity documentation.
Do you link user/device data with third-party data for advertising
OR share with data brokers
OR use IDFA for cross-app/website tracking (other companies)?
├── NO → NSPrivacyTracking: false; do NOT call ATT; declare analytics as non-tracking
└── YES → NSPrivacyTracking: true; NSUserTrackingUsageDescription; request ATT before IDFA
ATT prompt rules:
Request after user understands context - use pre-prompt screen.
Never gate core app features on accepting tracking.
If user denies, do not read IDFA - ad SDKs must run in non-personalized mode.
iOS infoPlist usage descriptions must describe current feature:
infoPlist: { NSCameraUsageDescription: "ShopApp uses the camera to scan product barcodes.", NSPhotoLibraryUsageDescription: "ShopApp lets you choose a photo for your profile.", NSLocationWhenInUseUsageDescription: "ShopApp uses your location to find nearby stores.",}
Android dangerous permissions - request in context; Data safety must mention location if expo-location runs.