App Tracking Transparency
Auto-Enabled with Adjust
ATT is automatically enabled when you select Adjust integration during project setup. This ensures proper tracking permission handling before Adjust initializes.
Starting with iOS 14.5, apps must ask users for permission to track them across apps and websites owned by other companies.
Configuration
ATT configuration is set in your app.json file under the iOS infoPlist field.
This configures the permission dialog message shown to users.
{
"expo": {
"ios": {
"infoPlist": {
"NSUserTrackingUsageDescription": "This identifier will be used to deliver personalized ads to you."
}
}
}
}Customize the Message
Apple reviews the tracking permission message. Make sure it clearly explains why you need tracking permission. Generic or misleading messages may cause app rejection.
Initialization Order
When both ATT and Adjust are enabled, ATT permissions are requested before Adjust initializes. This ensures Adjust receives the correct tracking authorization status.
// SDK initialization order (handled automatically)
if (Platform.OS === 'ios') {
// 1. Request ATT permissions first
const { status } = await requestTrackingPermissionsAsync();
// 2. Then initialize Adjust with the correct status
adjustService.initialize();
}Usage
The ATT store manages permission state and can be accessed throughout your app:
import { useATTStore } from '@/store/att.store';
function MyComponent() {
const { status, requestPermissions } = useATTStore();
// status: 'undetermined' | 'denied' | 'authorized' | 'restricted'
}iOS Only
ATT is an iOS-only feature. On Android, tracking permissions work differently and don't require explicit user consent in the same way.