Respectlytics Respect lytics
Menu
Flutter No ATT prompt

How to add Flutter analytics with no ATT prompt

Apple's App Tracking Transparency (ATT) prompt is the most-debated UX wart in iOS apps — required by Apple when an app collects identifiers that link a user across apps (most commonly the IDFA), but a measurable conversion-rate killer in every app that has tested it. Respectlytics's Flutter SDK does not trigger ATT: it does not call ATTrackingManager.requestTrackingAuthorization, does not read the IDFA, and does not require an NSUserTrackingUsageDescription key in your Info.plist. The prompt simply doesn't appear. Below: how to verify, what to leave OUT of your Info.plist, and the FAQ.

Install the Flutter SDK

yaml Respectlytics
# pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  respectlytics_flutter: ^3.0.0

Pure Dart — no platform channels for analytics. Same code on every platform Flutter compiles to (iOS, Android, web, macOS, Windows, Linux). On web, events are sent via the REST API; mobile platforms use the same path.

Initialize Respectlytics in Flutter

dart Respectlytics
import 'package:flutter/material.dart';
import 'package:respectlytics_flutter/respectlytics_flutter.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Respectlytics.configure(appKey: '<YOUR_APP_KEY>');
  runApp(const MyApp());
}

Initialize in main() after WidgetsFlutterBinding.ensureInitialized() and before runApp(). The future completes immediately on configuration; events queued before completion are flushed once the network is available.

Privacy & implementation notes

The ATT prompt's denial rate ranges 50–80% depending on category and phrasing — gaming and ad-heavy apps see the highest denials. The product consequence is that any analytics tied to IDFA effectively works for the minority who consent. Respectlytics produces the same data for 100% of users because it does not depend on IDFA at all.

App Review historical pattern: apps that ship NSUserTrackingUsageDescription in Info.plist while their code never actually calls ATTrackingManager.requestTrackingAuthorization are flagged as inconsistent — the key implies tracking that the code doesn't perform. Remove the key when you remove tracking; don't leave it as a relic.

The Flutter SDK is pure Dart. No MethodChannel, no platform-specific iOS or Android plugin code. The same code runs on every platform Flutter supports — including web and desktop targets. This eliminates one common audit surface ("what's the Android implementation doing?").

Always initialize after WidgetsFlutterBinding.ensureInitialized() and before runApp(). If you skip the binding step, the configure call will throw on platforms that need a binding for asynchronous I/O. The SDK documentation example uses this pattern by default.

How this compares to other analytics SDKs

ATT prompt behaviourFirebase AnalyticsMixpanelAppsFlyerRespectlytics
Triggers ATT prompt by defaultYes (when IDFA enabled)Yes (optional)Yes (always)No
Requires NSUserTrackingUsageDescriptionYes (when collecting IDFA)ConditionalYesNo
Behavior when user denies ATTLimited trackingLimited trackingRestricted IDFAIdentical (ATT not in path)
Conversion-rate impact of promptNegative (~10–30% denial)NegativeNegativeNo prompt

Frequently asked questions

Should we still implement ATT for other reasons?

Only if another SDK in your app needs it — e.g., an Ads SDK that uses the IDFA. If you remove all such SDKs, you can also remove the NSUserTrackingUsageDescription key. The presence of the key without a matching requestTrackingAuthorization call is itself a signal Apple considers.

What about post-install attribution from ad campaigns?

Use Apple's SKAdNetwork (deterministic, deterministic install attribution without IDFA) or AdAttributionKit (iOS 17.4+). Both work without ATT. These are not Respectlytics features — they're Apple frameworks your app implements directly. Respectlytics doesn't ingest install attribution.

Will the App Store reject my app if there's no ATT prompt?

No, as long as no SDK in your app actually tracks across other apps. Apps that genuinely don't track are not required to show ATT. The risk is the inverse: showing the prompt without backing the choice in code (or vice versa) gets flagged. Respectlytics's posture is consistent — no tracking, no prompt.

Does Respectlytics affect ATT prompt timing for OTHER SDKs in our app?

No. Each SDK calls requestTrackingAuthorization independently. Respectlytics's silent-on-ATT behavior doesn't influence other SDKs. If Firebase, AdMob, or Branch in the same app needs ATT, those SDKs still trigger the prompt according to their own logic.

Related guides

Track what matters. Collect nothing you don't.

Five-field event schema, RAM-only event queue, no IDFA, no AAID, no persistent user IDs. Helps developers avoid collecting personal data in the first place.