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.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) | 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.

<!-- 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-frame-count" href="#app-jank-frame-count">`app.jank.frame_count`</a> | int | A 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. | `1.0`; `5.0`; `10.24` | ![Development](https://img.shields.io/badge/-development-blue) |
| <a id="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` | ![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.frame_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.frame_count
requirement_level: recommended
- ref: app.jank.threshold
requirement_level: recommended
- ref: app.jank.period
requirement_level: recommended
17 changes: 17 additions & 0 deletions model/app/registry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,23 @@ 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.frame_count
type: int
stability: development
brief: A 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
stability: development
type: double
brief: The minimum rendering threshold for this jank, in seconds.
examples: [ 0.016, 0.700, 1.024 ]
- 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: [ 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.
Expand Down
Loading