An app session is a single, continuous period of user activity — from the moment the app is opened (foregrounded) until it's closed or backgrounded beyond an inactivity timeout. It's the atomic event of engagement analytics: nearly every behavioral KPI ([[session-length]], [[session-frequency]], time-in-app, [[stickiness]]) is computed by aggregating sessions.
How a session is bounded
A session starts on foreground and ends when the app is backgrounded for longer than an inactivity timeout — the industry-standard default is 30 seconds. If the user briefly leaves (checks a notification) and returns within the timeout, it counts as the same session; longer than that, the next foreground starts a new session. This timeout is a configurable definition, and that's the catch: change the timeout and your session counts, average [[session-length]], and sessions-per-user all move — so it must be held constant for trends to be comparable.
Why the session is foundational. Sessions aggregate upward into the metrics teams actually steer on: sessions per active user (frequency), average duration (length), and total time-in-app. Together with active-user counts they feed [[dau-mau]] stickiness and [[retention]] analysis. Because everything depends on the session definition, mature analytics setups document their timeout and never change it casually — a definition change silently rewrites historical engagement trends.