
Crash Analytics
Monitor and triage mobile app crashes with Crashlytics and App Store Connect so you fix what hurts retention, ratings, and ASO rank first.
Overview
Crash Analytics is an agent skill most often used in Operate (also Ship, Launch) that helps solo builders monitor, triage, and reduce mobile app crashes while linking crash rate to App Store ranking and ratings.
Install
npx skills add https://github.com/eronred/aso-skills --skill crash-analyticsWhat is this skill?
- Frames crash rate as an ASO and featuring signal with targets: >99.5% crash-free sessions and >99% crash-free users
- Maps three data sources—Firebase Crashlytics, App Store Connect trends, and Xcode Organizer—for triage and prioritizatio
- Explains how crashes drive 1-star reviews, Day 1 retention loss, and algorithmic ranking penalties
- Covers setup paths including FirebaseCrashlytics via CocoaPods or SPM plus built-in App Store Connect crash metrics
- Pairs with app-analytics for full funnel context while this skill stays crash-specific
- Target crash-free sessions > 99.5%
- Target crash-free users > 99%
- Documents 3 crash data tools: Firebase Crashlytics, App Store Connect, Xcode Organizer
Adoption & trust: 1k installs on skills.sh; 1.5k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You see crashes in Firebase or App Store Connect but do not know which issues to fix first or how much they are hurting retention and store visibility.
Who is it for?
Indie iOS or cross-platform app developers shipping to the App Store who already use or plan Firebase Crashlytics and want crash work tied to ratings and ASO.
Skip if: Web-only or backend-only products with no mobile store binary, or teams that only need marketing analytics without stability triage.
When should I use this skill?
User mentions crash, Crashlytics, crash rate, ANR, app not responding, crash-free sessions or users, symbolication, stability, Firebase crashes, app crashing, or crash reports—or wants to reduce crashes and understand Ap
What do I get? / Deliverables
You leave with prioritized crash fixes aligned to crash-free session targets and a clear picture of ASO and retention risk—after baseline analytics, pair with app-analytics when funnels are still missing.
- Prioritized crash and ANR fix list tied to user impact
- Crash-free session and user targets against current telemetry
- ASO and retention risk notes linking crashes to ratings and featuring
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Crash monitoring and prioritization is ongoing production work—canonical shelf is Operate/errors even though fixes ship in Build/Ship and ranking effects show up in Launch. The skill centers on interpreting crash reports, ANRs, symbolication, and crash-free rates—not general infra scaling or feature iteration.
Where it fits
Before submitting a build, you compare TestFlight crash spikes in Xcode Organizer against your >99.5% crash-free session goal.
After a release, you check whether a rising crash rate in App Store Connect could be suppressing discovery or disqualifying featuring.
Firebase Crashlytics shows a new top fatal; you rank fixes by user impact and first-session retention risk.
You correlate 1-star reviews mentioning crashes with stack traces to close the loop on the worst user-reported failures.
How it compares
Use for crash-specific triage and ASO stability signals—not as a full analytics stack; pair with app-analytics for installation and funnel setup.
Common Questions / FAQ
Who is crash-analytics for?
Solo and indie mobile developers who ship to Apple’s App Store and need to interpret Crashlytics, ANRs, and App Store crash trends without a dedicated SRE team.
When should I use crash-analytics?
Use it in Operate when triaging production crashes or ANRs; in Ship when validating stability before a release; and in Launch when crash rate might affect ASO, featuring eligibility, or review sentiment after an update.
Is crash-analytics safe to install?
Treat it as procedural guidance for your agent—review the Security Audits panel on this Prism page and inspect the skill package before granting network or filesystem access in your environment.
Workflow Chain
Requires first: app analytics
SKILL.md
READMESKILL.md - Crash Analytics
# 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) ```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) ```swift // 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) ```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 1. Sort by **"Impact"** (unique users affected), not frequency 2. Group: `onboarding`, `checkout`, `core feature`, `background`, `launch` 3. Assign P0/P1 to the top 3–5 issues 4. 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:** 1. Open the file and line in Xcode (`UserProfileVC.swift:87`) 2. Check what can be nil at that point 3. Reproduce with the user context (OS version, device, screen) 4. Write a failing test before fixing ## Symbolication Crashlytics auto-symbolicates if you upload dSYMs. If you see unsymbolicated traces: