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.

app.json
{
"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.