capacitor-app-tracking-transparency

Capacitor plugin for iOS App Tracking Transparency framework. Request user authorization to access app-related data for tracking.
Why Capacitor App Tracking Transparency?
A simple, free, and lightweight plugin for iOS App Tracking Transparency:
- iOS 14+ compliance - Handle Apple's App Tracking Transparency requirements
- Permission status - Check current authorization status without prompting
- Request permission - Display the native iOS permission dialog
- Cross-platform - Returns
authorized on Android/Web for transparent usage
- Modern package management - Supports both Swift Package Manager (SPM) and CocoaPods (SPM-ready for Capacitor 8)
- Zero dependencies - Minimal footprint, no bloat
Perfect for apps using IDFA, advertising SDKs, analytics tracking, or any feature that tracks users across apps and websites.
Documentation
The most complete doc is available here: https://capgo.app/docs/plugins/app-tracking-transparency/
Compatibility
| v8.*.* | v8.*.* | ✅ |
| v7.*.* | v7.*.* | On demand |
| v6.*.* | v6.*.* | ❌ |
| v5.*.* | v5.*.* | ❌ |
Note: The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.
Install
You can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:
npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins
Then use the following prompt:
Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-app-tracking-transparency` plugin in my project.
If you prefer Manual Setup, install the plugin by running the following commands and follow the platform-specific instructions below:
npm install @capgo/capacitor-app-tracking-transparency
npx cap sync
iOS
Add the NSUserTrackingUsageDescription key to your Info.plist file:
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
The string should explain why you need tracking permission. This message will be displayed to users when requesting permission.
Localizing the Permission Message
To provide localized versions of the tracking permission message, create InfoPlist.strings files for each language:
- Create a
InfoPlist.strings file in your Xcode project
- Add the
NSUserTrackingUsageDescription key with a localized value:
"NSUserTrackingUsageDescription" = "This identifier will be used to deliver personalized ads to you.";
Android
App Tracking Transparency is an iOS-only framework. This plugin returns authorized status on Android to allow transparent cross-platform usage without conditional code.
Web
Returns authorized status on Web for development purposes and transparent cross-platform usage.
API
Capacitor App Tracking Transparency Plugin.
A plugin to request and check user authorization for app tracking
on iOS devices. Uses Apple's App Tracking Transparency framework.
getStatus()
getStatus() => Promise<AppTrackingStatusResponse>
Gets the current tracking authorization status without prompting the user.
Returns: Promise<AppTrackingStatusResponse>
Since: 1.0.0
requestPermission()
requestPermission() => Promise<AppTrackingStatusResponse>
Requests user authorization to access app-related data for tracking.
Displays the native iOS tracking permission dialog.
Note: This method will only show the dialog once. Subsequent calls
will return the stored authorization status without showing the dialog.
Returns: Promise<AppTrackingStatusResponse>
Since: 1.0.0
getPluginVersion()
getPluginVersion() => Promise<{ version: string; }>
Get the native Capacitor plugin version.
Returns: Promise<{ version: string; }>
Since: 1.0.0
Interfaces
AppTrackingStatusResponse
Response object containing the tracking authorization status.
Type Aliases
AppTrackingStatus
Possible values for the tracking authorization status.
authorized: User has authorized access to app-related data for tracking
denied: User has denied access to app-related data for tracking
notDetermined: User has not yet received the authorization request
restricted: Authorization is restricted (e.g., parental controls, MDM)
'authorized' | 'denied' | 'notDetermined' | 'restricted'