AI-powered crash analysis is now available on all plans — including Free.Read the crash analysis guide

How to Reduce Your App Crash Rate Below 0.1%

NFNourin Mahfuj Finick··8 min read

A 1% crash rate sounds small. It isn't. For an app with 50,000 daily active users, 1% means 500 people hitting a crash every single day. That's 500 negative reviews waiting to be written. App Store quality guidelines flag apps with crash rates above 2%, and Google Play can deprioritize apps with poor stability signals.


The industry benchmark for a stable app is under 0.1% crash-free session rate degradation — meaning 99.9% of sessions complete without a fatal crash. Here's how to get there.


Step 1: Measure Before You Fix


You can't reduce what you don't measure. Before anything else, establish a baseline.


A crash-free session rate is the percentage of sessions that complete without a fatal crash. If you have 10,000 sessions per day and 50 end in a crash, your crash-free rate is 99.5%.


Track crash rate by:

  • App version (did a recent release make things worse?)
  • Platform (iOS vs Android)
  • OS version (is it specific to Android 10?)
  • Device model (is it a Samsung-specific issue?)

// Tag your sessions for better segmentation
BugsPulse.setTag('app_version', '2.4.1');
BugsPulse.setTag('build_number', '241');

Step 2: Triage by User Impact, Not Count


Crash count alone is misleading. A crash that happens 500 times to 2 users (an automated test account hitting a bug) is less urgent than a crash happening 50 times across 50 different users.


Sort your crash groups by unique users affected over the last 7 days. The top 5 by this metric are your first targets.


Step 3: Fix Crashes in Priority Order


Work your crash backlog by impact tier:


Tier 1 (fix this week): Any crash affecting >1% of your daily active users. These are almost certainly caused by common flows — checkout, login, app launch.


Tier 2 (fix this sprint): Crashes affecting 0.1–1% of users. Real but not emergency.


Tier 3 (fix when you touch that code): Crashes affecting <0.1% of users, often device-specific or rare-flow issues.


Step 4: Address the Top Crash Categories


Most React Native and Flutter crash backlogs cluster into a small number of root causes:


Null/undefined access (React Native)

// 90% of these are fixed with optional chaining
const name = user?.profile?.name ?? 'Unknown';
const price = cart?.items?.[0]?.price ?? 0;

Null check operator on null (Flutter)

// Replace ! with null-safe alternatives
final name = user?.name ?? 'Unknown';
final price = cart?.items.firstOrNull?.price ?? 0.0;

setState after dispose (Flutter)

Future<void> _load() async {
  final data = await api.fetch();
  if (!mounted) return; // always check
  setState(() => _data = data);
}

Unhandled async errors (React Native)

// Wrap all top-level async operations
async function init() {
  try {
    await Promise.all([loadUser(), loadConfig(), loadFeatureFlags()]);
  } catch (error) {
    BugsPulse.captureException(error as Error);
    showErrorScreen();
  }
}

Step 5: Add a Canary Release Process


Don't ship fixes to 100% of users immediately. Use a staged rollout:


1. Ship to 5% of users

2. Monitor crash rate for 24–48 hours

3. If crash rate is flat or improved, expand to 25% → 100%

4. If crash rate gets worse, pause and investigate


Both Google Play and Apple TestFlight support phased rollouts.


Step 6: Prevent Regressions


A crash fixed is only valuable if it stays fixed. Add these to your workflow:


Track crash rate per release — Set an alert if crash rate in a new version exceeds the previous version by >0.1% within 24 hours of rollout.


Write regression tests for your top crashes — Each top crash should have a unit or integration test that would have caught it.


Add an ErrorBoundary (React Native) or runZonedGuarded (Flutter) — Ensure all unhandled errors are captured before they reach the OS crash reporter.


The 0.1% Roadmap


WeekTargetAction
1Baseline measuredAdd crash reporting, establish current rate
2–3Fix top 3 crashesAddress highest user-impact issues
4Deploy + monitorStaged rollout, verify improvement
5–8Fix next 5 crashesWork through Tier 2 backlog
Ongoing<0.1% maintainedCanary releases, alerts, regression tests

The compounding effect is real: fixing the top 3 crashes often cuts your crash rate by 50–70% because a small number of bugs cause the majority of crashes. After that, each subsequent fix has diminishing returns — which is why the last 0.1% requires process (canary releases, monitoring) rather than just code fixes.