▸Example Branch call (the "before")
import BranchSDK
Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in
// Branch fingerprint + IDFA matching happens here.
if let referringLink = params?["~referring_link"] as? String {
// Route the user based on the deep link...
}
}
Branch.getInstance().userCompletedAction("Paywall Purchase", withState: [
BranchStandardEventTransactionId: orderId,
"revenue": price,
])
Apple's App Tracking Transparency dialog is a measurable conversion-rate killer — denial rates of 50-80% are typical, and the wording is mostly outside your control. If an SDK in your app reads IDFA, ATT is required by Apple's App Review. Removing the SDK that needs it is the cleanest way to also remove the prompt.
☑Remove Branch cleanly
-
1
Remove Branch from your build (
Branch/io.branch.sdk.android:library/react-native-branch/flutter_branch_sdk) -
2
Remove
Branch.getInstance().initSession(...)anduserCompletedAction(...)call sites -
3
Decide what replaces Branch's deep-link routing — Universal Links + App Links are first-party alternatives (no SDK; OS-handled)
-
4
Remove Branch URL schemes from your
Info.plistandAndroidManifest.xml -
5
Delete the Branch app dashboard entry once events stop flowing
⇋Branch vs Respectlytics — no att prompt
| Branch | Respectlytics | |
|---|---|---|
| Triggers ATT prompt on iOS | — see tool note above | No (SDK never calls ATTrackingManager) |
| Reads IDFA | — see tool note above | No |
| Requires NSUserTrackingUsageDescription in Info.plist | Yes (when reading IDFA) | No |
| App Store Privacy Label: Identifiers tier | Triggered | Not triggered by Respectlytics |
| Effect of users denying ATT | Reduced data quality | No effect (no IDFA path) |
❓Frequently asked questions
If we remove the ATT prompt, won't App Store Review reject our app?
No. Apple only requires ATT when an app or its SDKs actually track users across other apps or websites. If you remove the SDK that does that tracking, you should also remove NSUserTrackingUsageDescription from your Info.plist — keeping the key when no code calls ATTrackingManager.requestTrackingAuthorization is itself a flag Apple's review notes.
How do we still attribute installs to ad campaigns without IDFA?
Use Apple SKAdNetwork (and the newer AdAttributionKit on iOS 17.4+). Both are first-party Apple frameworks designed exactly for this — no IDFA, no ATT prompt, deterministic install attribution within Apple's privacy boundary. Your ads platform (Apple Search Ads / Google Ads / Meta) supports them directly.
Does Respectlytics still work if some users have ATT denied in other apps?
Yes — Respectlytics doesn't read IDFA at all, so the ATT state is irrelevant to it. Your Respectlytics data quality is the same for users who denied ATT in other apps as for users who allowed it.
What about the conversion-rate hit from showing ATT?
That goes away when you remove the prompt. Anecdotally teams report a measurable engagement lift on first-session retention after removing ATT prompts that were shipped purely for analytics rather than for ad attribution.