Back to all articles

Keeping Crash-Free Sessions Above 99 %: Our Real-World Playbook with Crashlytics & Sentry

Published on January 14, 2025

App MaintenanceMobile MonitoringCrashlyticsSentryiOSAndroidDevOps
Keeping Crash-Free Sessions Above 99 %: Our Real-World Playbook with Crashlytics & Sentry

Keeping Crash-Free Sessions > 99 %: Our Playbook with Crashlytics + Sentry

A single crash can nudge a five-star app to four-point-something—and bump you down the App Store or Google Play rankings. At THE USEFUL APPS we treat stability as a feature; every client retainer includes a guarantee that crash-free sessions stay above 99 %.

Below you'll find the exact monitoring, triage, and release loop we've refined while maintaining apps like RouteMate and PHNews. Pairing Firebase Crashlytics (for mobile-first signal) with Sentry (for full-stack visibility) gives us near-real-time insight without drowning our devs in alert fatigue.

Table of Contents

  1. Why 99 % Isn't Just a Vanity Metric
  2. Our Two-Layer Monitoring Toolkit
  3. Instrumentation Checklist (iOS, Android & Flutter)
  4. Alert Routing: Noise ⟶ Signal
  5. Release Annotation & Regression Hunting
  6. Hot-Patch Workflow (24-Hour Fix Pledge)
  7. Maintenance Retainer Tie-In
  8. Sentry vs. Crashlytics: Which Handles What?
  9. Security & PII Considerations
  10. Key Metrics We Track
  11. Conclusion

TL;DR

  1. Instrument everything (Crashlytics SDK + Sentry mobile & back-end SDKs).
  2. Route alerts through a single Slack channel with severity filters.
  3. Annotate releases so we can bisect instantly.
  4. Hot-patch critical issues via feature flags; ship store updates within 24 h.
  5. Close the loop by feeding crash metrics into sprint retros.

1. Why 99 % Isn't Just a Vanity Metric

Google's internal research shows a direct correlation between crash rate and uninstalls , while Apple's ranking algorithm quietly penalises apps with high "User Terminated" signals. Falling from 99 % to 97 % sounds minor—but if you have 100 k daily sessions, that's 2 000 crashes per day.

Keeping the number above 99 %:

  • Protects your App Store rating
  • Reduces churn (RouteMate saw a 3 % retention lift after we fixed a background-fetch crash)
  • Boosts conversion in paid campaigns (nobody installs a 3.8-star app)

2. Our Two-Layer Monitoring Toolkit

Layer Tool Why we use it
Device-side https://firebase.google.com/docs/crashlytics Best-in-class grouping, real-time alerts within 5 s
Service / API https://sentry.io/ Tracks crashes, slow queries, and JS errors that still surface as "app issues" to users

Crashlytics handles native stack traces across Swift, Kotlin, Flutter, and React Native. Sentry handles our Node, Python, or Go back-ends plus any React in webviews. Together, they give us a single view from tap to database write.


3. Instrumentation Checklist (iOS, Android & Flutter)

Platform Key integration steps
Swift Add Firebase/Crashlytics via Swift Package Manager, enable generate-debug-symbols in Xcode, upload dSYMs in CI.
Kotlin/Java Add Gradle plugin com.google.firebase.crashlytics, enable the new ND-K stacktrace uploader.
Flutter Use flutterfire CLI, plus firebase_crashlytics plugin > 3.0; run flutter build with --split-debug-info for IOS & Android mapping.
Hybrid webviews Inject Sentry JavaScript SDK so web errors link back to native sessions.

We commit a monitoring.md file in every repo documenting SDK versions, manual uploads, and DSNs. That doc lives next to the CI config so future engineers see the full picture.


4. Alert Routing: Noise ⟶ Signal

Raw Crashlytics alerts = chaos. We pipe both Crashlytics and Sentry through AWS SNS ➔ Slack with opinionated filters:

  1. Blocklisted: Known-benign Tesla BLE failure? Ignore.
  2. Critical: New crash > 0.1 % sessions within one hour -> page engineer on duty.
  3. Moderate: New crash group with < 0.1 % sessions -> Slack thread.

This reduces false positives by ~70 % compared to default email alerts.


5. Release Annotation & Regression Hunting

In both tools we tag every CI build with:

  • Git SHA
  • Semantic app version
  • Feature flag bundle
  • Jira sprint ID

Crashlytics then shows "First seen in 2.13.0 (Build #231)" so PMs can bisect instantly. Sentry's Release Health dashboard tracks crash-free sessions per build , highlighting regressions we might have missed.


6. Hot-Patch Workflow (24-Hour Fix Pledge)

When a critical crash surfaces:

Hour Action
0–1 h Engineer triages, links Jira ticket, sets severity.
< 2 h If flag-guarded code, disable via Firebase Remote Config.
< 6 h Patch branch, automated tests, internal TestFlight build.
< 24 h Submit to App Store + Google Play (expedited review if needed).

Our RouteMate engagement once hit a nasty SIGABRT in iOS 17 RC. Flag rollback cut crashes to zero in 90 minutes; the store patch landed next day.


7. Maintenance Retainer Tie-In

This process lives inside every Maintenance & Support plan. Clients know exactly what happens when a spike appears—no awkward "scope" arguments. For details on the tiers, read App Maintenance Strategies for Long-Term Success.


8. Sentry vs. Crashlytics: Which Handles What?

Use Case Crashlytics Sentry
Native Android/iOS crash ✅ (via native SDK)
Flutter/React Native JS error Partial (Flutter only)
Back-end exception
Slow API tracing
Fatal "out of memory" tombstones iOS 17

We keep both, but if you only have budget for one and your stack is 100 % Flutter, Crashlytics alone covers 95 % of pain points.


9. Security & PII Considerations

  • Use Crashlytics data redaction rules to strip email/phone from logs.
  • In Sentry, set sendDefaultPii = false and add beforeSend hook.
  • Ensure DSNs and Google Service Plist files are stored as GitHub Secrets.
  • SOC 2 clients often require 90-day log retention; both tools support that.

10. Key Metrics We Track

Metric Target Tool
Crash-Free Sessions ≥ 99.0 % Crashlytics
Crash-Free Users ≥ 98.5 % Crashlytics
Median time-to-acknowledge ≤ 30 min Slack alerts
Median time-to-fix ≤ 24 h Jira cycle

We pull these into a Monday morning Looker Studio report for each client.


Conclusion

Maintaining > 99 % crash-free sessions isn't magic—it's disciplined instrumentation, fast feedback loops, and the willingness to hot-patch at 3 a.m. Using Crashlytics for native signal and Sentry for end-to-end context, we've helped brands like Skip hold five-star ratings year after year.

Want this playbook applied to your app? Reach out or explore the specifics of our Care, Growth & Scale plans—each one includes the 24-hour fix pledge.

Share this article

Let's turn your app idea into revenue

Schedule a 30-minute strategy call. Walk away with a clear roadmap, ballpark budget, and the next three steps to grow your iOS or Android product.

Illustration of mobile app growth