From 17cc4048b44191d7adfd3407e9b1c46c40b613ec Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 22 Jul 2025 15:28:58 -0700 Subject: [PATCH 01/11] add client-side jank event --- docs/app/app.md | 38 +++++++++++++++++++++++++++++++++ docs/registry/attributes/app.md | 13 +++++++---- model/app/events.yaml | 17 +++++++++++++++ model/app/registry.yaml | 18 ++++++++++++++++ 4 files changed, 82 insertions(+), 4 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 72e6b25c01..66f15456af 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -14,6 +14,8 @@ This document defines events related to client-side applications - [Click Events](#click-events) - [Event: `app.screen.click`](#event-appscreenclick) - [Event: `app.widget.click`](#event-appwidgetclick) +- [Jank Event](#jank-event) + - [Event: `app.jank`](#event-appjank) - [Attributes](#attributes) @@ -80,6 +82,42 @@ Use this event to indicate that visual application component has been clicked, t +## Jank Event + +### Event: `app.jank` + +Jank is a disruption in UI rendering, resulting in a display that can feel +sluggish or even unresponsive/frozen. Applications that are able to detect +jank can report it with the following events: + + + + + + + + +**Status:** ![Development](https://img.shields.io/badge/-development-blue) + +The event name MUST be `app.jank`. + +This event indicates that the application has detected substandard UI rendering performance. + +Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. + +| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | +|---|---|---|---|---|---| +| [`app.jank.count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Required` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.period`](/docs/registry/attributes/app.md) | double | The time period, in seconds, for which this jank is being reported. | `0.5`; `1.0`; `10.0` | `Required` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.threshold_ms`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | `Required` | ![Development](https://img.shields.io/badge/-development-blue) | + +**[1] `app.jank.count`:** Depending on platform limitations, the value provided MAY be approximation. + + + + + + ## Attributes See the [app attributes](/docs/registry/attributes/app.md) registry for all diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index 1aab1d78cc..de68dabe22 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -10,10 +10,13 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.count` | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.period` | double | The time period, in seconds, for which this jank is being reported. | `0.5`; `1.0`; `10.0` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.threshold_ms` | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.y` | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.widget.id` | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [2] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.widget.name` | string | The name of an application widget. [3] | `submit`; `attack`; `Clear Cart` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.widget.id` | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [3] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.widget.name` | string | The name of an application widget. [4] | `submit`; `attack`; `Clear Cart` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `app.installation.id`:** Its value SHOULD persist across launches of the same application installation, including through application upgrades. It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled. @@ -33,6 +36,8 @@ For Android, examples of `app.installation.id` implementations include: More information about Android identifier best practices can be found [here](https://developer.android.com/training/articles/user-data-ids). -**[2] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. +**[2] `app.jank.count`:** Depending on platform limitations, the value provided MAY be approximation. -**[3] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. +**[3] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. + +**[4] `app.widget.name`:** A widget is an application component, typically an on-screen visual GUI element. diff --git a/model/app/events.yaml b/model/app/events.yaml index dda948424e..57a15fdb6d 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -37,3 +37,20 @@ groups: requirement_level: opt_in - ref: app.screen.coordinate.y requirement_level: opt_in + - id: event.app.jank + stability: development + type: event + name: app.jank + brief: > + This event indicates that the application has detected substandard UI + rendering performance. + note: > + Jank happens when the UI is rendered slowly enough for the user to + experience some disruption or sluggishness. + attributes: + - ref: app.jank.count + requirement_level: required + - ref: app.jank.threshold_ms + requirement_level: required + - ref: app.jank.period + requirement_level: required diff --git a/model/app/registry.yaml b/model/app/registry.yaml index e97a115d83..b3564b000d 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -31,6 +31,24 @@ groups: More information about Android identifier best practices can be found [here](https://developer.android.com/training/articles/user-data-ids). examples: - 2ab2916d-a51f-4ac8-80ee-45ac31a28092 + - id: app.jank.count + type: int + stability: development + brief: A count of the number of frame renders that experienced jank. + note: > + Depending on platform limitations, the value provided + MAY be approximation. + examples: [ 9, 42 ] + - id: app.jank.threshold_ms + stability: development + type: int + brief: The minimum rendering threshold for this type of jank, in milliseconds. + examples: [ 16, 700, 1024 ] + - id: app.jank.period + stability: development + type: double + brief: The time period, in seconds, for which this jank is being reported. + examples: [ 0.5, 1.0, 10.0 ] - id: app.screen.coordinate.x type: int brief: The x (horizontal) coordinate of a screen coordinate, in screen pixels. From 19b66b81a7d9e262797be36473e6e76a6129aaa3 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Tue, 22 Jul 2025 15:43:47 -0700 Subject: [PATCH 02/11] changelog --- .chloggen/jank-event.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .chloggen/jank-event.yaml diff --git a/.chloggen/jank-event.yaml b/.chloggen/jank-event.yaml new file mode 100644 index 0000000000..ed4f3dd4a6 --- /dev/null +++ b/.chloggen/jank-event.yaml @@ -0,0 +1,22 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: app + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Defines a new jank event in the app domain + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [2552] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: From 1e3efae1ae1eca770d58cdc7c77b4fcd3b56d6eb Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 23 Jul 2025 15:12:24 -0700 Subject: [PATCH 03/11] relax requirements --- model/app/events.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model/app/events.yaml b/model/app/events.yaml index 57a15fdb6d..ae6ed15620 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -49,8 +49,8 @@ groups: experience some disruption or sluggishness. attributes: - ref: app.jank.count - requirement_level: required + requirement_level: recommended - ref: app.jank.threshold_ms - requirement_level: required + requirement_level: recommended - ref: app.jank.period - requirement_level: required + requirement_level: recommended From cfeb47f214f71d413d6cf7aa923e43f0550e24a6 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 23 Jul 2025 15:20:57 -0700 Subject: [PATCH 04/11] codegen --- docs/app/app.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 66f15456af..340fd44884 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -107,9 +107,9 @@ Jank happens when the UI is rendered slowly enough for the user to experience so | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`app.jank.count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Required` | ![Development](https://img.shields.io/badge/-development-blue) | -| [`app.jank.period`](/docs/registry/attributes/app.md) | double | The time period, in seconds, for which this jank is being reported. | `0.5`; `1.0`; `10.0` | `Required` | ![Development](https://img.shields.io/badge/-development-blue) | -| [`app.jank.threshold_ms`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | `Required` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.period`](/docs/registry/attributes/app.md) | double | The time period, in seconds, for which this jank is being reported. | `0.5`; `1.0`; `10.0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.threshold_ms`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `app.jank.count`:** Depending on platform limitations, the value provided MAY be approximation. From 06aeb5a224c08f4474455dca903b9127a98bdd81 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 23 Jul 2025 16:33:05 -0700 Subject: [PATCH 05/11] make period an int --- docs/app/app.md | 2 +- docs/registry/attributes/app.md | 2 +- model/app/registry.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 340fd44884..26e933d7a1 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -108,7 +108,7 @@ Jank happens when the UI is rendered slowly enough for the user to experience so | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`app.jank.count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | -| [`app.jank.period`](/docs/registry/attributes/app.md) | double | The time period, in seconds, for which this jank is being reported. | `0.5`; `1.0`; `10.0` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.period`](/docs/registry/attributes/app.md) | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.threshold_ms`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `app.jank.count`:** Depending on platform limitations, the value provided MAY be approximation. diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index de68dabe22..f90fea9ff2 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -11,7 +11,7 @@ Describes attributes related to client-side applications (e.g. web apps or mobil |---|---|---|---|---| | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.count` | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.jank.period` | double | The time period, in seconds, for which this jank is being reported. | `0.5`; `1.0`; `10.0` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.period` | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.threshold_ms` | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.y` | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | ![Development](https://img.shields.io/badge/-development-blue) | diff --git a/model/app/registry.yaml b/model/app/registry.yaml index b3564b000d..ab106a7f29 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -46,9 +46,9 @@ groups: examples: [ 16, 700, 1024 ] - id: app.jank.period stability: development - type: double + type: int brief: The time period, in seconds, for which this jank is being reported. - examples: [ 0.5, 1.0, 10.0 ] + examples: [ 1, 5, 10 ] - id: app.screen.coordinate.x type: int brief: The x (horizontal) coordinate of a screen coordinate, in screen pixels. From f0d88cad9dcf5da226546cc1bdd9ed955d9e4eb7 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Fri, 25 Jul 2025 09:56:18 -0700 Subject: [PATCH 06/11] rename count to frame_count --- docs/app/app.md | 4 ++-- docs/registry/attributes/app.md | 4 ++-- model/app/events.yaml | 2 +- model/app/registry.yaml | 5 ++--- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 26e933d7a1..02ec6ef321 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -107,11 +107,11 @@ Jank happens when the UI is rendered slowly enough for the user to experience so | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`app.jank.count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.frame_count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.period`](/docs/registry/attributes/app.md) | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.threshold_ms`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | -**[1] `app.jank.count`:** Depending on platform limitations, the value provided MAY be approximation. +**[1] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index f90fea9ff2..7bba1f343a 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -10,7 +10,7 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.jank.count` | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.frame_count` | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.period` | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.threshold_ms` | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | @@ -36,7 +36,7 @@ For Android, examples of `app.installation.id` implementations include: More information about Android identifier best practices can be found [here](https://developer.android.com/training/articles/user-data-ids). -**[2] `app.jank.count`:** Depending on platform limitations, the value provided MAY be approximation. +**[2] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. **[3] `app.widget.id`:** A widget is an application component, typically an on-screen visual GUI element. diff --git a/model/app/events.yaml b/model/app/events.yaml index ae6ed15620..34b32c10fa 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -48,7 +48,7 @@ groups: Jank happens when the UI is rendered slowly enough for the user to experience some disruption or sluggishness. attributes: - - ref: app.jank.count + - ref: app.jank.frame_count requirement_level: recommended - ref: app.jank.threshold_ms requirement_level: recommended diff --git a/model/app/registry.yaml b/model/app/registry.yaml index ab106a7f29..7cd1b43b87 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -31,13 +31,12 @@ groups: More information about Android identifier best practices can be found [here](https://developer.android.com/training/articles/user-data-ids). examples: - 2ab2916d-a51f-4ac8-80ee-45ac31a28092 - - id: app.jank.count + - id: app.jank.frame_count type: int stability: development brief: A count of the number of frame renders that experienced jank. note: > - Depending on platform limitations, the value provided - MAY be approximation. + Depending on platform limitations, the value provided MAY be approximation. examples: [ 9, 42 ] - id: app.jank.threshold_ms stability: development From 5e4e5e7155b6b92a6513f5489e9870026402dfca Mon Sep 17 00:00:00 2001 From: jason plumb <75337021+breedx-splk@users.noreply.github.com> Date: Thu, 14 Aug 2025 12:01:15 -0700 Subject: [PATCH 07/11] Update model/app/registry.yaml Co-authored-by: Liudmila Molkova --- model/app/registry.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/app/registry.yaml b/model/app/registry.yaml index 7cd1b43b87..3b6b426fc7 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -34,7 +34,7 @@ groups: - id: app.jank.frame_count type: int stability: development - brief: A count of the number of frame renders that experienced jank. + brief: A number of frame renders that experienced jank. note: > Depending on platform limitations, the value provided MAY be approximation. examples: [ 9, 42 ] From 18cfeb868f1b2d7af83f6c8ba66703132179b195 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Thu, 14 Aug 2025 12:06:41 -0700 Subject: [PATCH 08/11] change threshold to seconds --- docs/app/app.md | 2 +- docs/registry/attributes/app.md | 2 +- model/app/events.yaml | 2 +- model/app/registry.yaml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 02ec6ef321..9a4be1c0e5 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -109,7 +109,7 @@ Jank happens when the UI is rendered slowly enough for the user to experience so |---|---|---|---|---|---| | [`app.jank.frame_count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.period`](/docs/registry/attributes/app.md) | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | -| [`app.jank.threshold_ms`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.threshold`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this jank, in seconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index 7bba1f343a..cf920fb705 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -12,7 +12,7 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.frame_count` | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.period` | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.jank.threshold_ms` | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.threshold` | int | The minimum rendering threshold for this jank, in seconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.y` | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.widget.id` | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [3] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | ![Development](https://img.shields.io/badge/-development-blue) | diff --git a/model/app/events.yaml b/model/app/events.yaml index 34b32c10fa..6bb5a10ef6 100644 --- a/model/app/events.yaml +++ b/model/app/events.yaml @@ -50,7 +50,7 @@ groups: attributes: - ref: app.jank.frame_count requirement_level: recommended - - ref: app.jank.threshold_ms + - ref: app.jank.threshold requirement_level: recommended - ref: app.jank.period requirement_level: recommended diff --git a/model/app/registry.yaml b/model/app/registry.yaml index 7cd1b43b87..a1a0778fe1 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -38,10 +38,10 @@ groups: note: > Depending on platform limitations, the value provided MAY be approximation. examples: [ 9, 42 ] - - id: app.jank.threshold_ms + - id: app.jank.threshold stability: development type: int - brief: The minimum rendering threshold for this type of jank, in milliseconds. + brief: The minimum rendering threshold for this jank, in seconds. examples: [ 16, 700, 1024 ] - id: app.jank.period stability: development From 4b93f77907376e6610ed8779bf86054a22d77d7b Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Thu, 14 Aug 2025 12:15:20 -0700 Subject: [PATCH 09/11] regen registry --- docs/app/app.md | 2 +- docs/registry/attributes/app.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 9a4be1c0e5..edde732fbf 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -107,7 +107,7 @@ Jank happens when the UI is rendered slowly enough for the user to experience so | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`app.jank.frame_count`](/docs/registry/attributes/app.md) | int | A count of the number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.frame_count`](/docs/registry/attributes/app.md) | int | A number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.period`](/docs/registry/attributes/app.md) | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.threshold`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this jank, in seconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index cf920fb705..695b604871 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -10,7 +10,7 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.jank.frame_count` | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.frame_count` | int | A number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.period` | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.threshold` | int | The minimum rendering threshold for this jank, in seconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | From b48b44d3ffa3d0fff32a61b6037a92afe5f8384b Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Thu, 14 Aug 2025 14:10:09 -0700 Subject: [PATCH 10/11] make threshold double and make examples realistic. --- docs/app/app.md | 2 +- docs/registry/attributes/app.md | 2 +- model/app/registry.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index edde732fbf..8a37406335 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -109,7 +109,7 @@ Jank happens when the UI is rendered slowly enough for the user to experience so |---|---|---|---|---|---| | [`app.jank.frame_count`](/docs/registry/attributes/app.md) | int | A number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.period`](/docs/registry/attributes/app.md) | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | -| [`app.jank.threshold`](/docs/registry/attributes/app.md) | int | The minimum rendering threshold for this jank, in seconds. | `16`; `700`; `1024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.threshold`](/docs/registry/attributes/app.md) | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index 695b604871..59609d6af4 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -12,7 +12,7 @@ Describes attributes related to client-side applications (e.g. web apps or mobil | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.frame_count` | int | A number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.period` | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.jank.threshold` | int | The minimum rendering threshold for this jank, in seconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.threshold` | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.y` | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.widget.id` | string | An identifier that uniquely differentiates this widget from other widgets in the same application. [3] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | ![Development](https://img.shields.io/badge/-development-blue) | diff --git a/model/app/registry.yaml b/model/app/registry.yaml index bcb3e9ffbe..3b4311ee19 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -40,9 +40,9 @@ groups: examples: [ 9, 42 ] - id: app.jank.threshold stability: development - type: int + type: double brief: The minimum rendering threshold for this jank, in seconds. - examples: [ 16, 700, 1024 ] + examples: [ 0.016, 0.700, 1.024 ] - id: app.jank.period stability: development type: int From 8c5e550881887cbd7a605b0f0318b70f6d01abe8 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Mon, 18 Aug 2025 09:19:23 -0700 Subject: [PATCH 11/11] update app.jank.period to be double --- docs/app/app.md | 2 +- docs/registry/attributes/app.md | 2 +- model/app/registry.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/app/app.md b/docs/app/app.md index 8a37406335..5d2c28d81e 100644 --- a/docs/app/app.md +++ b/docs/app/app.md @@ -108,7 +108,7 @@ Jank happens when the UI is rendered slowly enough for the user to experience so | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`app.jank.frame_count`](/docs/registry/attributes/app.md) | int | A number of frame renders that experienced jank. [1] | `9`; `42` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | -| [`app.jank.period`](/docs/registry/attributes/app.md) | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | +| [`app.jank.period`](/docs/registry/attributes/app.md) | double | The time period, in seconds, for which this jank is being reported. | `1.0`; `5.0`; `10.24` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | | [`app.jank.threshold`](/docs/registry/attributes/app.md) | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | `Recommended` | ![Development](https://img.shields.io/badge/-development-blue) | **[1] `app.jank.frame_count`:** Depending on platform limitations, the value provided MAY be approximation. diff --git a/docs/registry/attributes/app.md b/docs/registry/attributes/app.md index 59609d6af4..b7af333484 100644 --- a/docs/registry/attributes/app.md +++ b/docs/registry/attributes/app.md @@ -11,7 +11,7 @@ Describes attributes related to client-side applications (e.g. web apps or mobil |---|---|---|---|---| | `app.installation.id` | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.frame_count` | int | A number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) | -| `app.jank.period` | int | The time period, in seconds, for which this jank is being reported. | `1`; `5`; `10` | ![Development](https://img.shields.io/badge/-development-blue) | +| `app.jank.period` | double | The time period, in seconds, for which this jank is being reported. | `1.0`; `5.0`; `10.24` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.jank.threshold` | double | The minimum rendering threshold for this jank, in seconds. | `0.016`; `0.7`; `1.024` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.x` | int | The x (horizontal) coordinate of a screen coordinate, in screen pixels. | `0`; `131` | ![Development](https://img.shields.io/badge/-development-blue) | | `app.screen.coordinate.y` | int | The y (vertical) component of a screen coordinate, in screen pixels. | `12`; `99` | ![Development](https://img.shields.io/badge/-development-blue) | diff --git a/model/app/registry.yaml b/model/app/registry.yaml index 3b4311ee19..2cdda810a2 100644 --- a/model/app/registry.yaml +++ b/model/app/registry.yaml @@ -45,9 +45,9 @@ groups: examples: [ 0.016, 0.700, 1.024 ] - id: app.jank.period stability: development - type: int + type: double brief: The time period, in seconds, for which this jank is being reported. - examples: [ 1, 5, 10 ] + examples: [ 1.0, 5.0, 10.24 ] - id: app.screen.coordinate.x type: int brief: The x (horizontal) coordinate of a screen coordinate, in screen pixels.