crash-analytics
appeeky/aso-skills
Monitor, triage, and reduce app crashes to improve stability and App Store ranking.
What is crash-analytics?
Crash Analytics helps you set up crash monitoring with Firebase Crashlytics, prioritize which crashes to fix first based on user impact, and understand how crash rate affects App Store discoverability and ratings. Use this when addressing app stability, crash-free session targets, or crash-driven user reviews.
- Set up Firebase Crashlytics for real-time crash detection and non-fatal error logging on iOS and Android
- Triage crashes by impact using a priority framework (P0–P3) based on frequency, affected users, and business criticality
- Interpret crash reports with symbolicated stack traces, custom context keys, and device/OS metadata
- Monitor crash-free sessions and crash-free users against targets (>99.5% and >99% respectively)
- Use phased releases to catch regressions before full rollout and set velocity alerts for crash spikes
- Respond to crash-driven 1-star reviews with version-specific fixes and rating recovery strategies
How to install crash-analytics
npx skills add https://github.com/appeeky/aso-skills --skill crash-analytics- Firebase project with Crashlytics enabled
- iOS: FirebaseCrashlytics pod or SPM package added to Xcode project
- Android: Firebase Crashlytics dependency in build.gradle
- dSYM upload configured (automatic in most setups; manual upload available via CLI)
- Access to Firebase Console, App Store Connect, or Play Console for monitoring
How to use crash-analytics
- 1.Add FirebaseCrashlytics to your iOS (Swift) or Android (Kotlin) project via CocoaPods, SPM, or Gradle
- 2.Initialize Firebase in your app's entry point (AppDelegate or @main App struct)
- 3.Log non-fatal errors using Crashlytics.crashlytics().record(error:) and set custom context keys (user_id, current_screen)
- 4.Access the Crashlytics dashboard to view real-time crashes, ANRs, and symbolicated stack traces
- 5.Sort crashes by Impact (unique users affected) and assign P0/P1 priority to top issues using the triage framework
- 6.Set a velocity alert in Crashlytics for any issue affecting >0.5% of users
- 7.Monitor crash-free sessions and crash-free users in App Store Connect or Firebase Console against targets
- 8.Use phased releases (iOS: 7-day rollout; Android: managed publishing) and pause if crash rate increases >0.2% at any phase
Use cases
- A mobile team discovers a launch crash affecting 2% of sessions and uses the P0 triage framework to prioritize an emergency hotfix
- An iOS developer uploads dSYMs to Crashlytics to symbolicate stack traces and identify a null pointer exception in UserProfileVC
- A product manager monitors App Store Connect crash trends across releases to detect regressions and pause a phased rollout when crash rate increases >0.2%
- An Android team logs custom keys (user_id, current_screen) to Crashlytics to reproduce and debug crashes in specific user contexts
- A support team replies to crash-related 1-star reviews with the fixed version number and uses rating-prompt-strategy to recover app rating
- iOS and Android developers building production apps
- Mobile product managers tracking stability as an ASO signal
- QA engineers triaging and prioritizing crash reports
- Support teams responding to crash-driven user reviews
- Engineering leads setting crash-free session targets and release gates
crash-analytics FAQ
Firebase Crashlytics provides real-time alerts, searchable stack traces, and custom context keys for debugging. App Store Connect shows aggregated crash rate trends and is useful for validating that a fix reduced crashes across your user base. Use both: Crashlytics for triage and debugging, App Store Connect for trend validation.
Crashlytics auto-symbolicates if dSYMs are uploaded. If traces remain unsymbolicated, manually upload dSYMs using the Firebase CLI: `./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios MyApp.app.dSYM`. For Bitcode builds, download dSYMs from App Store Connect → Activity → Build → dSYMs.
Target >99.5% crash-free sessions and >99% crash-free users. Crash rates above 2% disqualify your app from App Store featuring, and high crash rates directly harm App Store ranking and ratings.
Use the triage framework: Priority = Crash Frequency × Affected Users × User Segment Weight. P0 issues (launch, checkout, core features; >1% of sessions) fix today. P1 (common flows; >0.1%) fix this release. P2/P3 (edge cases; <0.1%) backlog. Sort by Impact (unique users) in the Crashlytics dashboard, not frequency.
Pause the rollout immediately if crash rate increases >0.2% at any phase. Investigate the crash in Crashlytics, fix it, and re-release with a new version number. Use phased releases to catch regressions before they reach 100% of users.
Full instructions (SKILL.md)
Source of truth, from appeeky/aso-skills.
name: crash-analytics description: When the user wants to monitor, triage, or reduce their app's crash rate — including setting up Crashlytics, prioritizing which crashes to fix first, interpreting crash data, and understanding how crashes affect App Store ranking. Use when the user mentions "crash", "crashlytics", "crash rate", "ANR", "app not responding", "crash-free sessions", "crash-free users", "symbolication", "stability", "firebase crashes", "app crashing", or "crash report". For overall analytics setup, see app-analytics. metadata: version: 1.0.0
Crash Analytics
You help triage, prioritize, and reduce app crashes — and understand how crash rate affects App Store discoverability and ratings.
Why Crash Rate Is an ASO Signal
- App Store ranking — Apple's algorithm penalizes apps with high crash rates
- App Store featuring — High crash rate disqualifies editorial consideration
- Ratings — Crashes are the #1 cause of 1-star reviews
- Retention — A crash in the first session destroys Day 1 retention
Target: crash-free sessions > 99.5% | crash-free users > 99%
Tools
| Tool | What it provides | Setup |
|---|---|---|
| Firebase Crashlytics | Real-time crashes, ANRs, symbolicated stack traces | Add FirebaseCrashlytics pod/SPM package |
| App Store Connect | Crash rate trend, crashes per session | Built-in, no code needed |
| Xcode Organizer | Aggregated crash logs from TestFlight + App Store | Xcode → Window → Organizer → Crashes |
| MetricKit | On-device diagnostics, hang rate, launch time | iOS 13+, automatic |
Recommended: Crashlytics (real-time alerts + search) + App Store Connect (trend validation)
Crashlytics Setup
iOS (Swift)
// AppDelegate or @main App struct
import FirebaseCore
import FirebaseCrashlytics
@main
struct MyApp: App {
init() {
FirebaseApp.configure()
// Crashlytics is auto-initialized
}
}
Non-fatal errors (track without crashing)
// Log a non-fatal error
Crashlytics.crashlytics().record(error: error)
// Log a custom key for debugging context
Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue(screenName, forKey: "current_screen")
Android (Kotlin)
// build.gradle (app)
implementation("com.google.firebase:firebase-crashlytics:18.x.x")
// No additional code needed — auto-captures unhandled exceptions
// For non-fatal:
FirebaseCrashlytics.getInstance().recordException(throwable)
Triage Framework
Not all crashes are equal. Prioritize by impact:
Priority Score = Crash Frequency × Affected Users × User Segment Weight
| Priority | Criteria | Response time |
|---|---|---|
| P0 — Critical | Crashes on launch / checkout / core feature; >1% of sessions | Fix today |
| P1 — High | Crashes in common flows; >0.1% of sessions | Fix this release |
| P2 — Medium | Edge case crashes; <0.1% of sessions | Fix next release |
| P3 — Low | Rare, non-blocking crashes; <0.01% of sessions | Backlog |
Crashlytics Dashboard Triage
- Sort by "Impact" (unique users affected), not frequency
- Group:
onboarding,checkout,core feature,background,launch - Assign P0/P1 to the top 3–5 issues
- Set a velocity alert in Crashlytics for any issue affecting >0.5% of users
Reading a Crash Report
Fatal Exception: com.example.NullPointerException
at com.example.UserProfileVC.loadData:87
at com.example.HomeVC.viewDidLoad:45
Keys:
user_id: 12345
current_screen: "home"
app_version: "2.3.1"
os_version: "iOS 17.3"
Steps to debug:
- Open the file and line in Xcode (
UserProfileVC.swift:87) - Check what can be nil at that point
- Reproduce with the user context (OS version, device, screen)
- Write a failing test before fixing
Symbolication
Crashlytics auto-symbolicates if you upload dSYMs. If you see unsymbolicated traces:
# Manually upload dSYMs
./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios MyApp.app.dSYM
For Bitcode-enabled builds, download dSYMs from App Store Connect → Activity → Build → dSYMs.
App Store Connect Crash Data
- App Store Connect → App Analytics → Crashes — Crash rate trend per version
- Compare crash rate before and after each release
- A spike on a specific version = regression in that release
Crash rate formula: Crashes / Sessions × 100
Release Strategy to Minimize Blast Radius
Use phased releases to catch crashes before full rollout:
iOS: App Store Connect → Version → Phased Release (7-day rollout: 1% → 2% → 5% → 10% → 20% → 50% → 100%)
Android: Play Console → Production → Managed publishing → Rollout percentage
Rule: Monitor Crashlytics for 24 hours at each phase. If crash rate increases >0.2%, pause rollout.
Responding to Crash-Driven 1-Star Reviews
- Identify the app version where crash-related 1-stars appeared
- Fix the crash
- Reply to each crash-related review: "Fixed in version X.X — please update"
- After update ships, use
rating-prompt-strategyto recover rating
Output Format
Crash Audit Report
Stability Report — [App Name] v[version] ([period])
Crash-free sessions: [X]% (target: >99.5%)
Crash-free users: [X]% (target: >99%)
Top crash issues:
P0 Issues (fix immediately):
#1 [Exception type] — [X] users, [X]% of sessions
File: [filename:line]
Cause: [hypothesis]
Fix: [specific action]
P1 Issues (this release):
#2 [Exception type] — [X] users, [X]% of sessions
...
Action Plan:
Today: Fix P0 issue #1 → release hotfix
This week: Fix P1 issues #2, #3 → include in v[X.X]
Monitoring: Set velocity alert at 0.5% session threshold
Related Skills
app-analytics— Full analytics stack; Crashlytics is one piecerating-prompt-strategy— Recover rating after fixing crash-driven 1-starsreview-management— Respond to crash-related reviewsretention-optimization— Crashes on Day 1 destroy retention metricsapp-store-featured— Crash rate > 2% disqualifies editorial featuring
Related skills
More from appeeky/aso-skills and the wider catalog.

creator-ugc-marketing
Plan, brief, and measure creator & UGC marketing campaigns for organic installs and paid ad creative.

custom-product-pages
Design and deploy up to 35 Apple Custom Product Pages with variant screenshots, videos, and promo text for different traffic sources.

in-app-events
Plan and optimize App Store In-App Events to drive discovery, re-engagement, and installs without paid media.

keyword-research
Discover and prioritize high-value App Store keywords to boost visibility and downloads.

localization
Expand your app to international markets with localized App Store listings and market-prioritized strategies.

market-movers
Track App Store chart rank changes, identify top gainers/losers, and spot breakout apps entering the top 100.