diff --git a/generated/attributes/all.md b/generated/attributes/all.md index 42516ff1..6efba0af 100644 --- a/generated/attributes/all.md +++ b/generated/attributes/all.md @@ -4,7 +4,7 @@ This page lists all available attributes across all categories. -Total attributes: 422 +Total attributes: 430 ## Stable Attributes @@ -31,6 +31,12 @@ Total attributes: 422 | [`browser.script.invoker_type`](./browser.md#browserscriptinvoker_type) | Browser script entry point type. | | [`browser.script.source_char_position`](./browser.md#browserscriptsource_char_position) | A number representing the script character position of the script. | | [`browser.version`](./browser.md#browserversion) | The version of the browser. | +| [`browser.web_vital.lcp.element`](./browser.md#browserweb_vitallcpelement) | The HTML element selector or component name for which LCP was reported | +| [`browser.web_vital.lcp.id`](./browser.md#browserweb_vitallcpid) | The id of the dom element responsible for the largest contentful paint | +| [`browser.web_vital.lcp.load_time`](./browser.md#browserweb_vitallcpload_time) | The time it took for the LCP element to be loaded | +| [`browser.web_vital.lcp.render_time`](./browser.md#browserweb_vitallcprender_time) | The time it took for the LCP element to be rendered | +| [`browser.web_vital.lcp.size`](./browser.md#browserweb_vitallcpsize) | The size of the largest contentful paint element | +| [`browser.web_vital.lcp.url`](./browser.md#browserweb_vitallcpurl) | The url of the dom element responsible for the largest contentful paint | | [`cache.hit`](./cache.md#cachehit) | If the cache was hit during this span. | | [`cache.item_size`](./cache.md#cacheitem_size) | The size of the requested item in the cache. In bytes. | | [`cache.key`](./cache.md#cachekey) | The key of the cache accessed. | @@ -151,10 +157,6 @@ Total attributes: 422 | [`jvm.memory.type`](./jvm.md#jvmmemorytype) | Name of the memory pool. | | [`jvm.thread.daemon`](./jvm.md#jvmthreaddaemon) | Whether the thread is daemon or not. | | [`jvm.thread.state`](./jvm.md#jvmthreadstate) | State of the thread. | -| [`lcp.element`](./lcp.md#lcpelement) | The dom element responsible for the largest contentful paint. | -| [`lcp.id`](./lcp.md#lcpid) | The id of the dom element responsible for the largest contentful paint. | -| [`lcp.size`](./lcp.md#lcpsize) | The size of the largest contentful paint element. | -| [`lcp.url`](./lcp.md#lcpurl) | The url of the dom element responsible for the largest contentful paint. | | [`logger.name`](./logger.md#loggername) | The name of the logger that generated this event. | | [`mcp.cancelled.reason`](./mcp.md#mcpcancelledreason) | Reason for the cancellation of an MCP operation. | | [`mcp.cancelled.request_id`](./mcp.md#mcpcancelledrequest_id) | Request ID of the cancelled MCP operation. | @@ -410,6 +412,12 @@ Total attributes: 422 | [`http.target`](./http.md#httptarget) | [`url.path`](./url.md#urlpath) | | [`http.url`](./http.md#httpurl) | [`url.full`](./url.md#urlfull) | | [`http.user_agent`](./http.md#httpuser_agent) | [`user_agent.original`](./user_agent.md#user_agentoriginal) | +| [`lcp.element`](./lcp.md#lcpelement) | [`browser.web_vital.lcp.element`](./browser.md#browserweb_vitallcpelement) | +| [`lcp.id`](./lcp.md#lcpid) | [`browser.web_vital.lcp.id`](./browser.md#browserweb_vitallcpid) | +| [`lcp.loadTime`](./lcp.md#lcploadtime) | [`browser.web_vital.lcp.load_time`](./browser.md#browserweb_vitallcpload_time) | +| [`lcp.renderTime`](./lcp.md#lcprendertime) | [`browser.web_vital.lcp.render_time`](./browser.md#browserweb_vitallcprender_time) | +| [`lcp.size`](./lcp.md#lcpsize) | [`browser.web_vital.lcp.size`](./browser.md#browserweb_vitallcpsize) | +| [`lcp.url`](./lcp.md#lcpurl) | [`browser.web_vital.lcp.url`](./browser.md#browserweb_vitallcpurl) | | [`method`](./general.md#method) | [`http.request.method`](./http.md#httprequestmethod) | | [`net.host.ip`](./net.md#nethostip) | [`network.local.address`](./network.md#networklocaladdress) | | [`net.host.name`](./net.md#nethostname) | [`server.address`](./server.md#serveraddress) | diff --git a/generated/attributes/browser.md b/generated/attributes/browser.md index 2295102b..8111d872 100644 --- a/generated/attributes/browser.md +++ b/generated/attributes/browser.md @@ -9,6 +9,12 @@ - [browser.script.invoker_type](#browserscriptinvoker_type) - [browser.script.source_char_position](#browserscriptsource_char_position) - [browser.version](#browserversion) + - [browser.web_vital.lcp.element](#browserweb_vitallcpelement) + - [browser.web_vital.lcp.id](#browserweb_vitallcpid) + - [browser.web_vital.lcp.load_time](#browserweb_vitallcpload_time) + - [browser.web_vital.lcp.render_time](#browserweb_vitallcprender_time) + - [browser.web_vital.lcp.size](#browserweb_vitallcpsize) + - [browser.web_vital.lcp.url](#browserweb_vitallcpurl) ## Stable Attributes @@ -80,3 +86,75 @@ The version of the browser. | Example | `120.0.6099.130` | | Aliases | `sentry.browser.version` | +### browser.web_vital.lcp.element + +The HTML element selector or component name for which LCP was reported + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `body > div#app > div#container > div` | +| Aliases | `lcp.element` | + +### browser.web_vital.lcp.id + +The id of the dom element responsible for the largest contentful paint + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `#gero` | +| Aliases | `lcp.id` | + +### browser.web_vital.lcp.load_time + +The time it took for the LCP element to be loaded + +| Property | Value | +| --- | --- | +| Type | `integer` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `1402` | +| Aliases | `lcp.loadTime` | + +### browser.web_vital.lcp.render_time + +The time it took for the LCP element to be rendered + +| Property | Value | +| --- | --- | +| Type | `integer` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `1685` | +| Aliases | `lcp.renderTime` | + +### browser.web_vital.lcp.size + +The size of the largest contentful paint element + +| Property | Value | +| --- | --- | +| Type | `integer` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `1024` | +| Aliases | `lcp.size` | + +### browser.web_vital.lcp.url + +The url of the dom element responsible for the largest contentful paint + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `https://example.com/static/img.png` | +| Aliases | `lcp.url` | + diff --git a/generated/attributes/lcp.md b/generated/attributes/lcp.md index d4cf58dd..2ac0467d 100644 --- a/generated/attributes/lcp.md +++ b/generated/attributes/lcp.md @@ -2,13 +2,17 @@ # Lcp Attributes -- [Stable Attributes](#stable-attributes) +- [Deprecated Attributes](#deprecated-attributes) - [lcp.element](#lcpelement) - [lcp.id](#lcpid) + - [lcp.loadTime](#lcploadtime) + - [lcp.renderTime](#lcprendertime) - [lcp.size](#lcpsize) - [lcp.url](#lcpurl) -## Stable Attributes +## Deprecated Attributes + +These attributes are deprecated and will be removed in a future version. Please use the recommended replacements. ### lcp.element @@ -20,6 +24,9 @@ The dom element responsible for the largest contentful paint. | Has PII | maybe | | Exists in OpenTelemetry | No | | Example | `img` | +| Deprecated | Yes, use `browser.web_vital.lcp.element` instead | +| Deprecation Reason | The LCP element is now recorded as a browser.web_vital.lcp.element attribute. | +| Aliases | `browser.web_vital.lcp.element` | ### lcp.id @@ -31,6 +38,37 @@ The id of the dom element responsible for the largest contentful paint. | Has PII | maybe | | Exists in OpenTelemetry | No | | Example | `#hero` | +| Deprecated | Yes, use `browser.web_vital.lcp.id` instead | +| Deprecation Reason | The LCP id is now recorded as a browser.web_vital.lcp.id attribute. | +| Aliases | `browser.web_vital.lcp.id` | + +### lcp.loadTime + +The time it took for the LCP element to be loaded + +| Property | Value | +| --- | --- | +| Type | `integer` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `1402` | +| Deprecated | Yes, use `browser.web_vital.lcp.load_time` instead | +| Deprecation Reason | The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute. | +| Aliases | `browser.web_vital.lcp.load_time` | + +### lcp.renderTime + +The time it took for the LCP element to be rendered + +| Property | Value | +| --- | --- | +| Type | `integer` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `1685` | +| Deprecated | Yes, use `browser.web_vital.lcp.render_time` instead | +| Deprecation Reason | The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute. | +| Aliases | `browser.web_vital.lcp.render_time` | ### lcp.size @@ -42,6 +80,9 @@ The size of the largest contentful paint element. | Has PII | maybe | | Exists in OpenTelemetry | No | | Example | `1234` | +| Deprecated | Yes, use `browser.web_vital.lcp.size` instead | +| Deprecation Reason | The LCP size is now recorded as a browser.web_vital.lcp.size attribute. | +| Aliases | `browser.web_vital.lcp.size` | ### lcp.url @@ -53,4 +94,7 @@ The url of the dom element responsible for the largest contentful paint. | Has PII | maybe | | Exists in OpenTelemetry | No | | Example | `https://example.com` | +| Deprecated | Yes, use `browser.web_vital.lcp.url` instead | +| Deprecation Reason | The LCP url is now recorded as a browser.web_vital.lcp.url attribute. | +| Aliases | `browser.web_vital.lcp.url` | diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 7a5c8756..e3aa3846 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -878,6 +878,138 @@ export const BROWSER_VERSION = 'browser.version'; */ export type BROWSER_VERSION_TYPE = string; +// Path: model/attributes/browser/browser__web_vital__lcp__element.json + +/** + * The HTML element selector or component name for which LCP was reported `browser.web_vital.lcp.element` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_LCP_ELEMENT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_ELEMENT} `lcp.element` + * + * @example "body > div#app > div#container > div" + */ +export const BROWSER_WEB_VITAL_LCP_ELEMENT = 'browser.web_vital.lcp.element'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_ELEMENT} browser.web_vital.lcp.element + */ +export type BROWSER_WEB_VITAL_LCP_ELEMENT_TYPE = string; + +// Path: model/attributes/browser/browser__web_vital__lcp__id.json + +/** + * The id of the dom element responsible for the largest contentful paint `browser.web_vital.lcp.id` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_LCP_ID_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_ID} `lcp.id` + * + * @example "#gero" + */ +export const BROWSER_WEB_VITAL_LCP_ID = 'browser.web_vital.lcp.id'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_ID} browser.web_vital.lcp.id + */ +export type BROWSER_WEB_VITAL_LCP_ID_TYPE = string; + +// Path: model/attributes/browser/browser__web_vital__lcp__load_time.json + +/** + * The time it took for the LCP element to be loaded `browser.web_vital.lcp.load_time` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_LOADTIME} `lcp.loadTime` + * + * @example 1402 + */ +export const BROWSER_WEB_VITAL_LCP_LOAD_TIME = 'browser.web_vital.lcp.load_time'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME} browser.web_vital.lcp.load_time + */ +export type BROWSER_WEB_VITAL_LCP_LOAD_TIME_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__render_time.json + +/** + * The time it took for the LCP element to be rendered `browser.web_vital.lcp.render_time` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_RENDERTIME} `lcp.renderTime` + * + * @example 1685 + */ +export const BROWSER_WEB_VITAL_LCP_RENDER_TIME = 'browser.web_vital.lcp.render_time'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME} browser.web_vital.lcp.render_time + */ +export type BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__size.json + +/** + * The size of the largest contentful paint element `browser.web_vital.lcp.size` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_SIZE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_SIZE} `lcp.size` + * + * @example 1024 + */ +export const BROWSER_WEB_VITAL_LCP_SIZE = 'browser.web_vital.lcp.size'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_SIZE} browser.web_vital.lcp.size + */ +export type BROWSER_WEB_VITAL_LCP_SIZE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__url.json + +/** + * The url of the dom element responsible for the largest contentful paint `browser.web_vital.lcp.url` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_LCP_URL_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_URL} `lcp.url` + * + * @example "https://example.com/static/img.png" + */ +export const BROWSER_WEB_VITAL_LCP_URL = 'browser.web_vital.lcp.url'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_URL} browser.web_vital.lcp.url + */ +export type BROWSER_WEB_VITAL_LCP_URL_TYPE = string; + // Path: model/attributes/cache/cache__hit.json /** @@ -4052,6 +4184,9 @@ export type JVM_THREAD_STATE_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_ELEMENT} `browser.web_vital.lcp.element` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_ELEMENT} (browser.web_vital.lcp.element) instead - The LCP element is now recorded as a browser.web_vital.lcp.element attribute. * @example "img" */ export const LCP_ELEMENT = 'lcp.element'; @@ -4072,6 +4207,9 @@ export type LCP_ELEMENT_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_ID} `browser.web_vital.lcp.id` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_ID} (browser.web_vital.lcp.id) instead - The LCP id is now recorded as a browser.web_vital.lcp.id attribute. * @example "#hero" */ export const LCP_ID = 'lcp.id'; @@ -4081,6 +4219,52 @@ export const LCP_ID = 'lcp.id'; */ export type LCP_ID_TYPE = string; +// Path: model/attributes/lcp/lcp__loadTime.json + +/** + * The time it took for the LCP element to be loaded `lcp.loadTime` + * + * Attribute Value Type: `number` {@link LCP_LOADTIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME} `browser.web_vital.lcp.load_time` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME} (browser.web_vital.lcp.load_time) instead - The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute. + * @example 1402 + */ +export const LCP_LOADTIME = 'lcp.loadTime'; + +/** + * Type for {@link LCP_LOADTIME} lcp.loadTime + */ +export type LCP_LOADTIME_TYPE = number; + +// Path: model/attributes/lcp/lcp__renderTime.json + +/** + * The time it took for the LCP element to be rendered `lcp.renderTime` + * + * Attribute Value Type: `number` {@link LCP_RENDERTIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME} `browser.web_vital.lcp.render_time` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME} (browser.web_vital.lcp.render_time) instead - The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute. + * @example 1685 + */ +export const LCP_RENDERTIME = 'lcp.renderTime'; + +/** + * Type for {@link LCP_RENDERTIME} lcp.renderTime + */ +export type LCP_RENDERTIME_TYPE = number; + // Path: model/attributes/lcp/lcp__size.json /** @@ -4092,6 +4276,9 @@ export type LCP_ID_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_SIZE} `browser.web_vital.lcp.size` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_SIZE} (browser.web_vital.lcp.size) instead - The LCP size is now recorded as a browser.web_vital.lcp.size attribute. * @example 1234 */ export const LCP_SIZE = 'lcp.size'; @@ -4112,6 +4299,9 @@ export type LCP_SIZE_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_URL} `browser.web_vital.lcp.url` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_URL} (browser.web_vital.lcp.url) instead - The LCP url is now recorded as a browser.web_vital.lcp.url attribute. * @example "https://example.com" */ export const LCP_URL = 'lcp.url'; @@ -8849,6 +9039,12 @@ export const ATTRIBUTE_TYPE: Record = { [BROWSER_SCRIPT_INVOKER_TYPE]: 'string', [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]: 'integer', [BROWSER_VERSION]: 'string', + [BROWSER_WEB_VITAL_LCP_ELEMENT]: 'string', + [BROWSER_WEB_VITAL_LCP_ID]: 'string', + [BROWSER_WEB_VITAL_LCP_LOAD_TIME]: 'integer', + [BROWSER_WEB_VITAL_LCP_RENDER_TIME]: 'integer', + [BROWSER_WEB_VITAL_LCP_SIZE]: 'integer', + [BROWSER_WEB_VITAL_LCP_URL]: 'string', [CACHE_HIT]: 'boolean', [CACHE_ITEM_SIZE]: 'integer', [CACHE_KEY]: 'string[]', @@ -9002,6 +9198,8 @@ export const ATTRIBUTE_TYPE: Record = { [JVM_THREAD_STATE]: 'string', [LCP_ELEMENT]: 'string', [LCP_ID]: 'string', + [LCP_LOADTIME]: 'integer', + [LCP_RENDERTIME]: 'integer', [LCP_SIZE]: 'integer', [LCP_URL]: 'string', [LOGGER_NAME]: 'string', @@ -9274,6 +9472,12 @@ export type AttributeName = | typeof BROWSER_SCRIPT_INVOKER_TYPE | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION | typeof BROWSER_VERSION + | typeof BROWSER_WEB_VITAL_LCP_ELEMENT + | typeof BROWSER_WEB_VITAL_LCP_ID + | typeof BROWSER_WEB_VITAL_LCP_LOAD_TIME + | typeof BROWSER_WEB_VITAL_LCP_RENDER_TIME + | typeof BROWSER_WEB_VITAL_LCP_SIZE + | typeof BROWSER_WEB_VITAL_LCP_URL | typeof CACHE_HIT | typeof CACHE_ITEM_SIZE | typeof CACHE_KEY @@ -9427,6 +9631,8 @@ export type AttributeName = | typeof JVM_THREAD_STATE | typeof LCP_ELEMENT | typeof LCP_ID + | typeof LCP_LOADTIME + | typeof LCP_RENDERTIME | typeof LCP_SIZE | typeof LCP_URL | typeof LOGGER_NAME @@ -10122,6 +10328,72 @@ export const ATTRIBUTE_METADATA: Record = { example: '120.0.6099.130', aliases: [SENTRY_BROWSER_VERSION], }, + [BROWSER_WEB_VITAL_LCP_ELEMENT]: { + brief: 'The HTML element selector or component name for which LCP was reported', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'body > div#app > div#container > div', + aliases: [LCP_ELEMENT], + sdks: ['javascript-browser'], + }, + [BROWSER_WEB_VITAL_LCP_ID]: { + brief: 'The id of the dom element responsible for the largest contentful paint', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '#gero', + aliases: [LCP_ID], + sdks: ['javascript-browser'], + }, + [BROWSER_WEB_VITAL_LCP_LOAD_TIME]: { + brief: 'The time it took for the LCP element to be loaded', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1402, + aliases: [LCP_LOADTIME], + sdks: ['javascript-browser'], + }, + [BROWSER_WEB_VITAL_LCP_RENDER_TIME]: { + brief: 'The time it took for the LCP element to be rendered', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1685, + aliases: [LCP_RENDERTIME], + sdks: ['javascript-browser'], + }, + [BROWSER_WEB_VITAL_LCP_SIZE]: { + brief: 'The size of the largest contentful paint element', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1024, + aliases: [LCP_SIZE], + sdks: ['javascript-browser'], + }, + [BROWSER_WEB_VITAL_LCP_URL]: { + brief: 'The url of the dom element responsible for the largest contentful paint', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'https://example.com/static/img.png', + aliases: [LCP_URL], + sdks: ['javascript-browser'], + }, [CACHE_HIT]: { brief: 'If the cache was hit during this span.', type: 'boolean', @@ -11724,6 +11996,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'img', + deprecation: { + replacement: 'browser.web_vital.lcp.element', + reason: 'The LCP element is now recorded as a browser.web_vital.lcp.element attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_ELEMENT], }, [LCP_ID]: { brief: 'The id of the dom element responsible for the largest contentful paint.', @@ -11733,6 +12010,41 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '#hero', + deprecation: { + replacement: 'browser.web_vital.lcp.id', + reason: 'The LCP id is now recorded as a browser.web_vital.lcp.id attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_ID], + }, + [LCP_LOADTIME]: { + brief: 'The time it took for the LCP element to be loaded', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1402, + deprecation: { + replacement: 'browser.web_vital.lcp.load_time', + reason: 'The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_LOAD_TIME], + sdks: ['javascript-browser'], + }, + [LCP_RENDERTIME]: { + brief: 'The time it took for the LCP element to be rendered', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1685, + deprecation: { + replacement: 'browser.web_vital.lcp.render_time', + reason: 'The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_RENDER_TIME], + sdks: ['javascript-browser'], }, [LCP_SIZE]: { brief: 'The size of the largest contentful paint element.', @@ -11742,6 +12054,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1234, + deprecation: { + replacement: 'browser.web_vital.lcp.size', + reason: 'The LCP size is now recorded as a browser.web_vital.lcp.size attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_SIZE], }, [LCP_URL]: { brief: 'The url of the dom element responsible for the largest contentful paint.', @@ -11751,6 +12068,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'https://example.com', + deprecation: { + replacement: 'browser.web_vital.lcp.url', + reason: 'The LCP url is now recorded as a browser.web_vital.lcp.url attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_URL], }, [LOGGER_NAME]: { brief: 'The name of the logger that generated this event.', @@ -14026,6 +14348,12 @@ export type Attributes = { [BROWSER_SCRIPT_INVOKER_TYPE]?: BROWSER_SCRIPT_INVOKER_TYPE_TYPE; [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]?: BROWSER_SCRIPT_SOURCE_CHAR_POSITION_TYPE; [BROWSER_VERSION]?: BROWSER_VERSION_TYPE; + [BROWSER_WEB_VITAL_LCP_ELEMENT]?: BROWSER_WEB_VITAL_LCP_ELEMENT_TYPE; + [BROWSER_WEB_VITAL_LCP_ID]?: BROWSER_WEB_VITAL_LCP_ID_TYPE; + [BROWSER_WEB_VITAL_LCP_LOAD_TIME]?: BROWSER_WEB_VITAL_LCP_LOAD_TIME_TYPE; + [BROWSER_WEB_VITAL_LCP_RENDER_TIME]?: BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE; + [BROWSER_WEB_VITAL_LCP_SIZE]?: BROWSER_WEB_VITAL_LCP_SIZE_TYPE; + [BROWSER_WEB_VITAL_LCP_URL]?: BROWSER_WEB_VITAL_LCP_URL_TYPE; [CACHE_HIT]?: CACHE_HIT_TYPE; [CACHE_ITEM_SIZE]?: CACHE_ITEM_SIZE_TYPE; [CACHE_KEY]?: CACHE_KEY_TYPE; @@ -14179,6 +14507,8 @@ export type Attributes = { [JVM_THREAD_STATE]?: JVM_THREAD_STATE_TYPE; [LCP_ELEMENT]?: LCP_ELEMENT_TYPE; [LCP_ID]?: LCP_ID_TYPE; + [LCP_LOADTIME]?: LCP_LOADTIME_TYPE; + [LCP_RENDERTIME]?: LCP_RENDERTIME_TYPE; [LCP_SIZE]?: LCP_SIZE_TYPE; [LCP_URL]?: LCP_URL_TYPE; [LOGGER_NAME]?: LOGGER_NAME_TYPE; diff --git a/model/attributes/browser/browser__web_vital__lcp__element.json b/model/attributes/browser/browser__web_vital__lcp__element.json new file mode 100644 index 00000000..04099c51 --- /dev/null +++ b/model/attributes/browser/browser__web_vital__lcp__element.json @@ -0,0 +1,12 @@ +{ + "key": "browser.web_vital.lcp.element", + "brief": "The HTML element selector or component name for which LCP was reported", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "body > div#app > div#container > div", + "alias": ["lcp.element"], + "sdks": ["javascript-browser"] +} diff --git a/model/attributes/browser/browser__web_vital__lcp__id.json b/model/attributes/browser/browser__web_vital__lcp__id.json new file mode 100644 index 00000000..e47fc086 --- /dev/null +++ b/model/attributes/browser/browser__web_vital__lcp__id.json @@ -0,0 +1,12 @@ +{ + "key": "browser.web_vital.lcp.id", + "brief": "The id of the dom element responsible for the largest contentful paint", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "#gero", + "alias": ["lcp.id"], + "sdks": ["javascript-browser"] +} diff --git a/model/attributes/browser/browser__web_vital__lcp__load_time.json b/model/attributes/browser/browser__web_vital__lcp__load_time.json new file mode 100644 index 00000000..8773269c --- /dev/null +++ b/model/attributes/browser/browser__web_vital__lcp__load_time.json @@ -0,0 +1,12 @@ +{ + "key": "browser.web_vital.lcp.load_time", + "brief": "The time it took for the LCP element to be loaded", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1402, + "alias": ["lcp.loadTime"], + "sdks": ["javascript-browser"] +} diff --git a/model/attributes/browser/browser__web_vital__lcp__render_time.json b/model/attributes/browser/browser__web_vital__lcp__render_time.json new file mode 100644 index 00000000..de923b9b --- /dev/null +++ b/model/attributes/browser/browser__web_vital__lcp__render_time.json @@ -0,0 +1,12 @@ +{ + "key": "browser.web_vital.lcp.render_time", + "brief": "The time it took for the LCP element to be rendered", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1685, + "alias": ["lcp.renderTime"], + "sdks": ["javascript-browser"] +} diff --git a/model/attributes/browser/browser__web_vital__lcp__size.json b/model/attributes/browser/browser__web_vital__lcp__size.json new file mode 100644 index 00000000..c34c43cb --- /dev/null +++ b/model/attributes/browser/browser__web_vital__lcp__size.json @@ -0,0 +1,12 @@ +{ + "key": "browser.web_vital.lcp.size", + "brief": "The size of the largest contentful paint element", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1024, + "alias": ["lcp.size"], + "sdks": ["javascript-browser"] +} diff --git a/model/attributes/browser/browser__web_vital__lcp__url.json b/model/attributes/browser/browser__web_vital__lcp__url.json new file mode 100644 index 00000000..4400dab6 --- /dev/null +++ b/model/attributes/browser/browser__web_vital__lcp__url.json @@ -0,0 +1,12 @@ +{ + "key": "browser.web_vital.lcp.url", + "brief": "The url of the dom element responsible for the largest contentful paint", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "https://example.com/static/img.png", + "alias": ["lcp.url"], + "sdks": ["javascript-browser"] +} diff --git a/model/attributes/lcp/lcp__element.json b/model/attributes/lcp/lcp__element.json index 2e7ad180..5448f813 100644 --- a/model/attributes/lcp/lcp__element.json +++ b/model/attributes/lcp/lcp__element.json @@ -6,5 +6,11 @@ "key": "maybe" }, "is_in_otel": false, - "example": "img" + "example": "img", + "deprecation": { + "replacement": "browser.web_vital.lcp.element", + "reason": "The LCP element is now recorded as a browser.web_vital.lcp.element attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.element"] } diff --git a/model/attributes/lcp/lcp__id.json b/model/attributes/lcp/lcp__id.json index e8776a9d..e8eb1654 100644 --- a/model/attributes/lcp/lcp__id.json +++ b/model/attributes/lcp/lcp__id.json @@ -6,5 +6,11 @@ "key": "maybe" }, "is_in_otel": false, - "example": "#hero" + "example": "#hero", + "deprecation": { + "replacement": "browser.web_vital.lcp.id", + "reason": "The LCP id is now recorded as a browser.web_vital.lcp.id attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.id"] } diff --git a/model/attributes/lcp/lcp__loadTime.json b/model/attributes/lcp/lcp__loadTime.json new file mode 100644 index 00000000..b8065c2a --- /dev/null +++ b/model/attributes/lcp/lcp__loadTime.json @@ -0,0 +1,17 @@ +{ + "key": "lcp.loadTime", + "brief": "The time it took for the LCP element to be loaded", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1402, + "sdks": ["javascript-browser"], + "deprecation": { + "replacement": "browser.web_vital.lcp.load_time", + "reason": "The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.load_time"] +} diff --git a/model/attributes/lcp/lcp__renderTime.json b/model/attributes/lcp/lcp__renderTime.json new file mode 100644 index 00000000..3e41719a --- /dev/null +++ b/model/attributes/lcp/lcp__renderTime.json @@ -0,0 +1,17 @@ +{ + "key": "lcp.renderTime", + "brief": "The time it took for the LCP element to be rendered", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1685, + "sdks": ["javascript-browser"], + "deprecation": { + "replacement": "browser.web_vital.lcp.render_time", + "reason": "The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.render_time"] +} diff --git a/model/attributes/lcp/lcp__size.json b/model/attributes/lcp/lcp__size.json index d329a07d..f3570211 100644 --- a/model/attributes/lcp/lcp__size.json +++ b/model/attributes/lcp/lcp__size.json @@ -6,5 +6,11 @@ "key": "maybe" }, "is_in_otel": false, - "example": 1234 + "example": 1234, + "deprecation": { + "replacement": "browser.web_vital.lcp.size", + "reason": "The LCP size is now recorded as a browser.web_vital.lcp.size attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.size"] } diff --git a/model/attributes/lcp/lcp__url.json b/model/attributes/lcp/lcp__url.json index e6e0b24a..6a037b4d 100644 --- a/model/attributes/lcp/lcp__url.json +++ b/model/attributes/lcp/lcp__url.json @@ -6,5 +6,11 @@ "key": "maybe" }, "is_in_otel": false, - "example": "https://example.com" + "example": "https://example.com", + "deprecation": { + "replacement": "browser.web_vital.lcp.url", + "reason": "The LCP url is now recorded as a browser.web_vital.lcp.url attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.url"] } diff --git a/package.json b/package.json index a23276c2..8ce4d10e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "lint-fix": "biome lint . --write", "test": "yarn test:js && yarn test:python", - "test:js": "vitest", + "test:js": "vitest --run", "test:python": "(cd python && uv venv && uv pip install -e . && uv run pytest)", "build": "yarn build:js && yarn build:python && yarn build:tarball", diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index a1678932..a28bf1b8 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -136,6 +136,12 @@ class _AttributeNamesMeta(type): "HTTP_TARGET", "HTTP_URL", "HTTP_USER_AGENT", + "LCP_ELEMENT", + "LCP_ID", + "LCP_LOADTIME", + "LCP_RENDERTIME", + "LCP_SIZE", + "LCP_URL", "METHOD", "NET_HOST_IP", "NET_HOST_NAME", @@ -635,6 +641,84 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "120.0.6099.130" """ + # Path: model/attributes/browser/browser__web_vital__lcp__element.json + BROWSER_WEB_VITAL_LCP_ELEMENT: Literal["browser.web_vital.lcp.element"] = ( + "browser.web_vital.lcp.element" + ) + """The HTML element selector or component name for which LCP was reported + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.element + Example: "body > div#app > div#container > div" + """ + + # Path: model/attributes/browser/browser__web_vital__lcp__id.json + BROWSER_WEB_VITAL_LCP_ID: Literal["browser.web_vital.lcp.id"] = ( + "browser.web_vital.lcp.id" + ) + """The id of the dom element responsible for the largest contentful paint + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.id + Example: "#gero" + """ + + # Path: model/attributes/browser/browser__web_vital__lcp__load_time.json + BROWSER_WEB_VITAL_LCP_LOAD_TIME: Literal["browser.web_vital.lcp.load_time"] = ( + "browser.web_vital.lcp.load_time" + ) + """The time it took for the LCP element to be loaded + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.loadTime + Example: 1402 + """ + + # Path: model/attributes/browser/browser__web_vital__lcp__render_time.json + BROWSER_WEB_VITAL_LCP_RENDER_TIME: Literal["browser.web_vital.lcp.render_time"] = ( + "browser.web_vital.lcp.render_time" + ) + """The time it took for the LCP element to be rendered + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.renderTime + Example: 1685 + """ + + # Path: model/attributes/browser/browser__web_vital__lcp__size.json + BROWSER_WEB_VITAL_LCP_SIZE: Literal["browser.web_vital.lcp.size"] = ( + "browser.web_vital.lcp.size" + ) + """The size of the largest contentful paint element + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.size + Example: 1024 + """ + + # Path: model/attributes/browser/browser__web_vital__lcp__url.json + BROWSER_WEB_VITAL_LCP_URL: Literal["browser.web_vital.lcp.url"] = ( + "browser.web_vital.lcp.url" + ) + """The url of the dom element responsible for the largest contentful paint + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.url + Example: "https://example.com/static/img.png" + """ + # Path: model/attributes/cache/cache__hit.json CACHE_HIT: Literal["cache.hit"] = "cache.hit" """If the cache was hit during this span. @@ -2345,6 +2429,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.element + DEPRECATED: Use browser.web_vital.lcp.element instead - The LCP element is now recorded as a browser.web_vital.lcp.element attribute. Example: "img" """ @@ -2355,9 +2441,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.id + DEPRECATED: Use browser.web_vital.lcp.id instead - The LCP id is now recorded as a browser.web_vital.lcp.id attribute. Example: "#hero" """ + # Path: model/attributes/lcp/lcp__loadTime.json + LCP_LOADTIME: Literal["lcp.loadTime"] = "lcp.loadTime" + """The time it took for the LCP element to be loaded + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.lcp.load_time + DEPRECATED: Use browser.web_vital.lcp.load_time instead - The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute. + Example: 1402 + """ + + # Path: model/attributes/lcp/lcp__renderTime.json + LCP_RENDERTIME: Literal["lcp.renderTime"] = "lcp.renderTime" + """The time it took for the LCP element to be rendered + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.lcp.render_time + DEPRECATED: Use browser.web_vital.lcp.render_time instead - The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute. + Example: 1685 + """ + # Path: model/attributes/lcp/lcp__size.json LCP_SIZE: Literal["lcp.size"] = "lcp.size" """The size of the largest contentful paint element. @@ -2365,6 +2477,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: int Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.size + DEPRECATED: Use browser.web_vital.lcp.size instead - The LCP size is now recorded as a browser.web_vital.lcp.size attribute. Example: 1234 """ @@ -2375,6 +2489,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.url + DEPRECATED: Use browser.web_vital.lcp.url instead - The LCP url is now recorded as a browser.web_vital.lcp.url attribute. Example: "https://example.com" """ @@ -5155,6 +5271,60 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="120.0.6099.130", aliases=["sentry.browser.version"], ), + "browser.web_vital.lcp.element": AttributeMetadata( + brief="The HTML element selector or component name for which LCP was reported", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="body > div#app > div#container > div", + aliases=["lcp.element"], + sdks=["javascript-browser"], + ), + "browser.web_vital.lcp.id": AttributeMetadata( + brief="The id of the dom element responsible for the largest contentful paint", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="#gero", + aliases=["lcp.id"], + sdks=["javascript-browser"], + ), + "browser.web_vital.lcp.load_time": AttributeMetadata( + brief="The time it took for the LCP element to be loaded", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1402, + aliases=["lcp.loadTime"], + sdks=["javascript-browser"], + ), + "browser.web_vital.lcp.render_time": AttributeMetadata( + brief="The time it took for the LCP element to be rendered", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1685, + aliases=["lcp.renderTime"], + sdks=["javascript-browser"], + ), + "browser.web_vital.lcp.size": AttributeMetadata( + brief="The size of the largest contentful paint element", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1024, + aliases=["lcp.size"], + sdks=["javascript-browser"], + ), + "browser.web_vital.lcp.url": AttributeMetadata( + brief="The url of the dom element responsible for the largest contentful paint", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="https://example.com/static/img.png", + aliases=["lcp.url"], + sdks=["javascript-browser"], + ), "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", type=AttributeType.BOOLEAN, @@ -6367,6 +6537,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="img", + deprecation=DeprecationInfo( + replacement="browser.web_vital.lcp.element", + reason="The LCP element is now recorded as a browser.web_vital.lcp.element attribute.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["browser.web_vital.lcp.element"], ), "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", @@ -6374,6 +6550,40 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#hero", + deprecation=DeprecationInfo( + replacement="browser.web_vital.lcp.id", + reason="The LCP id is now recorded as a browser.web_vital.lcp.id attribute.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["browser.web_vital.lcp.id"], + ), + "lcp.loadTime": AttributeMetadata( + brief="The time it took for the LCP element to be loaded", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1402, + deprecation=DeprecationInfo( + replacement="browser.web_vital.lcp.load_time", + reason="The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["browser.web_vital.lcp.load_time"], + sdks=["javascript-browser"], + ), + "lcp.renderTime": AttributeMetadata( + brief="The time it took for the LCP element to be rendered", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1685, + deprecation=DeprecationInfo( + replacement="browser.web_vital.lcp.render_time", + reason="The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["browser.web_vital.lcp.render_time"], + sdks=["javascript-browser"], ), "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", @@ -6381,6 +6591,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1234, + deprecation=DeprecationInfo( + replacement="browser.web_vital.lcp.size", + reason="The LCP size is now recorded as a browser.web_vital.lcp.size attribute.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["browser.web_vital.lcp.size"], ), "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", @@ -6388,6 +6604,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com", + deprecation=DeprecationInfo( + replacement="browser.web_vital.lcp.url", + reason="The LCP url is now recorded as a browser.web_vital.lcp.url attribute.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["browser.web_vital.lcp.url"], ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", @@ -8156,6 +8378,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker_type": str, "browser.script.source_char_position": int, "browser.version": str, + "browser.web_vital.lcp.element": str, + "browser.web_vital.lcp.id": str, + "browser.web_vital.lcp.load_time": int, + "browser.web_vital.lcp.render_time": int, + "browser.web_vital.lcp.size": int, + "browser.web_vital.lcp.url": str, "cache.hit": bool, "cache.item_size": int, "cache.key": List[str], @@ -8309,6 +8537,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.thread.state": str, "lcp.element": str, "lcp.id": str, + "lcp.loadTime": int, + "lcp.renderTime": int, "lcp.size": int, "lcp.url": str, "logger.name": str, diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index f02695e3..68ccd18d 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -879,6 +879,104 @@ }, "alias": ["user_agent.original"] }, + { + "key": "lcp.element", + "brief": "The dom element responsible for the largest contentful paint.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "img", + "deprecation": { + "replacement": "browser.web_vital.lcp.element", + "reason": "The LCP element is now recorded as a browser.web_vital.lcp.element attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.element"] + }, + { + "key": "lcp.id", + "brief": "The id of the dom element responsible for the largest contentful paint.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "#hero", + "deprecation": { + "replacement": "browser.web_vital.lcp.id", + "reason": "The LCP id is now recorded as a browser.web_vital.lcp.id attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.id"] + }, + { + "key": "lcp.loadTime", + "brief": "The time it took for the LCP element to be loaded", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1402, + "sdks": ["javascript-browser"], + "deprecation": { + "replacement": "browser.web_vital.lcp.load_time", + "reason": "The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.load_time"] + }, + { + "key": "lcp.renderTime", + "brief": "The time it took for the LCP element to be rendered", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1685, + "sdks": ["javascript-browser"], + "deprecation": { + "replacement": "browser.web_vital.lcp.render_time", + "reason": "The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.render_time"] + }, + { + "key": "lcp.size", + "brief": "The size of the largest contentful paint element.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1234, + "deprecation": { + "replacement": "browser.web_vital.lcp.size", + "reason": "The LCP size is now recorded as a browser.web_vital.lcp.size attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.size"] + }, + { + "key": "lcp.url", + "brief": "The url of the dom element responsible for the largest contentful paint.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "https://example.com", + "deprecation": { + "replacement": "browser.web_vital.lcp.url", + "reason": "The LCP url is now recorded as a browser.web_vital.lcp.url attribute.", + "_status": "backfill" + }, + "alias": ["browser.web_vital.lcp.url"] + }, { "key": "net.host.ip", "brief": "Local address of the network connection - IP address or Unix domain socket name.",