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
- Why 99 % Isn't Just a Vanity Metric
- Our Two-Layer Monitoring Toolkit
- Instrumentation Checklist (iOS, Android & Flutter)
- Alert Routing: Noise ⟶ Signal
- Release Annotation & Regression Hunting
- Hot-Patch Workflow (24-Hour Fix Pledge)
- Maintenance Retainer Tie-In
- Sentry vs. Crashlytics: Which Handles What?
- Security & PII Considerations
- Key Metrics We Track
- Conclusion
TL;DR
- Instrument everything (Crashlytics SDK + Sentry mobile & back-end SDKs).
- Route alerts through a single Slack channel with severity filters.
- Annotate releases so we can bisect instantly.
- Hot-patch critical issues via feature flags; ship store updates within 24 h.
- 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:
- Blocklisted: Known-benign Tesla BLE failure? Ignore.
- Critical: New crash > 0.1 % sessions within one hour -> page engineer on duty.
- 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 addbeforeSend
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.