PluginBench
Skill
Review
Audit score 70

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
Prerequisites
  • 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
Claude Code
Cursor
Windsurf
Cline

How to use crash-analytics

  1. 1.Add FirebaseCrashlytics to your iOS (Swift) or Android (Kotlin) project via CocoaPods, SPM, or Gradle
  2. 2.Initialize Firebase in your app's entry point (AppDelegate or @main App struct)
  3. 3.Log non-fatal errors using Crashlytics.crashlytics().record(error:) and set custom context keys (user_id, current_screen)
  4. 4.Access the Crashlytics dashboard to view real-time crashes, ANRs, and symbolicated stack traces
  5. 5.Sort crashes by Impact (unique users affected) and assign P0/P1 priority to top issues using the triage framework
  6. 6.Set a velocity alert in Crashlytics for any issue affecting >0.5% of users
  7. 7.Monitor crash-free sessions and crash-free users in App Store Connect or Firebase Console against targets
  8. 8.Use phased releases (iOS: 7-day rollout; Android: managed publishing) and pause if crash rate increases >0.2% at any phase

Use cases

Good for
  • 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
Who it's for
  • 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

What's the difference between Firebase Crashlytics and App Store Connect crash data?

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.

How do I fix unsymbolicated crash reports?

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.

What crash-free session rate should I target?

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.

How do I prioritize which crashes to fix first?

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.

What should I do if a phased release shows a crash spike?

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

ToolWhat it providesSetup
Firebase CrashlyticsReal-time crashes, ANRs, symbolicated stack tracesAdd FirebaseCrashlytics pod/SPM package
App Store ConnectCrash rate trend, crashes per sessionBuilt-in, no code needed
Xcode OrganizerAggregated crash logs from TestFlight + App StoreXcode → Window → Organizer → Crashes
MetricKitOn-device diagnostics, hang rate, launch timeiOS 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

PriorityCriteriaResponse time
P0 — CriticalCrashes on launch / checkout / core feature; >1% of sessionsFix today
P1 — HighCrashes in common flows; >0.1% of sessionsFix this release
P2 — MediumEdge case crashes; <0.1% of sessionsFix next release
P3 — LowRare, non-blocking crashes; <0.01% of sessionsBacklog

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:

# 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

  1. Identify the app version where crash-related 1-stars appeared
  2. Fix the crash
  3. Reply to each crash-related review: "Fixed in version X.X — please update"
  4. After update ships, use rating-prompt-strategy to 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 piece
  • rating-prompt-strategy — Recover rating after fixing crash-driven 1-stars
  • review-management — Respond to crash-related reviews
  • retention-optimization — Crashes on Day 1 destroy retention metrics
  • app-store-featured — Crash rate > 2% disqualifies editorial featuring