Session in Mobile Analytics: What It Is, How It’s Measured, and Key Metrics

Author: IT Sectr Published: 2026-04-21 Reading time: 10 min

Session in mobile analytics is a period of continuous user interaction with an app, limited by time. This metric serves as the basis for calculating retention, engagement, and LTV. According to Adjust, 2025, the median session length in apps is 4–7 minutes, but varies greatly by category. Understanding session metrics is critical for evaluating user experience quality.

Key Takeaways

  • Session — a continuous period of user interaction with an app without a long break.
  • Session Duration — a key engagement metric, measured in minutes.
  • Session Interval — shows how often a user returns to the app.
  • iOS and Android define session start and end differently due to differences in the app lifecycle.
  • Session analysis allows segmenting the audience by engagement level and identifying problematic scenarios.

What Is a Session in Mobile Analytics?

A session is a time period during which a user actively interacts with the app. A session starts when the app is opened (or returns from the background) and ends after a period of inactivity or closing.

Different analytics platforms define session boundaries differently. Firebase Analytics considers a session complete after 30 minutes of inactivity, AppsFlyer after 60 minutes, Amplitude after 5 minutes or upon a session_end event. There is no single standard.

Why Sessions Matter

Session-based metrics are the foundation for calculating retention (Retention Rate), engagement depth (Stickiness Ratio), and user distribution by frequency of use (Session Frequency). Without correct session definition, all derived metrics will be inaccurate.

According to Mixpanel (2024), apps that improved Session Duration by 15% saw LTV growth of 22% within a quarter. This is a direct correlation between time in the app and monetization.

How Is a Session Measured?

Session measurement is based on app lifecycle events: open (session_start) and close (session_end). Between them, all user actions are recorded.

kotlin
// Basic session tracker for Android
class SessionTracker {

    private var sessionStart: Long = 0L
    private val SESSION_TIMEOUT = 30 * 60 * 1000L

    fun onAppOpened() {
        sessionStart = System.currentTimeMillis()
        Analytics.logEvent("session_start")
    }

    fun onAppClosed() {
        val duration = System.currentTimeMillis() - sessionStart
        Analytics.logEvent("session_end") {
            param("duration_ms", duration)
        }
    }

    fun isNewSession(lastActive: Long): Boolean {
        return (System.currentTimeMillis() - lastActive) > SESSION_TIMEOUT
    }
}

The code tracks session start and end through system callbacks. The SESSION_TIMEOUT parameter (30 minutes) determines when a return from the background is considered a new session rather than a continuation of the previous one.

Timeout Rules by Platform

PlatformSession TimeoutDetermination Method
Firebase Analytics30 minAutomatic, no customization
Amplitude5 min (default)Configurable via SDK
AppsFlyer60 minFixed interval
Mixpanel30 minConfigurable via minimumSessionDuration option
Adjust60 minAutomatic, tied to lifecycle

The choice of timeout affects metrics: a short timeout (5 min) creates more sessions, a long one (60 min) merges interactions. The key is to set a rule and not change it when comparing periods.

Key Session Metrics

Session analysis relies on four basic metrics. Each reveals a specific aspect of user behavior.

Session Duration

Session Duration — the average time a user spends in the app per visit. For news apps, the norm is 2–4 minutes; for games, 8–15 minutes; for streaming services, 20+ minutes. If Session Duration drops, it signals problems with content or performance.

Session Interval

Session Interval — the time between the end of the previous session and the start of the next one. A short interval (minutes or hours) indicates high engagement. A long interval (days) signals low interest or a utilitarian use case where the app is rarely needed.

Sessions Per User

Sessions Per User over a period (day, week, month) — an indicator of Stickiness. Formula: DAU / MAU (Daily Active Users / Monthly Active Users). A value above 20% is considered good, above 50% — excellent for most app categories.

Session Depth

Session Depth — the number of screens or actions within a single session. It shows how deeply a user explores the app’s functionality. Low depth with high duration indicates navigation problems.

  • Session Duration — time in the app per visit
  • Session Interval — return frequency
  • Sessions Per User — engagement level
  • Session Depth — interaction quality

Session in iOS and Android

Platform differences in the app lifecycle directly affect session definition. iOS and Android handle background states and notifications differently.

Android — Activity Lifecycle

On Android, a session starts when the first Activity’s onStart() is called and ends when the last Activity’s onStop() is called. However, the system may kill the process in the background, falsely ending the session. It is recommended to use Application.ActivityLifecycleCallbacks for reliable tracking.

kotlin
class AnalyticsApp : Application() {

    private var activityReferences = 0

    override fun onCreate() {
        super.onCreate()
        registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
            override fun onActivityStarted(act: Activity) {
                if (++activityReferences == 1) {
                    Analytics.trackSessionStart()
                }
            }
            override fun onActivityStopped(act: Activity) {
                if (--activityReferences == 0) {
                    Analytics.trackSessionEnd()
                }
            }
        })
    }
}

The activityReferences counter determines if the user sees at least one screen. When it reaches 0, the app has gone to the background, and the session is complete.

iOS — UIApplicationDelegate

On iOS, a session is tied to the applicationDidBecomeActive and applicationDidEnterBackground methods. Push notification taps can artificially inflate the session count — this should be accounted for in analytics.

Swift example:

swift
import UIKit

class AppDelegate: UIResponder, UIApplicationDelegate {

    func applicationDidBecomeActive(_ application: UIApplication) {
        Analytics.trackSessionStart()
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        Analytics.trackSessionEnd()
    }
}

Note: on iOS, switching between apps (App Switcher) does not end a session — only going into deep background or a swipe-to-close triggers it.

How to Analyze User Sessions?

Session analysis goes beyond simple counting. Segmentation and cohort analysis reveal engagement patterns that cannot be seen in aggregated data.

Cohort Analysis of Sessions

Group users by install week and look at the average number of sessions in the first 7 days. If the latest install cohort has lower Sessions Per User than older ones, it signals worsening onboarding or traffic quality.

  • Day 0 — install + first session
  • Day 1–3 — activation period (3+ sessions expected)
  • Day 7–30 — habit formation (stable 1–2 sessions per day)
  • Day 30+ — loyal user retention

Session Anomalies: How to Detect Them

Anomalies in session metrics are early indicators of problems. A sudden spike in Short Sessions (under 5 seconds) after a release points to a launch bug. A 30% drop in Session Duration in one day may indicate a server outage or API change. Set up monitoring with thresholds: if the average Session Duration falls more than 2 standard deviations from the 7-day moving average, trigger an alert.

Use version segmentation in session reports. Version 3.2.0 shows 4-minute Session Duration, version 3.2.1 shows 2 minutes. The cause is an onboarding change. Rolling back restores the metric. Without version segmentation, you would see an average drop but not find the root cause.

Segmentation by Session Frequency

Power Users (5+ sessions per day) — your key audience. Casual Users (1–2 sessions per week) — a group for reactivation. Dormant Users (0 sessions in 30 days) — candidates for retargeting or push opt-out.

For each segment, calculate separate metrics: Session Duration for Power Users shows usage depth, while for Casual Users it shows entry barriers. According to Amplitude (2024), apps that personalize content by session segment increase Session Duration by an average of 18% per month.

Using Sessions in Retention Reports

Retention is calculated through sessions: a user is retained on Day N if they had at least one session. However, different products require different definitions. For social networks, a session might be 1 second (just opened to check notifications), while for a streaming service, it might be 15 minutes.

Use Uninstall-sessions as a quality indicator: if after an update the number of short sessions (under 10 seconds) increases, users cannot find the needed functionality. This is an early UX problem signal before uninstalls rise.

Session-Based Traffic Attribution

Link sessions to traffic sources: users from paid channels should have more sessions and longer Session Duration. If organic traffic shows 40% higher Session Duration than paid, there is a targeting quality problem. Session attribution helps optimize acquisition budget.

Frequently Asked Questions

How long should an average session be in a mobile app?

Average session duration depends on the category: games — 8–15 minutes, social media — 5–10 minutes, utilities — 1–3 minutes. The trend matters more: if Session Duration drops by 20% in a month, a UX audit is needed.

Why doesn’t the session end when the app is minimized?

Many analytics SDKs do not fire an end event on minimize — they wait for a timeout. If a user minimizes the app for 1 minute and returns, it counts as one session. Only after the timeout (30–60 min) does a new session begin.

How are sessions related to retention?

A user’s Retention on Day N is calculated as the share of installers who had at least one session that day. If sessions are not tracked correctly, retention will be systematically understated or overstated.

Does background activity affect session counting?

Yes, background activity (music playback, navigation, synchronization) can keep the app in an active state. It is better to separate foreground sessions (user sees the screen) from processor sessions (background work without UI).

What session timeout should I choose for a subscription app?

For subscription services (streaming, fitness, education), a 5–10 minute timeout is recommended. Users often return after a short break — and each pause should count as a new session to avoid distorting Session Duration.

Summary

  • Session — a basic element of mobile analytics, defining the period of user interaction with the app.
  • Session timeout varies from 5 to 60 minutes depending on the platform and SDK settings.
  • Session Duration — an engagement metric; the norm depends on the app category.
  • Session Interval shows return frequency and helps identify utilitarian use cases.
  • iOS and Android require different tracking approaches due to lifecycle differences.
  • Cohort analysis of sessions reveals worsening onboarding or traffic quality.
  • Segmentation by session frequency allows content personalization and increases engagement.

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also