Complete setup guide: See
/docs/integrations/Crashlytics.md in the projectWhat is Crashlytics?
Crash Reports
Automatic crash detection with stack traces
Error Tracking
Non-fatal errors and custom logging
User Privacy
GDPR compliant with user consent toggle
Free Tier
Unlimited reports on Firebase free tier
Step-by-Step Setup
1
Step 1: Go to Firebase Console
Navigate to the Firebase Console and create a new project or select an existing one.
2
Step 2: Name Your Project
Give your Firebase project a name. This will be your crash reporting dashboard for monitoring your iOS app.
3
Step 3: Disable Analytics (Optional)
For now, you can disable Google Analytics. You can always enable it later if needed. Crashlytics works independently.
4
Step 4: Add iOS App
Click Add app and select the iOS platform. This will start the iOS app registration process.
5
Step 5: Register Your App
Enter your iOS bundle identifier. Make sure it matches exactly with your Xcode project bundle ID.
6
Step 6: Download GoogleService-Info.plist
Download the
GoogleService-Info.plist file. Add it to your Xcode project root and make sure it’s added to your target.- ✅ Check “Copy items if needed”
- ✅ Select your app target
7
Step 7: Add Firebase SDK
Add the Firebase SDK to your project. We recommend using Swift Package Manager (SPM) for easier dependency management.
8
Step 8: Add via Swift Package Manager
In Xcode, go to File → Add Packages. Enter the Firebase iOS SDK URL:Select the FirebaseCrashlytics package.
9
Step 9: Add Initialization Code
Add Firebase initialization code to your
App.swift or AppDelegate:10
Step 10: Add Linker Flags
In Build Settings, add
-ObjC to Other Linker Flags. This is required for Firebase to work correctly with Swift.11
Step 11: Add Run Script Phase
Add a new Run Script phase in Build Phases:
- Click + → New Run Script Phase
- Name it “Upload dSYMs to Crashlytics”
- Add the upload script (see Firebase docs)
12
Step 12: Configure Input Files
Add the required input files to the run script phase:
13
Step 13: Complete Run Script Setup
Verify your run script phase is configured correctly with both the script and input files. This ensures crash reports are properly symbolicated.
14
Step 14: Set Debug Information Format
In Build Settings, set Debug Information Format to
DWARF with dSYM File for Release builds. This generates the debug symbols needed for crash reports.15
Step 15: Add Test Crash Code
Add a test crash button to verify Crashlytics is working:
16
Step 16: Test on Real Device
Run your app on a real device (not simulator) and trigger the test crash. Relaunch the app to send the crash report to Firebase.
17
Step 17: Verify in Dashboard
Check your Firebase Crashlytics dashboard. You should see the test crash appear (may take a few minutes).
Remember to remove the test crash code before submitting to the App Store!
How It Works
Automatic Integration
The boilerplate includes a CrashReporter protocol that automatically switches between Firebase Crashlytics and NoOp based on availability:User Privacy
Users control crash reporting in Settings → Share Diagnostics:- ✅ ON → Crashes sent to Firebase
- ❌ OFF → No data sent
- Never sends email addresses
- User has opt-out control
- Clear privacy disclosure
What Gets Tracked
Automatically
- Crash reports with stack traces
- Device info (model, iOS version)
- App version
- User ID (anonymized, no email)
- Session info
Custom (Optional)
- Non-fatal errors
- Custom logs/breadcrumbs
- User attributes (subscription tier, theme, etc.)
Viewing Reports
Firebase Console:- Go to Firebase Console
- Select your project
- Crashlytics (in sidebar)
- View crashes, errors, logs
- Stack traces
- Device information
- User ID
- App version
- Custom logs
Cost
Firebase Free Tier:- ✅ Unlimited crash reports
- ✅ 30-day retention
- ✅ Basic analytics
- ✅ Enough for most apps
- Extended retention
- More features
- Pay as you go (very low cost)
Troubleshooting
Crashes not appearing in dashboard
Crashes not appearing in dashboard
- Make sure you tested on a real device, not simulator
- Relaunch the app after the crash to send the report
- Wait a few minutes for the report to appear
- Check that
GoogleService-Info.plistis in your target
Symbolication not working
Symbolication not working
- Verify dSYM upload script is running
- Check that Debug Information Format is set to
DWARF with dSYM File - Ensure input files are configured correctly
Build errors after adding Firebase
Build errors after adding Firebase
- Make sure
-ObjCis in Other Linker Flags - Clean build folder (⌘⇧K) and rebuild
- Check that you only added FirebaseCrashlytics package
Related Guides
Full Integration Guide
See complete details in
/docs/integrations/Crashlytics.mdFeature Flags
Configure in
Composition/FeatureFlags.swiftSettings Module
User consent toggle
Privacy Policy
Update
Resources/privacy.md to mention crash reportingNeed Help?
The boilerplate handles all the integration automatically. You just need to:- Add
GoogleService-Info.plist - Enable feature flag
- Build and run
/docs/integrations/Crashlytics.md.