Try it free

Concepts for mobile frontends

  • Latest Dynatrace
  • Explanation

This page explains the key concepts for mobile frontends in RUM. Understanding these concepts helps you analyze user behavior and application performance in mobile environments.

Application start

Application starts represent the initialization of a mobile application, measuring the time it takes for the app to load and the first view to become visible after being launched by the user.

Application start types

There are three types of app starts, each with different performance characteristics:

  • Cold start: Occurs when the app is launched from a non-running state. This happens, for example, when the app is launched for the first time since the device booted. A cold start involves the complete initialization process, including loading resources, setting up the runtime environment, and initializing the app.

  • Warm start: Encompasses a subset of the operations that take place during a cold start. This can happen if the user backs out of the app but then re-launches it shortly after. The behavior may differ significantly depending on the platform.

  • Hot start: Has lower overhead than a cold or warm start. If the app state still resides in memory, operations such as object initialization, layout inflation, and rendering may be avoided. This occurs when the app is fully running in the background and is brought to the foreground again.

For a complete list of captured data of an app start event, see Semantic Dictionary.

Views and view summaries

In mobile applications, a view represents a screen the user is interacting with. Views are distinct screens or layouts within a mobile app that display specific content or functionality, such as a shopping cart or settings view. The visit of a user to a specific view is aggregated into a view summary event.

View lifecycle

  • The view starts when the app displays a new mobile screen.
  • The view ends when the user navigates away from the screen to a different view.

View instances and view summaries

A view summary event aggregates the following data from a single view visit:

  • User interactions that occurred within the view.
  • Errors encountered during the view.
  • Requests made while the view was active.

View instances are identified by a unique view.identifier, while all instances of the same screen share the same view.name for aggregated analysis. This allows you to analyze both individual view visits and overall performance patterns across all visits to the same view.

For a complete list of captured data of a view summary event, see Semantic Dictionary.

Navigations

A navigation represents the transition between views in a mobile application. These events provide insights into how users move through the app:

  • The navigation event starts when the previous view stops (for example, due to a user touch or automatic trigger).
  • The navigation ends when the next view is started.

Navigation types

Mobile navigations can be triggered in different ways:

  • Navigate: The user manually triggered a navigation via a button touch or by going back.
  • Auto: The transition in the app was triggered automatically (for example, due to a timeout or automatic screen change).
  • API: The mobile app developer manually called startView to signal a new view which implicitly creates a navigation event.

User interactions

Early Access

User interactions represent activities performed by users on the mobile application's frontend. You can enable capturing of user interactions as described in Configure user interaction capturing for mobile frontends.

Currently, the following user interactions are supported for mobile:

  • Touches
  • Gestures
  • Device rotations

Unlike RUM Classic, interactions in RUM can be captured independently of any request or user action.

For a complete list of user interactions, see Semantic Dictionary.

User actions

A user action represents a significant operation within the mobile frontend. It groups the requests, navigations, and errors that result from a single user interaction, giving you a complete picture of what happened and how long it took. For example, a user action starts when a user presses a button and ends when the resulting network call completes and a new screen is displayed.

How user actions start

A user action starts with one of the following events:

  • User interaction: A touch on a UI element that has a registered action handler (for example, a button or a list item), followed within 100 ms by a web request or a view navigation, triggers an automatic user action. If neither occurs within 100 ms, no user action is created, because a touch alone does not constitute a user action.

  • API call: Created manually using the Dynatrace API. This is useful for tracking custom workflows that are not captured automatically, such as multi-step processes or interactions that the agent cannot instrument. For details, see Customize mobile frontend monitoring using the RUM APIs.

What a user action groups

While a user action is active, the agent links the events that result from the triggering interaction, so you can analyze them together and understand the full impact of a single interaction:

  • Web requests: Every web request triggered while the user action is active is grouped under it. These requests determine when the action settles and how long it stays active.
  • Errors: Errors and exceptions that occur during the user action are linked to it, so you can see which interactions led to failures.
  • View navigation: If the interaction leads to a new screen, the resulting navigation is associated with the user action. This sets the action's type to a view change. Navigations extend the user action but are not used to group requests.

For API user actions, you can also attach event properties to capture additional business context. For details, see Customize mobile frontend monitoring using the RUM APIs.

How user actions end

The user action stays active as long as there is ongoing activity. The agent extends the user action while web requests are in flight or navigations occur, applying a 100 ms inactivity window after the last request or navigation completes.

A user action ends when one of the following conditions is met:

  • Completed: No web request or view navigation occurs within 100 ms, measured after the last one (web request or view navigation). The user action closes and is reported. This is the normal completion path for automatic user actions.
  • App backgrounded: The app moves to the background. The user action is closed immediately.
  • Interrupted: A new user interaction with an action handler occurs, or a new API user action is created. The previous user action is interrupted and linked to the new one.
  • Maximum duration reached: The user action reaches the maximum duration of 50 seconds and is closed automatically.
  • API close: You explicitly close a user action created through the API by calling its complete method. The user action ends at the time of the call.

Captured data

Each user action event captures the following information:

  • Name: For automatic user actions, the name follows the template {interaction type} on {element name} on {view name}, for example, touch on Checkout on CartActivity. For API user actions, the name is the custom name you provide.
  • Type: Whether the action resulted in a view change, stayed on the same view, or was created via the API.
    • Automatic user actions have either type same_view or navigation.
    • Manually created user actions always have the type api.
  • Triggering interaction: For automatic user actions, the name and type of the UI element that responded to the touch, and the name of the screen where it occurred.
  • Duration: The time from the start to the end of the user action, covering all network activity it triggers.
  • Request, navigation, and error counts: The number of web requests, view navigations, and errors that occurred while the user action was active.
  • Completion reason: Why the user action ended, for example, normal completion, timeout, app backgrounded, or interrupted by another action.

Each related event (user interaction, navigation, error, or request) carries the user_action.instance_id of the user action, which links it to that user action.

The UI element name is derived from the accessible label or identifier of the UI element and may contain user-provided text, such as a button label. The same privacy masking rules that apply to the triggering user interaction event also apply to the element name in the user action. The screen name is derived from source-code class names and is not subject to masking.

For a complete list of captured data of a user action event, see Semantic Dictionary.

Errors

RUM captures various error types that can occur in mobile applications.

Crashes

A crash is a fatal issue that terminates the application. When your mobile application crashes, Dynatrace automatically reports a crash event. The crash report includes:

  • The occurrence time.
  • The full stack trace of the exception.
  • Device information.
  • Session context.

Crashes are grouped by similarity of the stack trace and occurrence in the source code, making it easier to track issues across different versions of your application.

For a complete list of captured data of a crash event, see Semantic Dictionary.

Application Not Responding (ANR)

ANR events are critical errors specific to mobile applications where the app's main thread becomes unresponsive and cannot process user input events or update the UI. This forces the app to be closed, causing frustration for users.

ANR events are automatically captured by RUM. These events are sent only if the user restarts the mobile app within 10 minutes. ANR errors are always fatal (error.is_fatal = true) because the non-responsive app resulted in a fatal exit.

For a complete list of captured data of an application not responding event, see Semantic Dictionary.

Related topics

  • RUM frontends
  • Data model of RUM
Related tags
Digital Experience