App Apdex for iOS

This page covers app apdex score on iOS.

App apdex is an overall score that reflects the quality of your user experience. Apdex score ranges between 0 and 1. The higher the value, the closer you are to satisfying user experience:

  • Apdex score ≥ 0.94 equates to Excellent performance.
  • Apdex score ≥ 0.85 and < 0.94 equates to Good performance.
  • Apdex score ≥ 0.7 and < 0.85 equates to Fair performance.
  • Apdex score ≥ 0.5 and < 0.7 equates to Poor performance.
  • Apdex score < 0.5 is considered Unacceptable.
2160

Your performance homepage showing your app's overall apdex.

For APM metics and overall app Apdex, the following color-coding criteria is applied:


For crash-free rate metrics, the following color-coding criteria is applied:

  • Green: Indicates a crash free rate greater than or equal to 99.5%.
  • Yellow: Indicates a crash free rate less than 99.5% and greater than or equal to 98%.
  • Red: Indicates a crash free rate less than 98%Excellent: 94% and above.

How Is the App Apdex Calculated?

To calculate the app apdex score, Instabug buckets all user sessions into four categories:

  • Crashing sessions
  • Frustrating sessions
  • Tolerable sessions
  • Satisfying sessions

The overall app apdex is calculated as follow:

  • Total = Satisfying sessions + Tolerable sessions + Frustrating sessions + Crashing sessions
  • Apdex score = (Satisfying sessions + 0.5 * Tolerable sessions) / Total

What Is the Session Definition?

A session starts when the user launches the app or brings it to the foreground. It ends when the user moves the app to the background or when the app exits. App exit can be triggered by the user through killing the app or by the OS when the app crashes.


How Does Sessions Bucketing Work?

Any session that ends with a fatal crash or OOM is flagged as a crashing session. Any session that is affected by an App hang or Force restart is flagged as a frustrating session. Otherwise, a bucket is defined based on all the other metrics and occurrences (app launch, app traces, network, and UI hangs) that happened within the session.

📘

Contact [email protected] if you’d like to customize session bucketing for your company.

Let's take an example. During the same session, 5 network calls, 3 screen visits, and 2 app traces occurred. And based on the set target of each, they got flagged as follows:

  • 2 network calls were frustrating
  • 2 network calls were tolerable
  • 1 network call was satisfying
  • 3 screen visits were frustrating
  • 2 app traces were satisfying

Based on the previous breakdown:

  • Frustrating count = 2 + 3 = 5
  • Tolerable count = 2
  • Satisfying count = 1 + 2 = 3
  • Total = 10

Next, we calculate:

  • Frustrating% = 5 / 10 = 50%
  • Tolerable% = 2 / 10 = 20%
  • Satisfying% = 3 / 10 = 30%

Based on the different percentages:

  • Frustrating session if frustrating% ≥ 30%
  • Otherwise, it is a satisfying session if satisfying% ≥ 50%
  • Otherwise, it is a tolerable session

What is a Key Metric and a Non-key Metric?

Marking a trace as a Key Metric indicates that this trace will affect your overall app apdex score, so when its performance changes, the overall apdex score on the App health page will change accordingly. In other words, it’ll be part of the overall app apdex score equation. In this sense, non-marking a trace as a Key Metric won’t affect the overall app apdex score.

Note that by default, app launch, all app traces, network URL patterns, and UI traces are marked as key metrics and included in your app apdex. You can exclude any of them from the list or details page, as highlighted in the screenshots below.

📘

Updating your key metrics doesn't affect the already calculated app apdex and will be applied moving forward.

Can You Exclude Some Metrics From the App Apdex?

Yes, within a session, a lot of captured metrics and occurrences may not be affecting your end-user experience. For example, if you are performing network calls to send usage data for analysis purposes, this isn't affecting your user experience. We recommend excluding them from your app's overall apdex by not marking them as key metrics.