Frustration-Free Sessions for iOS

This page covers frustration-free sessions score on iOS.

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

  • Frustration-free sessions ≥ 0.94 equates to Excellent performance.
  • Frustration-free sessions ≥ 0.85 and < 0.94 equates to Good performance.
  • Frustration-free sessions ≥ 0.7 and < 0.85 equates to Fair performance.
  • Frustration-free sessions ≥ 0.5 and < 0.7 equates to Poor performance.
  • Frustration-free sessions < 0.5 is considered Unacceptable.
2160

Your performance homepage showing your app's overall frustration-free sessions.

For APM metrics and overall frustration-free sessions metric, 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 Frustration-Free Sessions Metric Calculated?

To calculate this score, Instabug buckets all user sessions into four categories:

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

The overall frustration-free sessions metric is calculated as follow:

  • Total = Satisfying sessions + Tolerable sessions + Frustrating sessions + Crashing sessions
  • Frustration-free sessions = (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 frustration-free sessions, so when its performance changes, the overall frustration-free sessions on the App health page will change accordingly. In other words, it’ll be part of the overall frustration-free sessions 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 frustration-free sessions. 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 frustration-free sessions and will be applied moving forward.

Can You Exclude Some Metrics From the Frustration-Free Sessions?

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 frustration-free sessions by not marking them as key metrics.