LimitedRound 2 is open. Get your first month free, no extra charge.Join the waitlist ›
Fix and resubmit

App Store rejection: Guideline 5.1.2 App Tracking Transparency

TL;DR. Guideline 5.1.2 requires apps that track users across other companies' apps and websites to ask permission first through the App Tracking Transparency framework. Rejections come from accessing the IDFA or using ad and analytics SDKs without showing the prompt. To fix it, request permission with the official ATT API before tracking, and do not gate features on the answer. Apple reviews every resubmission.

What App Store Guideline 5.1.2 says

Guideline 5.1.2 sits in Section 5.1, Privacy, under Data Use and Sharing. It requires that you obtain permission through the App Tracking Transparency framework before you track a user or access their device's advertising identifier. Tracking, in Apple's definition, means linking data collected in your app with data from other companies' apps, websites, or offline properties for advertising or advertising measurement, or sharing that data with data brokers.

Since iOS 14.5, reaching the IDFA requires the user to allow tracking through the ATT prompt. Apple also requires that the choice be free: you cannot block content or features for users who decline, and you cannot offer rewards for opting in. The official text is on the App Store Review Guidelines page, and Apple's user privacy and data use page explains the framework.

Why apps get rejected under 5.1.2

Common triggers:

  • The app uses an advertising, attribution, or analytics SDK that tracks, but never presents the ATT prompt.
  • The app reads the IDFA without first requesting tracking permission.
  • The ATT prompt appears, but a custom dialog or workaround is used instead of Apple's official API.
  • Features, content, or rewards are gated on whether the user allows tracking.
  • The App Privacy details in App Store Connect say the app tracks, but no prompt is shown in the build.

The thread is consent. If the app tracks or can reach the advertising identifier and the user was never asked through ATT, the app does not meet 5.1.2.

How to fix it

  1. Decide whether you actually track. List your SDKs and data flows, and identify anything that links user data across other companies' properties or reaches the IDFA. If you do not need it, removing the tracking SDK removes the requirement.
  2. Request permission with the official API. If you do track, call the AppTrackingTransparency framework to request permission before any tracking begins, and only access the IDFA after the user allows it.
  3. Write a clear purpose string. Provide the NSUserTrackingUsageDescription string that explains, in plain language, what the app does with tracking, since the system shows it in the prompt.
  4. Do not gate or incentivize. Give users who decline the same core experience, and do not offer rewards for allowing tracking.
  5. Match your privacy details. Make sure the App Privacy answers in App Store Connect reflect what the app actually does, then resubmit.

Submitted is not approved. The reviewer checks that the prompt appears and that the behavior matches your privacy details, so the prompt has to be real and correctly placed.

How AppFlight helps

AppFlight generates native iOS apps in Swift and SwiftUI and wires in the integrations you choose, such as PostHog for analytics, so it has the context for whether an app collects data that may count as tracking. When a build needs the App Tracking Transparency prompt, that request lives in the generated Swift, and when Apple returns a 5.1.2 rejection, AppFlight reads the rejection reason, works the fix, for example adding the ATT request and purpose string or removing tracking the app does not need, and resubmits. AppFlight does not guarantee approval. You are responsible for honest privacy disclosures, and Apple reviews every app and every resubmission.

FAQ

What does Guideline 5.1.2 require for tracking?

If your app tracks users across apps and websites owned by other companies, you must request permission through the App Tracking Transparency framework before doing so. Accessing the advertising identifier, the IDFA, or using third-party ad, attribution, or analytics tools that track is generally tracking under Apple's definition.

Why was my app rejected when I do not think I track?

Many ad, attribution, and analytics SDKs track by Apple's definition even if you did not write tracking code yourself. If such an SDK is in the build and no ATT prompt appears, the app can be rejected. Add the prompt, or remove the SDK if you truly do not track.

Can I require users to allow tracking?

No. You cannot gate features behind tracking consent or offer incentives to opt in. Users who decline must get the same core experience, and the ATT prompt must use Apple's official API, not a custom workaround.

Sources

Build this app without opening Xcode.

AppFlight turns a plain-English prompt into a real native iOS app and ships it to the App Store. Round 2 is open: free for your first month.

Join the waitlist