Skip to content
22 changes: 22 additions & 0 deletions .chloggen/jank-event.yaml
Original file line number Diff line number Diff line change
@@ -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:
38 changes: 38 additions & 0 deletions docs/app/app.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

<!-- tocstop -->
Expand Down Expand Up @@ -80,6 +82,42 @@ Use this event to indicate that visual application component has been clicked, t
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->

## 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:

<!-- semconv event.app.jank -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
<!-- markdownlint-capture -->
<!-- markdownlint-disable -->

**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.
Comment thread
breedx-splk marked this conversation as resolved.

| 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) |
Comment thread
breedx-splk marked this conversation as resolved.
Outdated
| [`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.

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->

## Attributes

See the [app attributes](/docs/registry/attributes/app.md) registry for all
Expand Down
13 changes: 9 additions & 4 deletions docs/registry/attributes/app.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ Describes attributes related to client-side applications (e.g. web apps or mobil
| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| <a id="app-installation-id" href="#app-installation-id">`app.installation.id`</a> | 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) |
| <a id="app-jank-count" href="#app-jank-count">`app.jank.count`</a> | int | A count of the number of frame renders that experienced jank. [2] | `9`; `42` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="app-jank-period" href="#app-jank-period">`app.jank.period`</a> | 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) |
| <a id="app-jank-threshold-ms" href="#app-jank-threshold-ms">`app.jank.threshold_ms`</a> | int | The minimum rendering threshold for this type of jank, in milliseconds. | `16`; `700`; `1024` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="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` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="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` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="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. [2] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="app-widget-name" href="#app-widget-name">`app.widget.name`</a> | string | The name of an application widget. [3] | `submit`; `attack`; `Clear Cart` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="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. [3] | `f9bc787d-ff05-48ad-90e1-fca1d46130b3`; `submit_order_1829` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="app-widget-name" href="#app-widget-name">`app.widget.name`</a> | 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.
Expand All @@ -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.
17 changes: 17 additions & 0 deletions model/app/events.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment thread
breedx-splk marked this conversation as resolved.
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: recommended
- ref: app.jank.threshold_ms
requirement_level: recommended
- ref: app.jank.period
requirement_level: recommended
18 changes: 18 additions & 0 deletions model/app/registry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Comment thread
breedx-splk marked this conversation as resolved.
Outdated
note: >
Depending on platform limitations, the value provided
MAY be approximation.
examples: [ 9, 42 ]
Comment thread
breedx-splk marked this conversation as resolved.
Outdated
- 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
Comment thread
breedx-splk marked this conversation as resolved.
stability: development
type: double
brief: The time period, in seconds, for which this jank is being reported.
examples: [ 0.5, 1.0, 10.0 ]
Comment thread
breedx-splk marked this conversation as resolved.
Outdated
- id: app.screen.coordinate.x
type: int
brief: The x (horizontal) coordinate of a screen coordinate, in screen pixels.
Expand Down
Loading