Skip to content
Last9
Book demo

Application Sessions

Analyze user journeys, session duration, and engagement patterns to understand how users navigate through your application.

Applications Sessions

Analyze user journeys, session duration, and engagement patterns to understand how users navigate through your application.

The Sessions tab in Discover > Applications provides detailed insights into user behavior patterns, session duration, and navigation paths. Understand how users interact with your application and identify drop-off points or problematic user flows.

Understanding Sessions and Views

What is a Session?

A session represents a period of continuous user activity. The scoping rules differ by platform:

Web

  • Tab-based: each browser tab creates a separate session, even for the same user
  • Maximum duration: sessions automatically end after 4 hours. If a user is actively browsing when the 4-hour limit is reached, a new session begins automatically
  • Independent tracking: multiple tabs from the same user are tracked as separate sessions

Mobile

  • App-install-based: one session per app install at a time — not per tab. Multiple app launches within the idle window join the same session.
  • Idle timeout: sessions roll over when the app stays backgrounded past the SDK’s idle threshold
  • Maximum duration: sessions also roll over when they exceed the configured max duration, matching web behavior

What is a View?

A view represents a discrete user-facing screen within a session.

Web

  • A view is a page load. Only actual page navigation creates new views — query parameter changes (e.g. /products?category=shoes/products?category=shirts) do not create new views.

Mobile

  • A view is a screen transition: Activity lifecycle on Android, view-controller lifecycle on iOS, NavigatorObserver push on Flutter, React Navigation state change on React Native. Screen name comes from the SDK’s automatic tracking or an explicit startView(name) call.

Accessing Session Analysis

  1. Navigate to Discover > Applications in Last9
  2. Click the Sessions tab
  3. Choose your version and environment version from the top filters
  4. Set your desired time range using the date picker

Session Overview Table

The main interface displays a list of user sessions with key metrics:

  • Session Start Time: when the session began
  • Session ID: unique identifier
  • User: user associated with the session (set via identify())
  • Duration: total time from session start to last activity
  • Views: pages viewed (web) or screens opened (mobile)
  • Views with Errors: count of views that experienced errors
  • First / Last — the entry and exit point of the session:
    • Web: URL path (path attribute)
    • Mobile: screen name (view.name attribute)

This table helps identify long-duration (engaged) sessions, short (bounce) sessions, error-prone sessions, and common entry/exit patterns.

Custom attributes added via L9RUM.spanAttributes() (web) or L9Rum.spanAttributes() (mobile) become available as filters for isolating sessions by organization, workspace, or other business dimensions.

Individual Session Details

Click on any session to view detailed information about the user’s journey:

Session Metadata

Each session provides context appropriate to its platform:

Web

  • Browser: Chrome, Firefox, Safari, etc.
  • Operating System: macOS, Windows, Linux, iOS, Android (browser platform)
  • IP Address: user’s network location
  • Geolocation: country, region, city (when available)
  • Session Duration: total time from first to last page view

Mobile

  • OS: Android / iOS name and version
  • Device: brand and model (e.g. Samsung Galaxy S23, iPhone 15 Pro)
  • App Version: release version the user was on
  • Network Type: WiFi, cellular, offline
  • Session Duration: total time from session start to last activity

Page View Timeline

See the complete user journey with:

  • Timestamp: Exact time of each page view
  • Errors: Number of errors encountered on each page
  • Event Type: View events and navigation patterns

The session detail view provides two filtering tabs for analyzing the timeline:

  • All Views: Shows every page view in the session, including both successful and error views (indicated by the number badge showing total views) Applications Sessions — All Views
  • Views with Errors: Filters to show only the page views that experienced errors (indicated by the number badge showing error count), helping you focus on problematic interactions Applications Sessions — Views with Errors

View Details Panel

Click on any view within a session to see per-view detail.

Web view details

  • View Information: view ID, time spent, query parameters
  • Page Attributes: host, path
  • Browser Attributes: screen width/height, browser name and version, OS platform, touch support, network type, user agent
  • Web Vitals: TTFB, LCP, FCP, CLS (per-view values)

Mobile view (screen) details

  • View Information: view ID, time spent on screen, screen name
  • App Attributes: app version, build ID, installation ID
  • Device Attributes: OS name and version, device brand and model, network type
  • Screen Load Time: duration from navigation intent to first frame (see Performance — Mobile Vitals)

Backend Trace Correlation

Every outgoing HTTP request from the SDK includes a W3C traceparent header so the backend span shares a traceId with the client. The session timeline surfaces these trace links, letting you:

  • Follow requests end-to-end from client to backend services
  • Identify whether delays come from client, network, or backend
  • Verify trace headers are being sent to the correct services

Configuration per platform:

  • Web — enable network.backendCorrelation. See Web RUM SDK — Backend Trace Correlation.
  • MobilenetworkInstrumentation: true is sufficient; traceparent is injected automatically by the OkHttp interceptor (Android), URLProtocol (iOS), fetch/XHR wrapper (React Native), or HttpOverrides (Flutter). Session ID propagation requires enabling baggage — see the Session Correlation doc.

Custom Events in Timeline

Events tracked with L9RUM.addEvent() (web) or L9Rum.addEvent() (mobile) appear in the session timeline alongside views and errors. Events automatically include session and view context, helping you understand how user actions relate to performance and error patterns.

Searchable Event Attributes:

Custom event attributes are fully searchable, enabling you to filter sessions based on specific event data. For example:

  • E-commerce: Filter by attributes['merchant_id'], attributes['cart_value'], or attributes['payment_method']
  • SaaS Applications: Search by attributes['workspace_id'], attributes['feature_flag'], or attributes['subscription_tier']
  • Content Platforms: Query using attributes['content_id'], attributes['category'], or attributes['user_role']

This eliminates the need to emit duplicate log entries for custom event searchability—query span events directly in the RUM interface.

Use the search functionality to filter sessions by:

Path Filtering:

  • Sessions that visited specific pages
  • Entry or exit path patterns
  • Navigation through particular flows

Attribute Filtering:

  • Browser or device type
  • Network conditions
  • Geographic regions (country, city, etc.)
  • Business dimensions via L9RUM.spanAttributes() (tenant, workspace, feature flags)
  • Custom event attributes from L9RUM.addEvent() (e.g., attributes['merchant_id'], attributes['path'], custom business metrics)
  • Session duration ranges
  • Error counts

Time-Based Filtering:

  • Sessions within specific time windows
  • Peak usage periods
  • Post-deployment sessions
  • Maintenance window impacts

Best Practices

  • Track Critical User Journeys: Monitor important conversion flows and business-critical paths
  • Investigate High-Error Sessions: Sessions with multiple errors often reveal systemic issues
  • Analyze Bounce Patterns: Short sessions with single page views might indicate problems
  • Monitor Engagement Metrics: Track average session duration and pages per session trends
  • Correlate with Performance: Compare session quality with Web Vitals performance
  • Regular Pattern Review: Check session patterns weekly for unusual behavior or trends
  • User Experience Validation: Use session data to validate UX design decisions
  • Maintain Context: Refresh L9RUM.spanAttributes() on route changes so filters stay accurate

Troubleshooting

  • Custom events not appearing? Confirm L9RUM.addEvent() is called after SDK initialization and event names are non-empty.
  • Trace links missing? Verify network.backendCorrelation.enabled is true and target APIs accept trace headers (check DevTools for CORS issues).
  • Missing geolocation data? The SDK enriches data when the GeoJS service is reachable. Network restrictions may prevent enrichment.

Please get in touch with us on Discord or Email if you have any questions.