You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/registry/attributes/app.md
+21-32Lines changed: 21 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,19 +16,16 @@ Describes attributes related to client-side applications (e.g. web apps or mobil
16
16
| <aid="app-jank-threshold"href="#app-jank-threshold">`app.jank.threshold`</a> | double | The minimum rendering threshold for this jank, in seconds. |`0.016`; `0.7`; `1.024`||
17
17
| <aid="app-screen-coordinate-x"href="#app-screen-coordinate-x">`app.screen.coordinate.x`</a> | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. |`0`; `131`||
18
18
| <aid="app-screen-coordinate-y"href="#app-screen-coordinate-y">`app.screen.coordinate.y`</a> | int | The y (vertical) component of a screen coordinate, in screen pixels. |`12`; `99`||
19
-
| <aid="app-screen-depth"href="#app-screen-depth">`app.screen.depth`</a> | int | The depth of this screen in the application’s screen hierarchy, where 0 represents the root screen. [3]|`0`; `2`; `5`||
20
-
| <aid="app-screen-first-appear-duration"href="#app-screen-first-appear-duration">`app.screen.first_appear.duration`</a> | int | The time, in nanoseconds, from screen initialization to the first visual render of the screen. [4]|`1000`||
21
-
| <aid="app-screen-id"href="#app-screen-id">`app.screen.id`</a> | string | An identifier that uniquely differentiates this screen from other screens in the same application. [5]|`f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController`||
22
-
| <aid="app-screen-load-duration"href="#app-screen-load-duration">`app.screen.load.duration`</a> | int | The total time, in nanoseconds, from navigation trigger (e.g., button tap) to when the screen is able to handle user interactions. [6]|`1000`||
23
-
| <aid="app-screen-main-thread-busy-time"href="#app-screen-main-thread-busy-time">`app.screen.main_thread_busy_time`</a> | int | The time, in nanoseconds, during which the main thread is occupied or blocked from processing user input, such as during rendering, animations, or network requests. This indicates the time the app is "busy" and unable to respond to user interactions. |||
24
-
| <aid="app-screen-name"href="#app-screen-name">`app.screen.name`</a> | string | The name of an application screen. [7]|`MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController`||
25
-
| <aid="app-screen-nodes"href="#app-screen-nodes">`app.screen.nodes`</a> | int | The total number of visual or interactive elements (widgets, views, components, etc.) within an application screen. [8]|`5`; `23`; `147`||
26
-
| <aid="app-screen-type"href="#app-screen-type">`app.screen.type`</a> | string | The type of UI management component or framework used to render and manage the screen's presentation and interactions. [9]|`swiftui`; `uikit`; `activity`; `fragment`||
27
-
| <aid="app-screen-visible-duration"href="#app-screen-visible-duration">`app.screen.visible.duration`</a> | int | The total time, in nanoseconds, that the screen remained visible to the user. [10]|`1200`; `5500`; `700`||
28
-
| <aid="app-start-duration"href="#app-start-duration">`app.start.duration`</a> | int | The total time, in nanoseconds, taken for the application to start, from user initiation to being ready for interaction. [11]|`1000`||
29
-
| <aid="app-start-type"href="#app-start-type">`app.start.type`</a> | string | The type of application start, indicating the state of the app when it was initiated. [12]|`cold`; `warm`; `hot`; `pre_warm`||
30
-
| <aid="app-widget-id"href="#app-widget-id">`app.widget.id`</a> | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [13]|`f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829`||
31
-
| <aid="app-widget-name"href="#app-widget-name">`app.widget.name`</a> | string | The name of an application widget. [14]|`submit`; `attack`; `Clear Cart`||
19
+
| <aid="app-screen-first-draw-duration"href="#app-screen-first-draw-duration">`app.screen.first_draw.duration`</a> | int | The time, in nanoseconds, from screen initialization to the first frame being rendered. [3]|`1000`||
20
+
| <aid="app-screen-id"href="#app-screen-id">`app.screen.id`</a> | string | An identifier that uniquely differentiates this screen from other screens in the same application. [4]|`f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `com.example.app.MainActivity`; `com.example.shop.ProductDetailFragment`; `MyApp.ProfileView`; `MyApp.ProfileViewController`||
21
+
| <aid="app-screen-load-duration"href="#app-screen-load-duration">`app.screen.load.duration`</a> | int | The time taken, in nanoseconds, for a screen to load and become stable, measured from when the screen begins appearing until the first stable frame has been rendered. [5]|`1000`||
22
+
| <aid="app-screen-name"href="#app-screen-name">`app.screen.name`</a> | string | The name of an application screen. [6]|`MainActivity`; `ProductDetailFragment`; `ProfileView`; `ProfileViewController`||
23
+
| <aid="app-screen-type"href="#app-screen-type">`app.screen.type`</a> | string | The type of UI management component or framework used to render and manage the screen's presentation and interactions. [7]|`swiftui`; `uikit`; `activity`; `fragment`||
24
+
| <aid="app-screen-visible-duration"href="#app-screen-visible-duration">`app.screen.visible.duration`</a> | int | The total time, in nanoseconds, that the screen remained visible to the user. [8]|`1200`; `5500`; `700`||
25
+
| <aid="app-start-duration"href="#app-start-duration">`app.start.duration`</a> | int | The total time, in nanoseconds, taken for the application to start, from user initiation to being ready for interaction. [9]|`1000`||
26
+
| <aid="app-start-type"href="#app-start-type">`app.start.type`</a> | string | The type of application start, indicating the state of the app when it was initiated. [10]|`cold`; `warm`||
27
+
| <aid="app-widget-id"href="#app-widget-id">`app.widget.id`</a> | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [11]|`f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829`||
28
+
| <aid="app-widget-name"href="#app-widget-name">`app.widget.name`</a> | string | The name of an application widget. [12]|`submit`; `attack`; `Clear Cart`||
32
29
33
30
**[1]`app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades.
34
31
It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled.
@@ -50,34 +47,28 @@ More information about Android identifier best practices can be found in the [An
50
47
51
48
**[2]`app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation.
52
49
53
-
**[3]`app.screen.depth`:**Depth represents the screen's position in the screen hierarchy tree. The root screen of the app is considered to have a depth of 0. Screens that are nested within other screens (such as in tab navigation, modals, or multi-screen flows) will have increasing depth values (1, 2, etc.). For example, a modal screen that is presented over the root screen would have a depth of 1, while a screen inside a modal might have a depth of 2.
50
+
**[3]`app.screen.first_draw.duration`:**This measures the time, in nanoseconds, until the first frame of the screen is rendered and becomes visible to the user.
54
51
55
-
**[4]`app.screen.first_appear.duration`:**This measures the time, in nanoseconds, until the first pixels of the screen are drawn and the screen becomes visible to the user. It does not necessarily mean the screen is fully interactive or that dynamic content (like images, API responses, or animations) is fully loaded.
52
+
**[4]`app.screen.id`:**A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).
56
53
57
-
**[5]`app.screen.id`:**A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).
54
+
**[5]`app.screen.load.duration`:**This attribute represents the total duration, in nanoseconds, of a screen load as experienced by the user. The screen load is considered complete when the first stable frame of the screen has been rendered. A frame is considered stable when no major layout or frame changes occur for a brief stability interval (e.g. 150 ms).
58
55
59
-
**[6]`app.screen.load.duration`:**This includes time, in nanoseconds, spent rendering the screen, waiting for dynamic content (if necessary), and ensuring the app is ready to process user input. The screen is considered "ready" once the UI is able to respond to user interactions such as taps, swipes, or gestures.
56
+
**[6]`app.screen.name`:**A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).
60
57
61
-
**[7]`app.screen.name`:**A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).
58
+
**[7]`app.screen.type`:**This attribute indicates which framework or structure is used to manage and display the screen’s content. For iOS, it may refer to either SwiftUI (declarative) or UIKit (imperative) for managing views. On Android, it can refer to either an Activity or a Fragment.
62
59
63
-
**[8]`app.screen.nodes`:**A "node" is any individual visual or interactive component contained within a screen. This includes UI elements like buttons, labels, text fields, images, containers, and static content such as images or text.
60
+
**[8]`app.screen.visible.duration`:**This attribute measures the duration during which the screen is visible and actively being displayed to the user. It begins when the screen becomes visible (e.g., `viewDidAppear` on iOS or `onResume` on Android) and ends when it is no longer visible (e.g., `viewWillDisappear` on iOS or `onPause` on Android). It does **not** include the time when the screen is in the background, nor does it account for time the screen may be obscured by other views or overlays (e.g., modals, popups, or other screens in split-view).
64
61
65
-
**[9]`app.screen.type`:** This attribute indicates which framework or structure is used to manage and display the screen’s content. For iOS, it may refer to either SwiftUI (declarative) or UIKit (imperative) for managing views. On Android, it can refer to either an Activity or a Fragment.
62
+
**[9]`app.start.duration`:** This is the time, in nanoseconds, between the user's initiation of the app start (e.g., tapping the app icon or opening a link) and the point when the app is fully ready for interaction, such as the main screen becoming visible or the app’s main functionality being accessible.
66
63
67
-
**[10]`app.screen.visible.duration`:** This attribute measures the duration during which the screen is visible and actively being displayed to the user. It begins when the screen becomes visible (e.g., `viewDidAppear` on iOS or `onResume` on Android) and ends when it is no longer visible (e.g., `viewWillDisappear` on iOS or `onPause` on Android). It does **not** include the time when the screen is in the background, nor does it account for time the screen may be obscured by other views or overlays (e.g., modals, popups, or other screens in split-view).
68
-
69
-
**[11]`app.start.duration`:** This is the time, in nanoseconds, between the user's initiation of the app start (e.g., tapping the app icon or opening a link) and the point when the app is fully ready for interaction, such as the main screen becoming visible or the app’s main functionality being accessible.
70
-
71
-
**[12]`app.start.type`:** Start types include:
64
+
**[10]`app.start.type`:** Start types include:
72
65
73
66
-**Cold**: The app is started from a terminated state, meaning no prior instance of the app is running.
74
67
-**Warm**: The app is started from the background, meaning an instance of the app is still in memory, but not active.
75
-
-**Hot**: The app is already running and brought to the foreground, meaning no re-initialization is needed.
76
-
-**Pre-Warm**: The app started uses a pre-warmed process, meaning part of the app's initialization has already been done in anticipation of the start.
77
68
78
-
**[13]`app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element.
69
+
**[11]`app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element.
79
70
80
-
**[14]`app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element.
71
+
**[12]`app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element.
81
72
82
73
---
83
74
@@ -97,6 +88,4 @@ More information about Android identifier best practices can be found in the [An
97
88
| Value | Description | Stability |
98
89
|---|---|---|
99
90
|`cold`| App start from terminated state ||
100
-
|`hot`| App start from memory (already running) ||
101
-
|`pre_warm`| App start using pre-warmed process ||
102
-
|`warm`| App start from background state]||
91
+
|`warm`| App start from background state ||
0 commit comments