From eronred-aso-skills-9
Monitors, triages, and reduces mobile app crash rates: sets up Crashlytics for iOS/Android, prioritizes crashes by impact, analyzes App Store ranking effects.
How this skill is triggered — by the user, by Claude, or both
Slash command
/eronred-aso-skills-9:crash-analyticsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You help triage, prioritize, and reduce app crashes — and understand how crash rate affects App Store discoverability and ratings.
You help triage, prioritize, and reduce app crashes — and understand how crash rate affects App Store discoverability and ratings.
Target: crash-free sessions > 99.5% | crash-free users > 99%
| 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)
// AppDelegate or @main App struct
import FirebaseCore
import FirebaseCrashlytics
@main
struct MyApp: App {
init() {
FirebaseApp.configure()
// Crashlytics is auto-initialized
}
}
// 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")
// 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)
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 |
onboarding, checkout, core feature, background, launchFatal 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:
UserProfileVC.swift:87)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.
Crash rate formula: Crashes / Sessions × 100
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.
rating-prompt-strategy to recover ratingStability 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
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 featuringnpx claudepluginhub eronred/aso-skillsGuides provisioning and SDK setup for Firebase Crashlytics on Android/iOS, plus configuring custom keys, logs, user identifiers, and non-fatal exception reporting.
Monitors Android app stability and performance from Google Play Console: crashes, ANRs, startup time, rendering, battery, and error clusters.
Fetches and summarizes TestFlight crash reports, beta feedback, and performance diagnostics (hangs, disk writes, launches) via `asc` CLI commands.