Overview
The RUM Browser SDK generates events that have associated telemetry and
attributes. Every RUM event has all of the
default attributes, for example, the URL
of the page (view.url) and user information such as their
device type (device.type) and their country
(geo.country).
There are additional
attributes specific to a given event type. For example, the view.loading_time telemetry is associated
with view events, and the resource.method attribute is
associated with resource events.
| Event Type | Retention | Description |
|---|---|---|
| Session | 30 days | A user session begins when a user starts browsing the web
application. It contains high-level information about the user
(browser, device, geo-location). It aggregates all RUM events
collected during the user journey with a unique
session.id attribute. Note: The
session resets after 15 minutes of inactivity. |
| View | 30 days | A view event is generated each time a user visits a page of the web
application. While the user remains on the same page, resource,
long-task, error, and action events are linked to the related RUM
view with the view.id attribute. |
| Resource | 15 days | A resource event is generated for images, XHR, Fetch, CSS, or JS libraries loaded on a web page. It includes detailed loading timing information. |
| Long Task | 15 days | A long task event is generated for any task in the browser that blocks the main thread for more than 50ms. |
| Error | 30 days | RUM collects every frontend error emitted by the browser. |
| Action | 30 days | RUM action events track user interactions during a user journey and can also be manually sent to monitor custom user actions. |
The following diagram illustrates the RUM event hierarchy:
Default attributes
See a complete list of Standard Attributes for RUM Browser. By default, the attributes are attached to each event type, so you can use them regardless of the RUM event type being queried.
Event-specific attributes
Session attributes
| Attribute | Type | Description |
|---|---|---|
session.time_spent | number (ns) | Duration of the user session. |
session.view.count | number | Count of all views collected for this session. |
session.error.count | number | Count of all errors collected for this session. |
session.resource.count | number | Count of all resources collected for this session. |
session.action.count | number | Count of all actions collected for this session. |
session.long_task.count | number | Count of all long tasks collected for this session. |
Session attributes
| Attribute name | Type | Description |
|---|---|---|
session.id | string | Randomly generated ID for each session. |
session.ip | string | Client IP address. If you want to stop collecting this attribute, change the setting in your application details. |
session.is_active | Boolean | Indicates if the session is currently active. The session ends after 4 hours of activity or 15 minutes of inactivity. |
session.type | string | The type of session: user or synthetics.
Sessions from
Synthetic Monitoring Browser Tests
are excluded from billing. |
session.referrer | string | The URL of the previous web page from which a link to the currently requested page was followed. |
session.initial_view.id | string | The ID of the first RUM view generated by the user. |
session.initial_view.url_host | string | The host part of the URL. |
session.initial_view.url_path | string | The path part of the URL. |
session.initial_view.url_path_group | string | The automatic URL group generated for similar URLs (for example,
/dashboard/? for /dashboard/123 and
/dashboard/456). |
session.initial_view.url_query | object | The query string parts of the URL decomposed as query params key-value attributes. |
session.initial_view.url_scheme | object | The scheme part of the URL. |
session.last_view.id | string | The ID of the last RUM view generated by the user. |
session.last_view.url_host | string | The host part of the URL. |
session.last_view.url_path | string | The path part of the URL. |
session.last_view.url_path_group | string | The automatic URL group generated for similar URLs (for example,
/dashboard/? for /dashboard/123 and
/dashboard/456). |
session.last_view.url_query | object | The query string parts of the URL decomposed as query params key-value attributes. |
session.last_view.url_scheme | object | The scheme part of the URL. |
View timing attributes
Note: View timing telemetry includes time that a page is open in the background.
| Attribute | Type | Description |
|---|---|---|
view.time_spent | number (ns) | Time spent on the current view. |
view.first_byte | number (ns) | Time elapsed until the first byte of the view has been received. |
view.largest_contentful_paint | number (ns) | Time in the page load where the largest DOM object in the viewport (visible on screen) is rendered. |
view.largest_contentful_paint_target_selector | string (CSS selector) | CSS Selector of the element corresponding to the largest contentful paint. |
view.first_input_delay | number (ns) | Time elapsed between a user's first interaction with the page and the browser's response. |
view.first_input_delay_target_selector | string (CSS selector) | CSS selector of the first element the user interacted with. |
view.interaction_to_next_paint | number (ns) | Longest duration between a user's interaction with the page and the next paint. |
view.interaction_to_next_paint_target_selector | string (CSS selector) | CSS selector of the element associated with the longest interaction to the next paint. |
view.cumulative_layout_shift | number | Quantifies unexpected page movement due to dynamically loaded
content (for example, third-party ads) where 0 means
that no shifts are happening. |
view.cumulative_layout_shift_target_selector | string (CSS selector) | CSS selector of the most shifted element contributing to the page CLS. |
view.loading_time | number (ns) | Time until the page is ready and no network request or DOM mutation is currently occurring. More info from Monitoring Page Performance. |
view.first_contentful_paint | number (ns) | Time when the browser first renders any text, image (including background images), non-white canvas, or SVG. For more information about browser rendering, see the w3c definition. |
view.dom_interactive | number (ns) | Time until the parser finishes its work on the main document. More info from the MDN documentation. |
view.dom_content_loaded | number (ns) | Time until the load event is fired and the initial HTML document is completely loaded and parsed, without waiting for non-render blocking stylesheets, images, and subframes to finish loading. More info from the MDN documentation. |
view.dom_complete | number (ns) | Time until the page and all of the subresources are ready. The loading spinner has stopped spinning for the user. More info from the MDN documentation. |
view.load_event | number (ns) | Time until the load event is fired, indicating the page is fully loaded. Usually a trigger for additional application logic. More info from the MDN documentation. |
view.error.count | number | Count of all errors collected for this view. |
view.long_task.count | number | Count of all long tasks collected for this view. |
view.resource.count | number | Count of all resources collected for this view. |
view.action.count | number | Count of all actions collected for this view. |
Resource timing attributes
Detailed network timing data for the loading of an application's resources are collected with the Performance Resource Timing API.
| Attribute | Type | Description |
|---|---|---|
resource.duration | number | Entire time spent loading the resource. |
resource.size | number (bytes) | Resource size. |
resource.connect.duration | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). |
resource.ssl.duration | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this attribute does not appear (connectEnd - secureConnectionStart). |
resource.dns.duration | number (ns) | Time spent resolving the DNS name of the last request (domainLookupEnd - domainLookupStart). |
resource.redirect.duration | number (ns) | Time spent on subsequent HTTP requests (redirectEnd - redirectStart). |
resource.first_byte.duration | number (ns) | Time spent waiting for the first byte of response to be received (responseStart - RequestStart). |
resource.download.duration | number (ns) | Time spent downloading the response (responseEnd - responseStart). |
Resource attributes
| Attribute | Type | Description |
|---|---|---|
resource.type | string | The type of resource being collected (for example, css,
javascript, media, XHR, or
image). |
resource.method | string | The HTTP method (for example POST or GET). |
resource.status_code | number | The response status code (available for fetch/XHR resources only). |
resource.url | string | The resource URL. |
resource.url_host | string | The host part of the URL. |
resource.url_path | string | The path part of the URL. |
resource.url_query | object | The query string parts of the URL decomposed as query params key-value attributes. |
resource.url_scheme | string | The protocol name of the URL (HTTP or HTTPS). |
resource.provider.name | string | The resource provider name. Default is unknown. |
resource.provider.domain | string | The resource provider domain. |
resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
GraphQL attributes
For GraphQL requests configured in allowedGraphQlUrls,
additional metadata is automatically collected. See
Track GraphQL requests
for configuration details.
| Attribute | Type | Description |
|---|---|---|
resource.graphql.operation_type | string | The GraphQL operation type: query,
mutation, or subscription. |
resource.graphql.operation_name | string | The GraphQL operation name, if provided in the request. |
resource.graphql.variables | string | The GraphQL variables sent with the request. |
resource.graphql.payload | string | The GraphQL query (limited to 32 KB, available only if
trackPayload is enabled). |
resource.graphql.errors_count | number | Number of errors returned in the GraphQL response (available only if
trackResponseErrors is enabled). |
resource.graphql.errors | array | Array of GraphQL errors with message,
code, locations, and
path (available only if
trackResponseErrors is enabled). |
Long task timing attributes
| Attribute | Type | Description |
|---|---|---|
long_task.duration | number | Duration of the long task. |
Error attributes
| Attribute | Type | Description |
|---|---|---|
error.source | string | Where the error originates from (for example, console).
See
Error sources. |
error.type | string | The error type (or error code in some cases). |
error.message | string | A concise, human-readable, one-line message explaining the event. |
error.stack | string | The stack trace or complementary information about the error. |
Source errors
Source errors include code-level information about the error. For more information about different error types, see the MDN documentation.
| Attribute | Type | Description |
|---|---|---|
error.type | string | The error type (or error code in some cases). |
Action timing attributes
| Attribute | Type | Description |
|---|---|---|
action.loading_time | number (ns) | The loading time of the action. See how it is calculated in the Tracking User Actions documentation. |
action.long_task.count | number | Count of all long tasks collected for this action. |
action.resource.count | number | Count of all resources collected for this action. |
action.error.count | number | Count of all errors collected for this action. |
Action attributes
| Attribute | Type | Description |
|---|---|---|
action.id | string | UUID of the user action. |
action.type | string | Type of the user action. For
Custom User Actions, it is set to custom. |
action.target.name | string | Element that the user interacted with. Only for automatically collected actions. |
action.name | string | User-friendly name created (for example,
Click on #checkout). For
Custom User Actions, the action name given in the API call. |
Frustration signals fields
| Field | Type | Description |
|---|---|---|
session.frustration.count | number | Count of all frustration signals associated with one session. |
view.frustration.count | number | Count of all frustration signals associated with one view. |
action.frustration.type:dead_click | string | The dead clicks detected by the RUM Browser SDK. |
action.frustration.type:rage_click | string | The rage clicks detected by the RUM Browser SDK. |
action.frustration.type:error_click | string | The error clicks detected by the RUM Browser SDK. |
UTM attributes
| Field | Type | Description |
|---|---|---|
view.url_query.utm_source | string | The parameter in the URL tracking the source of traffic. |
view.url_query.utm_medium | string | The parameter in the URL tracking the channel where the traffic is coming from. |
view.url_query.utm_campaign | string | The parameter in the URL identifying the specific marketing campaign tied to that view. |
view.url_query.utm_content | string | The parameter in the URL identifying the specific element a user clicked within a marketing campaign. |
view.url_query.utm_term | string | The parameter in the URL tracking the keyword a user searched to trigger a given campaign. |
Overview
The RUM Android SDK generates events that have associated attributes. These can have quantifiable values and can be used for measurements related to the event, while others are non-quantifiable values used to slice telemetry values (group by) in analytics.
Every RUM event has all of the
default attributes, for example, the
device type (device.type) and user information such as their
name (usr.name) and their country (geo.country).
There are additional
attributes that are specific to a given event type. For example, the view.time_spent attribute is associated
with "view" events and the resource.method one is
associated with "resource" events.
| Event Type | Retention | Description |
|---|---|---|
| Session | 30 days | A session represents a real user journey on your mobile application.
It begins when the user launches the application, and the session
remains live as long as the user stays active. During the user
journey, all RUM events generated as part of the session will share
the same session.id attribute.
Note: The session resets after 15 minutes of
inactivity. If the application is killed by the OS, you can reset
the session while the application is in the background. |
| View | 30 days | A view represents a unique screen (or screen segment) on your mobile
application. A view starts and stops when the
onActivityResumed and
onActivityPaused callbacks are called through the
ActivityLifecycleCallbacks interface. Each occurrence
is classified as a distinct view. While a user stays on a view, RUM
event attributes (Errors, Resources, and Actions) get attached to
the view with a unique view.id. |
| Resource | 15 days | A resource represents network requests to first-party hosts, APIs,
and third-party providers in your mobile application. All requests
generated during a user session are attached to the view with a
unique resource.id. |
| Error | 30 days | An error represents an exception or crash emitted by the mobile application attached to the view it is generated in. |
| Action | 30 days | An action represents user activity in your mobile application (such
as an application launch, tap, swipe, or back). Each action is
attached with a unique action.id that is also attached
to the view it gets generated in. When an action is being tracked,
other actions within the next 100 ms do not get sent,
unless they are
custom actions. |
| Long Task | 15 days | A long task event is generated for any task in the application that blocks the main thread for more than the specified duration threshold. |
The following diagram illustrates the RUM event hierarchy:
Views instrumentation versus app lifecycle
The Android RUM SDK offers various strategies to automatically track views like Activities, Fragments, or Navigation destinations. You can also track views manually by directly calling the RUM APIs. The precise moment a view starts or stops depends on the chosen tracking strategy or manual instrumentation:
- Activities (
ActivityViewTrackingStrategy): When you rely on this strategy, the SDK automatically starts a RUM view when the Activity enters the foreground (onResume) and stops it when the Activity leaves the foreground (onPause). - Fragments (
FragmentViewTrackingStrategy): EachFragmentin your application is tracked as a separate RUM view. The SDK starts the view in the Fragment'sonResumelifecycle method and stops it inonPause. - Mixed (
MixedViewTrackingStrategy): Activities and Fragments each become distinct RUM views based on their respective lifecycle events (onResumeandonPause). - Navigation (
NavigationViewTrackingStrategy): Each navigation destination is treated as a distinct RUM view, so view boundaries align with navigation events in your graph. - Manual View Tracking: When
tracking views manually
using
GlobalRumMonitorAPIs, the view starts precisely when you call thestartView(...)method and stops when you call thestopView()method.
When the application goes into the background (for example, the user presses the home button or switches apps), RUM automatically stops the current view. Consequently, there is no active view while the app remains in the background. Since RUM's data model requires an active view to correlate and capture events, any events generated in the background are skipped by default. To capture these events instead, see the Track Background Events section.
Note: If you're tracking views manually, you need to configure whether the view should be stopped when the app leaves the foreground.
Default attributes
RUM collects common attributes for all events and attributes specific to each event listed below automatically. You can also choose to enrich your user session data by tracking additional events or by adding custom attributes to default events specific to your application monitoring and business analytics needs.
Common core attributes
| Attribute name | Type | Description |
|---|---|---|
application.id | string | The Datadog application ID. |
application.name | string | The Datadog application name. |
date | integer | Start of the event in milliseconds from epoch. |
service | string | The unified service name for this application used to correlate user sessions. |
type | string | The type of the event (for example, view or
resource). |
Device
The following device-related attributes are attached automatically to all events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
device.architecture | string | The CPU architecture of the device that is reporting the error. |
device.brand | string | The device brand as reported by the device (System User-Agent). |
device.model | string | The device model as reported by the device (System User-Agent). |
device.name | string | The device name as reported by the device (System User-Agent). |
device.type | string | The device type as reported by the device (System User-Agent). |
Connectivity
The following network-related attributes are attached automatically to Resource and Error events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
connectivity.cellular.carrier_name | string | The name of the SIM carrier. |
connectivity.cellular.technology | string | The type of a radio technology used for cellular connection. |
connectivity.interfaces | string | The list of available network interfaces (for example,
bluetooth, cellular,
ethernet, or wifi). |
connectivity.status | string | Status of device network reachability (connected,
not connected, or maybe). |
Operating system
The following OS-related attributes are attached automatically to all events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
os.name | string | The OS name as reported by the device (System User-Agent). |
os.version | string | The OS version as reported by the device (System User-Agent). |
os.version_major | string | The OS version major as reported by the device (System User-Agent). |
Geo-location
The following attributes are related to the geo-location of IP addresses.
Note: If you want to stop collecting geo-location attributes, change the setting in your application details.
| Attribute name | Type | Description |
|---|---|---|
geo.country | string | Name of the country. |
geo.country_iso_code | string | ISO Code of the country (for example, US for the United
States or FR for France). |
geo.country_subdivision | string | Name of the first subdivision level of the country (for example,
California in the United States or the
Sarthe department in France). |
geo.continent_code | string | ISO code of the continent (EU, AS,
NA, AF, AN, SA,
or OC). |
geo.continent | string | Name of the continent (Europe, Australia,
North America, Africa,
Antarctica, South America, or
Oceania). |
geo.city | string | The name of the city (for example, San Francisco,
Paris, or New York). |
Global user attributes
You can enable tracking user info globally to collect and apply user attributes to all RUM events.
| Attribute name | Type | Description |
|---|---|---|
usr.email | string | Email of the user. |
user.id | string | Identifier of the user. |
usr.name | string | Name of the user. |
Event-specific attributes
Telemetry are quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in analytics.
Session attributes
| Attribute | Type | Description |
|---|---|---|
session.action.count | number | Count of all actions collected for this session. |
session.error.count | number | Count of all errors collected for this session. |
session.has_replay | Boolean | Indicates if the session has a captured Session Replay recording attached to visually play the user experience. |
session.id | string | Unique ID of the session. |
session.ip | string | IP address of the session extracted from the TCP connection of the intake. If you want to stop collecting this attribute, change the setting in your application details. |
session.is_active | Boolean | Indicates if the session is currently active. The session ends if a user navigates away from the application or closes the application, and expires after 4 hours of activity or 15 minutes of inactivity. |
session.initial_view.name | string | Name of the initial view of the session. |
session.initial_view.url | string | URL of the initial view of the session. |
session.last_view.url | string | URL of the last view of the session. |
session.last_view.name | string | Name of the last view of the session. |
session.long_task.count | number | Count of all long tasks collected for this session. |
session.resource.count | number | Count of all resources collected for this session. |
session.type | string | Type of the session (user). |
session.time_spent | number (ns) | Time spent on a session. |
session.view.count | number | Count of all views collected for this session. |
session.useragent | string | System user agent info to interpret device info. |
View attributes
RUM action, error, resource, and long task events contain information about the active RUM view event at the time of collection.
| Attribute | Type | Description |
|---|---|---|
view.action.count | number | Count of all actions collected for this view. |
view.error.count | number | Count of all errors collected for this view. |
view.id | string | Unique ID of the initial view corresponding to the event. |
view.interaction_to_next_view_time | number (ns) | Time between the last user interaction in the previous and start of this (current) view. |
view.is_active | Boolean | Indicates whether the view corresponding to this event is considered active. |
view.loading_time | number (ns) | Time it took for the view to load, set by the
addViewLoadingTime(override:) call. |
view.long_task.count | number | Count of all long tasks collected for this view. |
view.name | string | Customizable name of the view corresponding to the event. |
view.network_settled_time | number (ns) | Time it took for a view to be fully loaded with all relevant network calls initiated at the start of the view. |
view.resource.count | number | Count of all resources collected for this view. |
view.time_spent | number (ns) | Time spent on this view. |
view.url | string | Canonical name of the class corresponding to the event. |
Resource attributes
| Attribute | Type | Description |
|---|---|---|
resource.connect.duration | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). |
resource.dns.duration | number (ns) | Time spent resolving the DNS name of the last request (domainLookupEnd - domainLookupStart). |
resource.download.duration | number (ns) | Time spent downloading the response (responseEnd - responseStart). |
resource.duration | number (ns) | Entire time spent loading the resource. |
resource.first_byte.duration | number (ns) | Time spent waiting for the first byte of response to be received (responseStart - requestStart). |
resource.id | string | Unique identifier of the resource. |
resource.method | string | The HTTP method (for example, POST, GET,
PATCH, or DELETE). |
resource.provider.domain | string | The resource provider domain. |
resource.provider.name | string | The resource provider name. Default is unknown. |
resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
resource.redirect.duration | number (ns) | Time spent on subsequent HTTP requests (redirectEnd - redirectStart). |
resource.size | number (bytes) | Resource size. |
resource.ssl.duration | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this attribute does not appear (connectEnd - secureConnectionStart). |
resource.status_code | number | The response status code. |
resource.type | string | The type of resource being collected (for example, xhr,
image, font, css, or
js). |
resource.url | string | The resource URL. |
Error attributes
Frontend errors are collected with Real User Monitoring (RUM). The error message and stack trace are included when available.
| Attribute | Type | Description |
|---|---|---|
error.source | string | Where the error originates from (for example, webview,
logger, or network). |
error.type | string | The error type (or error code in some cases). |
error.message | string | A concise, human-readable one-line message explaining the event. |
error.stack | string | The stack trace or complementary information about the error. |
error.issue_id | string | Unique identifier for the error issue. |
error.category | string | The high-level grouping for the type of error. Possible values are
ANR or Exception |
error.file | string | File where the error happened for the Error Tracking issue. |
error.is_crash | Boolean | Indicates whether the error caused the application to crash. |
Network errors
Network errors include information about failing HTTP requests. The following facets are also collected:
| Attribute | Type | Description |
|---|---|---|
error.resource.status_code | number | The response status code. |
error.resource.method | string | The HTTP method (for example, POST or
GET). |
error.resource.url | string | The resource URL. |
error.resource.provider.name | string | The resource provider name. Default is unknown. |
error.resource.provider.domain | string | The resource provider domain. |
error.resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
Action timing attributes
| Attribute | Type | Description |
|---|---|---|
action.loading_time | number (ns) | The loading time of the action. |
action.long_task.count | number | Count of all long tasks collected for this action. |
action.resource.count | number | Count of all resources collected for this action. |
action.error.count | number | Count of all errors collected for this action. |
Action attributes
| Attribute | Type | Description |
|---|---|---|
action.id | string | UUID of the user action. |
action.type | string | Type of the user action (for example, tap or
application_start). |
action.name | string | Name of the user action. |
action.target.name | string | Element that the user interacted with. Only for automatically collected actions. |
Data storage
Before data is uploaded to Datadog, it is stored in cleartext in your application's cache directory. This cache folder is protected by Android's Application Sandbox, meaning that on most devices, this data can't be read by other applications. However, if the mobile device is rooted, or someone tampers with the Linux kernel, the stored data might become readable.
Data upload
The RUM Android SDK allows you to get the data you need to Datadog while considering user bandwidth impact. The Datadog SDK batches and uploads events as follows:
- On event collected, the Datadog SDK appends uncompressed events to a batch file (using a tag-length-value, or TLV encoding format)
- On upload (when the batch is considered "closed"),
the Datadog SDK:
- Reads the batch and extracts events
- Drops redundant View events in RUM (no optimizations in other tracks)
- Builds payloads specific to each track
- Compresses the payload and sends it
Direct Boot mode support
Note: If your application supports Direct Boot mode, data captured before the device is unlocked won't be captured, since the credential encrypted storage won't be available yet.
Overview
The RUM iOS SDK generates events that have associated telemetry and attributes. Telemetry are quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in analytics.
Every RUM event has all of the
default attributes, for example, the
device type (device.type) and user information such as their
name (usr.name) and their country (geo.country).
There are additional
attributes specific to a given event type. For example, the view.loading_time telemetry is associated
with view events, and the resource.method attribute is
associated with resource events.
| Event Type | Retention | Description |
|---|---|---|
| Session | 30 days | A session represents a real user journey on your mobile application.
It begins when the user launches the application, and the session
remains live as long as the user stays active. During the user
journey, all RUM events generated as part of the session share the
same session.id attribute. Note: The
session resets after 15 minutes of inactivity. If the application is
killed by the OS, you can reset the session while the application is
in the background. |
| View | 30 days | A view represents a unique screen (or screen segment) on your mobile
application. A view starts and stops when the
viewDidAppear(animated:) and
viewDidDisappear(animated:) callbacks on the
UIViewController class are notified. Individual
UIViewControllers are classified as distinct views.
While a user stays on a view, RUM event attributes (Errors,
Resources, Actions) get attached to the view with a unique
view.id. |
| Resource | 15 days | A resource represents network requests to first-party hosts, APIs,
and third-party providers in your mobile application. All requests
generated during a user session are attached to the view with a
unique resource.id. |
| Error | 30 days | An error represents an exception or crash emitted by the mobile application attached to the view it is generated in. |
| Action | 30 days | An action represents user activity in your mobile application (for
example, application launch, tap, swipe, or back). Each action is
attached with a unique action.id attached to the view
it gets generated in. When an action is being tracked, other actions
within the next 100 ms do not get sent, unless they are
custom actions. |
| Long task | 15 days | A long task event is generated for any task in the application that blocks the main thread for more than the specified duration threshold. |
The following diagram illustrates the RUM event hierarchy:
Views instrumentation versus app lifecycle
RUM integrates with UIKit and SwiftUI views and
also provides APIs for manual view tracking. The timing of when a view
starts and ends depends on the type of instrumentation used:
UIKit Views: When
automatically tracking UIKit views
using UIKitRUMViewsPredicate, RUM starts the view at the
viewDidAppear(animated:) event of the
UIViewController lifecycle. The view is stopped at
viewDidDisappear(animated:). SwiftUI Views:
When
tracking SwiftUI views
with the .trackRUMView(name:) view modifier, RUM starts the
view at the onAppear(perform:) callback and stops it at
onDisappear(perform:). Manual View Tracking:
When tracking views manually using RUMMonitor APIs, the view
starts precisely when you call the startView(...) method and
stops when you call the stopView() method.
When the application leaves the foreground, RUM automatically stops the current view, leaving no active view. Since RUM's data model requires an active view to track other events, by default, all events tracked in the background are skipped due to the absence of a view. To capture these events instead, see the Track Background Events.
Note: If you're tracking views manually, you need to decide on your own whether the view should be stopped when the app leaves the foreground.
Default attributes
RUM collects common attributes for all events and attributes specific to each event by default listed below. You can also choose to enrich your user session data with additional events to default events specific to your application monitoring and business analytics needs.
Common core attributes
| Attribute name | Type | Description |
|---|---|---|
date | integer | Start of the event in milliseconds from epoch. |
type | string | The type of the event (for example, view or
resource). |
service | string | The unified service name for this application used to correlate user sessions. |
application.id | string | The Datadog application ID. |
application.name | string | The Datadog application name. |
Device
The following device-related attributes are attached automatically to all events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
device.architecture | string | The CPU architecture of the device that is reporting the error. |
device.batteryLevel | number | The current battery level of the device (0.0 to 1.0). |
device.brand | string | The device brand as reported by the device (System User-Agent). |
device.brightnessLevel | number | The current screen brightness level (0.0 to 1.0). |
device.locale | string | The user's locale as a language tag combining language and region (for example, 'en-US'). |
device.locales | array (string) | Ordered list of the user's preferred system languages as IETF language tags. |
device.model | string | The device model as reported by the device (System User-Agent). |
device.name | string | The device name as reported by the device (System User-Agent). |
device.powerSavingMode | Boolean | Whether the device is in power saving mode. |
device.timeZone | string | The device's current time zone identifier. |
device.type | string | The device type as reported by the device (System User-Agent). |
Connectivity
The following network-related attributes are attached automatically to Resource and Error events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
connectivity.status | string | Status of device network reachability (connected,
not connected, maybe). |
connectivity.interfaces | string | The list of available network interfaces (for example,
bluetooth, cellular,
ethernet, or wifi). |
connectivity.cellular.technology | string | The type of radio technology used for cellular connection. |
connectivity.cellular.carrier_name | string | The name of the SIM carrier. |
Operating system
The following OS-related attributes are attached automatically to all events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
os.build | string | The OS build number. |
os.name | string | The OS name as reported by the device (System User-Agent). |
os.version | string | The OS version as reported by the device (System User-Agent). |
os.version_major | string | The OS version major as reported by the device (System User-Agent). |
Geo-location
The following attributes are related to the geo-location of IP addresses.
Note: If you want to stop collecting geo-location attributes, change the setting in your application details.
| Attribute name | Type | Description |
|---|---|---|
geo.country | string | Name of the country |
geo.country_iso_code | string | ISO Code of the country (for example, US for the United
States or FR for France). |
geo.country_subdivision | string | Name of the first subdivision level of the country (for example,
California in the United States or the
Sarthe department in France). |
geo.continent_code | string | ISO code of the continent (EU, AS,
NA, AF, AN, SA,
OC). |
geo.continent | string | Name of the continent (Europe, Australia,
North America, Africa,
Antarctica, South America,
Oceania). |
geo.city | string | The name of the city (for example, San Francisco,
Paris, or New York). |
Global user attributes
You can enable tracking user info globally to collect and apply user attributes to all RUM events.
| Attribute name | Type | Description |
|---|---|---|
usr.id | string | Identifier of the user. |
usr.name | string | Name of the user. |
usr.email | string | Email of the user. |
Event-specific attributes
Session attributes
| Attribute | Type | Description |
|---|---|---|
session.action.count | number | Count of all actions collected for this session. |
session.error.count | number | Count of all errors collected for this session. |
session.long_task.count | number | Count of all long tasks collected for this session. |
session.has_replay | Boolean | Indicates if the session has a captured Session Replay recording attached to visually play the user experience. |
session.id | string | Unique ID of the session. |
session.initial_view.url | string | URL of the initial view of the session. |
session.initial_view.name | string | Name of the initial view of the session. |
session.ip | string | IP address of the session extracted from the TCP connection of the intake. If you want to stop collecting this attribute, change the setting in your application details. |
session.is_active | Boolean | Indicates if the session is currently active. The session ends if a user navigates away from the application or closes the browser window, and expires after 4 hours of activity or 15 minutes of inactivity. |
session.last_view.url | string | URL of the last view of the session. |
session.last_view.name | string | Name of the last view of the session. |
session.resource.count | number | Count of all resources collected for this session. |
session.time_spent | number (ns) | Time spent on a session. |
session.type | string | Type of the session (user). |
session.useragent | string | System user agent info to interpret device info. |
session.view.count | number | Count of all views collected for this session. |
View attributes
RUM action, error, resource, and long task events contain information about the active RUM view event at the time of collection.
| Attribute | Type | Description |
|---|---|---|
view.action.count | number | Count of all actions collected for this view. |
view.error.count | number | Count of all errors collected for this view. |
view.is_active | Boolean | Indicates whether the view corresponding to this event is considered active. |
view.id | string | Unique ID of the initial view corresponding to the event. |
view.loading_time | number (ns) | Time it took for the view to load, set by addViewLoadingTime(override:) call. |
view.long_task.count | number | Count of all long tasks collected for this view. |
view.interaction_to_next_view_time | number (ns) | Time between the last user interaction in the previous view and start of this (current) view. |
view.name | string | Customizable name of the view corresponding to the event. |
view.network_settled_time | number (ns) | Time it took for a view to be fully initiated at the start of the view. |
view.resource.count | number | Count of all resources collected for this view. |
view.time_spent | number (ns) | Time spent on this view. |
view.url | string | URL of the UIViewController class corresponding to the
event. |
Resource attributes
| Attribute | Type | Description |
|---|---|---|
resource.connect.duration | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). |
resource.dns.duration | number (ns) | Time spent resolving the DNS name of the last request (domainLookupEnd - domainLookupStart). |
resource.download.duration | number (ns) | Time spent downloading the response (responseEnd - responseStart). |
resource.duration | number | Entire time spent loading the resource. |
resource.first_byte.duration | number (ns) | Time spent waiting for the first byte of response to be received (responseStart - requestStart). |
resource.id | string | Unique identifier of the resource. |
resource.method | string | The HTTP method (for example, POST, GET,
PATCH, or DELETE). |
resource.provider.name | string | The resource provider name. Default is unknown. |
resource.provider.domain | string | The resource provider domain. |
resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
resource.redirect.duration | number (ns) | Time spent on subsequent HTTP requests (redirectEnd - redirectStart). |
resource.size | number (bytes) | Resource size. |
resource.ssl.duration | number (ns) | Time spent for the TLS handshake. |
resource.status_code | number | The response status code. |
resource.type | string | The type of resource being collected (for example, xhr,
image, font, css, or
js). |
resource.url | string | The resource URL. |
Error attributes
Frontend errors are collected with Real User Monitoring (RUM). The error message and stack trace are included when available.
| Attribute | Type | Description |
|---|---|---|
error.source | string | Where the error originates from (for example, webview,
logger, or network). |
error.type | string | The error type (or error code in some cases). |
error.message | string | A concise, human-readable, one-line message explaining the event. |
error.stack | string | The stack trace or complementary information about the error. |
error.issue_id | string | The stack trace or complementary information about the error. |
error.category | string | The high-level grouping for the type of error. Possible values are
ANR, App Hang, Exception,
Watchdog Termination, Memory Warning or
Network. |
error.file | string | File where the issue found by Error Tracking occurred. |
error.is_crash | Boolean | Indicates whether the error caused the application to crash. |
freeze.duration | int64 | Duration of the main thread freeze (in nanoseconds). This is only supported for App Hangs. |
Network errors
Network errors include information about failing HTTP requests. The following facets are also collected:
| Attribute | Type | Description |
|---|---|---|
error.resource.status_code | number | The response status code. |
error.resource.method | string | The HTTP method (for example, POST or
GET). |
error.resource.url | string | The resource URL. |
error.resource.provider.name | string | The resource provider name. Default is unknown. |
error.resource.provider.domain | string | The resource provider domain. |
error.resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
Action attributes
| Attribute | Type | Description |
|---|---|---|
action.error.count | number | Count of all errors issued by this action. |
action.id | string | UUID of the user action. |
action.loading_time | number (ns) | The loading time of the action. |
action.long_task.count | number | Count of all long tasks collected for this action. |
action.name | string | Name of the user action. |
action.resource.count | number | Count of all resources issued by this action. |
action.target.name | string | Element that the user interacted with. Only for automatically collected actions. |
action.type | string | Type of the user action (for example, tap or
application_start). |
Data storage
Before data is uploaded to Datadog, it is stored in cleartext in the cache
directory (Library/Caches) of your
application sandbox, which can't be read by any other app installed on the device.
Overview
The Datadog Flutter SDK for RUM generates events with associated telemetry and attributes. Telemetry are quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in the RUM Explorer.
Most Flutter Monitoring data is collected by native Datadog iOS and Android SDKs for RUM, and is retained for the same periods of time.
- For iOS event-specific telemetry and attributes, see RUM iOS Data Collected.
- For Android event-specific telemetry and attributes, see RUM Android Data Collected.
Overview
The Datadog React Native SDK for RUM generates events with associated telemetry and attributes. Telemetry are quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in the RUM Explorer.
Most React Native Monitoring data is collected by native Datadog iOS and Android SDKs for RUM, and is retained for the same periods of time.
- For iOS event-specific telemetry and attributes, see RUM iOS Data Collected.
- For Android event-specific telemetry and attributes, see RUM Android Data Collected.
Overview
The Datadog Kotlin Multiplatform SDK for RUM generates events with associated telemetry and attributes. Telemetry are quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in the RUM Explorer.
Most Kotlin Multiplatform Monitoring data is collected by native Datadog iOS and Android SDKs for RUM, and is retained for the same periods of time.
- For iOS event-specific telemetry and attributes, see RUM iOS Data Collected.
- For Android event-specific telemetry and attributes, see RUM Android Data Collected.
Overview
The RUM Roku SDK generates events that have associated telemetry and attributes. Telemetry is quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in analytics.
Every RUM event has all of the
default attributes, for example, the
device type (device.type) and user information such as their
name (usr.name) and their country (geo.country).
There are additional
attributes specific to a given event type. For example, the view.loading_time telemetry is associated
with view events, and the resource.method attribute is
associated with resource events.
| Event Type | Retention | Description |
|---|---|---|
| Session | 30 days | A session represents a real user journey on your Roku channel. It
begins when the user launches the channel, and the session remains
live as long as the user stays active. During the user journey, all
RUM events generated as part of the session will share the same
session.id attribute. Note: The
session resets after 15 minutes of inactivity. If the channel
crashes or is killed by the Roku OS, it will reset the session. |
| View | 30 days | A view represents a unique screen (or screen segment) on your Roku
channel. A view starts when you call the
startView function and stops when a new view is
started. Each occurrence is classified as a distinct view. While a
user stays on a view, RUM event attributes (Errors, Resources, and
Actions) get attached to the view with a unique
view.id. |
| Resource | 15 days | A resource represents network requests to first-party hosts, APIs,
and third-party providers in your Roku channel. All requests
generated during a user session are attached to the view with a
unique resource.id. |
| Error | 30 days | An error represents an exception or crash emitted by the Roku channel attached to the view it is generated in. |
| Action | 30 days | An action represents user activity in your Roku channel (such as a
remote click). Each action is attached with a unique
action.id attached to the view it gets generated in. |
| Long Task | 15 days | A long task event is generated for any task in the application that blocks the main thread for more than the specified duration threshold. |
The following diagram illustrates the RUM event hierarchy:
Default attributes
RUM collects common attributes for all events and attributes specific to each event listed below automatically. You can also choose to enrich your user session data by tracking additional events or by adding custom attributes to default events specific to your application monitoring and business analytics needs.
Common core attributes
| Attribute name | Type | Description |
|---|---|---|
date | integer | Start of the event in milliseconds from epoch. |
type | string | The type of the event (for example, view or
resource). |
service | string | The unified service name for this application used to correlate user sessions. |
application.id | string | The Datadog application ID. |
Device
The following device-related attributes are attached automatically to all events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
device.type | string | The device type as reported by the device (System User-Agent). |
device.brand | string | The device brand as reported by the device (System User-Agent). |
device.model | string | The device model as reported by the device (System User-Agent). |
device.name | string | The device name as reported by the device (System User-Agent). |
Operating system
The following OS-related attributes are attached automatically to all events collected by Datadog:
| Attribute name | Type | Description |
|---|---|---|
os.name | string | The OS name as reported by the device (System User-Agent). |
os.version | string | The OS version as reported by the device (System User-Agent). |
os.version_major | string | The OS version major as reported by the device (System User-Agent). |
Geo-location
The following attributes are related to the geo-location of IP addresses.
Note: If you want to stop collecting geo-location attributes, change the setting in your application details.
| Attribute name | Type | Description |
|---|---|---|
geo.country | string | Name of the country. |
geo.country_iso_code | string | ISO Code of the country (for example, US for the United
States or FR for France). |
geo.country_subdivision | string | Name of the first subdivision level of the country (for example,
California in the United States or the
Sarthe department in France). |
geo.continent_code | string | ISO code of the continent (EU, AS,
NA, AF, AN, SA,
or OC). |
geo.continent | string | Name of the continent (Europe, Australia,
North America, Africa,
Antarctica, South America, or
Oceania). |
geo.city | string | The name of the city (for example, San Francisco,
Paris, or New York). |
Global user attributes
You can enable tracking user info globally to collect and apply user attributes to all RUM events.
| Attribute name | Type | Description |
|---|---|---|
user.id | string | Identifier of the user. |
usr.name | string | Name of the user. |
usr.email | string | Email of the user. |
Event-specific attributes
Telemetry is quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice telemetry values (group by) in analytics.
Session attributes
| Attribute name | Type | Description |
|---|---|---|
session.action.count | number | Count of all actions collected for this session. |
session.error.count | number | Count of all errors collected for this session. |
session.id | string | Unique ID of the session. |
session.initial_view.name | string | Name of the initial view of the session. |
session.initial_view.url | string | URL of the initial view of the session. |
session.ip | string | IP address of the session extracted from the TCP connection of the intake. If you want to stop collecting this attribute, change the setting in your application details. |
session.is_active | Boolean | Indicates if the session is currently active. The session ends if a user navigates away from the application or closes the browser window, and expires after 4 hours of activity or 15 minutes of inactivity. |
session.last_view.name | string | Name of the last view of the session. |
session.last_view.url | string | URL of the last view of the session. |
session.long_task.count | number | Count of all long tasks collected for this session. |
session.resource.count | number | Count of all resources collected for this session. |
session.time_spent | number (ns) | Time spent on a session. |
session.type | string | Type of the session (user). |
session.useragent | string | System user agent info to interpret device info. |
session.view.count | number | Count of all views collected for this session. |
View attributes
RUM action, error, resource, and long task events contain information about the active RUM view event at the time of collection.
| Attribute | Type | Description |
|---|---|---|
view.action.count | number | Count of all actions collected for this view. |
view.error.count | number | Count of all errors collected for this view. |
view.id | string | Unique ID of the initial view corresponding to the event. |
view.is_active | boolean | Indicates whether the view corresponding to this event is considered active. |
view.long_task.count | number | Count of all long tasks collected for this view. |
view.name | string | Customizable name of the view corresponding to the event. |
view.resource.count | number | Count of all resources collected for this view. |
view.time_spent | number (ns) | Time spent on this view. |
view.url | string | Canonical name of the class corresponding to the event. |
Resource attributes
| Attribute name | Type | Description |
|---|---|---|
resource.connect.duration | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). |
resource.dns.duration | number (ns) | Time spent resolving the DNS name of the last request (domainLookupEnd - domainLookupStart). |
resource.download.duration | number (ns) | Time spent downloading the response (responseEnd - responseStart). |
resource.duration | number (ns) | Entire time spent loading the resource. |
resource.first_byte.duration | number (ns) | Time spent waiting for the first byte of response to be received (responseStart - RequestStart). |
resource.id | string | Unique identifier of the resource. |
resource.method | string | The HTTP method (for example, POST, GET,
PATCH, or DELETE). |
resource.provider.domain | string | The resource provider domain. |
resource.provider.name | string | The resource provider name. Default is unknown. |
resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
resource.redirect.duration | number (ns) | Time spent on subsequent HTTP requests (redirectEnd - redirectStart). |
resource.size | number (bytes) | Resource size. |
resource.ssl.duration | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this attribute does not appear (connectEnd - secureConnectionStart). |
resource.status_code | number | The response status code. |
resource.type | string | The type of resource being collected (for example, xhr,
image, font, css, or
js). |
resource.url | string | The resource URL. |
Error attributes
Frontend errors are collected with Real User Monitoring (RUM). The error message and stack trace are included when available.
| Attribute | Type | Description |
|---|---|---|
error.source | string | Where the error originates from (for example, webview,
logger, or network). |
error.type | string | The error type (or error code in some cases). |
error.message | string | A concise, human-readable one-line message explaining the event. |
error.stack | string | The stack trace or complementary information about the error. |
error.issue_id | string | The unique identifier for the error issue. |
Network errors
Network errors include information about failing HTTP requests. The following facets are also collected:
| Attribute | Type | Description |
|---|---|---|
error.resource.status_code | number | The response status code. |
error.resource.method | string | The HTTP method (for example, POST or
GET). |
error.resource.url | string | The resource URL. |
error.resource.provider.name | string | The resource provider name. Default is unknown. |
error.resource.provider.domain | string | The resource provider domain. |
error.resource.provider.type | string | The resource provider type (for example, first-party,
cdn, ad, or analytics). |
Action timing attributes
| Attribute name | Type | Description |
|---|---|---|
action.error.count | number | Count of all errors collected for this action. |
action.id | string | UUID of the user action. |
action.loading_time | number (ns) | The loading time of the action. |
action.long_task.count | number | Count of all long tasks collected for this action. |
action.name | string | Name of the user action. |
action.resource.count | number | Count of all resources collected for this action. |
action.target.name | string | Element that the user interacted with. Only for automatically collected actions. |
action.type | string | Type of the user action (for example, tap or
application_start). |
Data storage
Before data is uploaded to Datadog, it is stored in cleartext in your channel's cache directory, meaning that this data can't be read by other applications.
Note: The OS can evict the data at any time, which could result in data loss in some rare cases.
Overview
The Datadog Unity SDK for RUM generates events with associated telemetry and attributes. Telemetry are quantifiable values that can be used for measurements related to the event. Attributes are non-quantifiable values used to slice KPI values (group by) in the RUM Explorer.
Most Unity Monitoring data is collected by native Datadog iOS and Android SDKs for RUM, and is retained for the same periods of time.
- For iOS event-specific telemetry and attributes, see RUM iOS Data Collected.
- For Android event-specific telemetry and attributes, see RUM Android Data Collected.
