Early Access
The New RUM Experience allows you to associate user interactions with features and UI components by adding dedicated attributes to your HTML. This comprehensive interaction context facilitates powerful queries and deeper analysis of how users engage with your application's UI and functionality.
Use the data-dt-features attribute to associate user interactions on an HTML element with one or more specific product features. On user interactions, the captured features are available in the field ui_element.features; see User interactions. Elements inherit features from their ancestors, providing comprehensive feature tracking.
The data-dt-features attribute lets you:
The value of the data-dt-features attribute is a comma-separated list of feature names, where a feature can be any string. Features are case-sensitive—for example, "Search" and "search" are different features.
<!-- Single feature --><div data-dt-features="search"><input type="text" placeholder="Search..."><button>Search</button></div><!-- Multiple features --><nav data-dt-features="navigation,sidebar"><a href="/home">Home</a><a href="/products">Products</a><a href="/about">About</a></nav>
Feature inheritance works by collecting feature values from all ancestor elements in a top-down order. All inherited features are combined into a single array, and any duplicates are removed while keeping the first occurrence. The final list reflects the DOM hierarchy, starting with the most distant ancestor element and ending with the element itself.
<div data-dt-features="shop,product-catalog"><div data-dt-features="filters"><button>Price</button> <!-- ui_element.features: ["shop", "product-catalog", "filters"] --><button>Brand</button> <!-- ui_element.features: ["shop", "product-catalog", "filters"] --></div><div data-dt-features="results"><div>Product 1</div> <!-- ui_element.features: ["shop", "product-catalog", "results"] --><div>Product 2</div> <!-- ui_element.features: ["shop", "product-catalog", "results"] --></div></div><div data-dt-features="app,main"><div data-dt-features="sidebar,navigation"><div data-dt-features="menu,navigation"><button>Click</button> <!-- ui_element.features: ["app", "main", "sidebar", "navigation", "menu"] --></div></div></div>
The following DQL query generates a timeseries that shows, for each feature, the number of sessions that include at least one interaction with that feature.
fetch user.events| filter isNotNull(ui_element.features)| expand ui_element.features| makeTimeseries countDistinct(dt.rum.session.id), by: {ui_element.features}, interval: 1d
Use the data-dt-component attribute to associate user interactions on an HTML element with one or more UI components, such as a date picker or a calendar. Component values are inherited from all ancestor elements and collected in top‑down order, forming a path through the component tree. On the captured user interaction, the collected components are available in the field ui_element.components; see User interactions.
The data-dt-component attribute lets you:
The value of data-dt-component is a string representing a component. Components are collected top-down from all ancestors, resulting in an array that represents the path through the component tree. Empty or whitespace-only values are ignored.
<App data-dt-component="App"><Container data-dt-component="Container"><AuthProvider data-dt-component="AuthProvider"><Dashboard data-dt-component="Dashboard"><Container data-dt-component="Container"><Card data-dt-component="Card"><Button data-dt-component="Button">Save</Button>{/* ui_element.components: ["App", "Container", "AuthProvider", "Dashboard", "Container", "Card", "Button"] */}</Card></Container></Dashboard></AuthProvider></Container></App>
The following DQL query generates a timeseries showing how many different users interacted with the TimeframeSelector component. The results are split by frontend.
fetch user.events| expand ui_element.components| filter ui_element.components == "TimeframeSelector"| makeTimeseries countDistinct(dt.rum.instance.id), by: {frontend.name}, interval: 1d