Abrova
☰ Docs menu · Release health (crash-free)

Release health (crash-free)

View as Markdown

Crash-free sessions and crash-free users for each version of your app, how many users are on each version, and sessions per day. Reported by the Flutter, Android, iOS and Next.js SDKs, on by default and free.

What is it?

For each release of your app: the share of sessions that did not crash, the share of users who never had a crash, and how many of your users are on it. The number app stores and Crashlytics call "crash-free".

Where?

Abrova Console → your project → Trace → Releases. Filter by platform, environment, release and time range.

1. Use a recent SDK and set your release#

Release health is on by default in the app SDKs:

SDKFrom version
Flutter0.3.1
Android0.3.0
iOS0.3.0
Next.js (in the browser)0.2.0

Set release to your app's version, so each version gets its own row. Use the same value you use for errors and source maps:

dart
// Flutter
await AbrovaTrace.init(AbrovaTraceConfig(
  apiKey: 'ab_live_your_api_key',
  release: '2.4.0+31',
));

Server SDKs (Node.js, Laravel) do not report sessions: a server has no sessions.

2. What counts as a session and a crash#

Rule
SessionStarts when the app opens, and again when it comes back after 30 minutes or more in the background. In the browser: one per tab, kept across reloads.
Crashed sessionEnds in an uncaught error or a native crash (Android: Java and native crashes; iOS: signals and uncaught exceptions). A native crash is reported at the next launch.
Not a crashA hang (ANR), the user or the system closing the app, an error you catch and report yourself.
BrowserOnly an error from your own code: one your ErrorBoundary catches, or an uncaught error whose script is on your site. Browser extensions and other sites' scripts are left out.
UserOne app install. A user who used the app on two phones counts twice; one who signs in later is still the same user.

3. Read the Releases page#

NumberWhat it says
Crash-free sessionsSessions without a crash, out of all sessions in the range. Green from 99.5 %, amber from 98 %, red below.
Crash-free usersUsers (installs) who had no crash in the range. Lower than the sessions number when a few users crash often.
AdoptionThe share of all users in the range who used this release: how far a new version has spread.
Sessions per daySessions that ended normally, and crashed ones in red.

Each release links to its issues, so you can go from "2.4.0 is at 97 %" straight to what crashes in 2.4.0.

To be told when a new version crashes too often, use Create an alert on the page: an alert rule of type Crash-free sessions, for example below 99 % over 24 hours, by e-mail, a webhook or Abrova Team.

Users affected on an issue#

Each issue also shows Users affected: how many users (app installs) had it in the last 30 days, and for each release the share of that release's users, for example "25 % of users · 5 of 20" on 2.4.0. It counts errors your app SDK sent with its session, so it needs the SDK versions above. A native crash reported at the next launch is not counted there yet.

4. What is sent#

For each session the SDK sends a random install id made by the SDK on the first launch (never a device id, an advertising id or the Android id), a random session id, the start time, the release, the environment, the platform and the user id you set. Reports that cannot be sent while offline are kept on the device and sent later.

5. Turn it off#

SDKOption
FlutterAbrovaTraceConfig(enableReleaseHealth: false)
AndroidAbrovaTraceConfig.Builder(apiKey).enableReleaseHealth(false)
iOSAbrovaTraceConfig(apiKey: …, enableReleaseHealth: false)
Next.jsAbrovaTrace.init({ …, enableReleaseHealth: false })
Free.

Sessions are not counted toward your plan and cost nothing. Totals are kept for 90 days.

Was this page helpful?
Report a problem

Last updated: 14 Nov 2026