Firebase Crashlytics sends crash and diagnostic data to Google LLC. Crash reports leave the user's device and are processed on Google's servers, so GDPR, CCPA/CPRA, and both app stores require you to disclose it in your privacy policy and store data forms. Generate a full privacy policy with this clause built in →
Does Firebase Crashlytics need a privacy policy disclosure?
Crashlytics is Google's crash-reporting SDK. When your app crashes, or when you log a non-fatal error, it uploads a stack trace plus a snapshot of device state — model, OS version, RAM and storage, orientation, whether the device is rooted or jailbroken — and a randomly generated Crashlytics installation UUID that lets Google de-duplicate reports from the same install. If you use it alongside Google Analytics for Firebase it also attaches automatic breadcrumb logs (recent screen views and events). Any custom keys, custom log messages, or user identifiers you set with setUserID are uploaded too.
That upload is a transfer of personal data to a third party, with Google acting as your data processor under the Firebase Data Processing Terms. Crashlytics is a diagnostics tool, not an advertising or attribution SDK: it does not read the advertising identifier (IDFA or AAID) and Google does not use Crashlytics data to track users across apps, so it does not by itself trigger Apple's App Tracking Transparency prompt or Guideline 5.1.2 tracking rules. It still must be disclosed. Collection is also on by default — Crashlytics starts as soon as the app launches unless you set FirebaseCrashlyticsCollectionEnabled to false or call setCrashlyticsCollectionEnabled(false) and gate it behind user consent.
What data does Firebase Crashlytics collect?
| Data type | Purpose | Linked to the user? | Used for tracking? |
|---|---|---|---|
| Crash stack traces and exception messages | Diagnose and fix crashes | No, unless you attach a user ID | No |
| Device state (model, OS version, RAM/storage, orientation, rooted/jailbroken flag) | Reproduce crash conditions | No | No |
| Crashlytics installation UUID | De-duplicate reports, count affected users | No | No |
| Breadcrumb logs (screen views and events, requires Google Analytics) | Show what happened before the crash | No | No |
| Custom keys and custom logs you set | Developer-added debugging context | Only if you put personal data in them | No |
Custom user ID (setUserID) | Identify which user hit a crash | Yes, if set | No |
The exact list depends on the developer's configuration and enabled features: whether Google Analytics is linked (breadcrumbs), whether you call setUserID, and what you pass into custom keys and log messages. Never put names, email addresses, or access tokens into custom keys or logs.
Copy-paste privacy policy clause for Firebase Crashlytics
Crash and diagnostics reporting (Firebase Crashlytics). This app uses
Firebase Crashlytics, a service provided by Google LLC, to detect, report,
and fix crashes and stability issues. When the app crashes or encounters a
handled error, Crashlytics collects a diagnostic report that may include the
stack trace, the device model and operating system version, memory and
storage state, whether the device is rooted or jailbroken, a randomly
generated Crashlytics installation identifier, and, where enabled, a log of
recent in-app events and any diagnostic keys we attach. This data is
transmitted to and stored by Google as our data processor and is used only
to analyze and improve the stability of this app. It is not used to serve
advertising or to track you across other apps or websites. For more
information see Google's privacy policy at
https://policies.google.com/privacy. You can contact us to request deletion
of crash data associated with your device.
Adapt this to your build: trim the identifier list if you disable Analytics breadcrumbs, add a sentence if you call setUserID, and describe any consent gate you apply. Name your own data-protection contact. You are responsible for making sure the clause matches what your app actually does; this is not legal advice.
App Store "App Privacy" label answers
In App Store Connect, based on Firebase's published privacy manifest for Crashlytics (FirebaseCrashlytics.xcprivacy), declare:
- Diagnostics > Crash Data — purpose App Functionality — Not Linked to the user — Not used to track you.
- Diagnostics > Performance Data — App Functionality — Not Linked — Not used to track.
- Diagnostics > Other Diagnostic Data — App Functionality — Not Linked — Not used to track.
- If you attach a user ID or personal custom keys: also Identifiers > User ID (and any relevant Contact Info), marked Linked to the user.
- Crashlytics ships
NSPrivacyTracking= false; do not check "Used to Track You" for Crashlytics alone.
Google Play Data Safety answers
In the Play Console Data safety form, for Crashlytics declare:
- App info and performance > Crash logs — Collected: Yes — Shared: No — Purpose: App functionality (and Analytics) — user can request deletion.
- App info and performance > Diagnostics — Collected: Yes — Shared: No — Purpose: App functionality.
- Device or other IDs — Collected: Yes (the Crashlytics installation UUID) — Shared: No — Purpose: App functionality — not "processed ephemerally" (reports are stored, about 90 days by default).
- If you set a user ID: Personal info > User IDs — Collected: Yes.
- Google encrypts the data in transit; deletion requests are supported through Firebase.
Firebase Crashlytics-specific gotchas
- Collection is ON by default. If your privacy model requires opt-in consent, disable auto-collection (
FirebaseCrashlyticsCollectionEnabled/setCrashlyticsCollectionEnabled) and enable it only after the user agrees. - Breadcrumb logs only appear when Google Analytics for Firebase is also in the app — adding Analytics later silently expands what Crashlytics uploads.
- Custom keys and custom logs are free text and are not scrubbed — developers routinely leak emails, auth tokens, and URLs with query strings into them.
setUserIDmakes crash data "Linked to the user" on both store forms and creates a deletion obligation; prefer a random pseudonymous ID over an email or account number.- The Crashlytics installation UUID resets on reinstall but persists across app updates; it still counts as a "Device or other ID" on the Play form.
- NDK and native crash captures can include register and memory contents, not just a symbolicated stack — do not assume "it is only a stack trace."
Related
See the sibling clauses for Sentry, Firebase Performance Monitoring, Firebase Cloud Messaging, and OneSignal. To assemble these into one document, use the privacy policy page generator or the Firebase privacy policy generator.