diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index f28c8b46..17736a81 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -967,6 +967,9 @@ export type APP_START_TIME_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_VITALS_START_TYPE} `app.vitals.start.type` + * + * @deprecated Use {@link APP_VITALS_START_TYPE} (app.vitals.start.type) instead - Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes * @example "cold" */ export const APP_START_TYPE = 'app_start_type'; @@ -998,6 +1001,200 @@ export const APP_VERSION = 'app.version'; */ export type APP_VERSION_TYPE = string; +// Path: model/attributes/app/app__vitals__frames__delay__value.json + +/** + * The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/). `app.vitals.frames.delay.value` + * + * Attribute Value Type: `number` {@link APP_VITALS_FRAMES_DELAY_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link FRAMES_DELAY} `frames.delay` + * + * @example 5 + */ +export const APP_VITALS_FRAMES_DELAY_VALUE = 'app.vitals.frames.delay.value'; + +/** + * Type for {@link APP_VITALS_FRAMES_DELAY_VALUE} app.vitals.frames.delay.value + */ +export type APP_VITALS_FRAMES_DELAY_VALUE_TYPE = number; + +// Path: model/attributes/app/app__vitals__frames__frozen__count.json + +/** + * The number of frozen frames rendered during the lifetime of the span. `app.vitals.frames.frozen.count` + * + * Attribute Value Type: `number` {@link APP_VITALS_FRAMES_FROZEN_COUNT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link FRAMES_FROZEN} `frames.frozen` + * + * @example 3 + */ +export const APP_VITALS_FRAMES_FROZEN_COUNT = 'app.vitals.frames.frozen.count'; + +/** + * Type for {@link APP_VITALS_FRAMES_FROZEN_COUNT} app.vitals.frames.frozen.count + */ +export type APP_VITALS_FRAMES_FROZEN_COUNT_TYPE = number; + +// Path: model/attributes/app/app__vitals__frames__slow__count.json + +/** + * The number of slow frames rendered during the lifetime of the span. `app.vitals.frames.slow.count` + * + * Attribute Value Type: `number` {@link APP_VITALS_FRAMES_SLOW_COUNT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link FRAMES_SLOW} `frames.slow` + * + * @example 1 + */ +export const APP_VITALS_FRAMES_SLOW_COUNT = 'app.vitals.frames.slow.count'; + +/** + * Type for {@link APP_VITALS_FRAMES_SLOW_COUNT} app.vitals.frames.slow.count + */ +export type APP_VITALS_FRAMES_SLOW_COUNT_TYPE = number; + +// Path: model/attributes/app/app__vitals__frames__total__count.json + +/** + * The number of total frames rendered during the lifetime of the span. `app.vitals.frames.total.count` + * + * Attribute Value Type: `number` {@link APP_VITALS_FRAMES_TOTAL_COUNT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link FRAMES_TOTAL} `frames.total` + * + * @example 60 + */ +export const APP_VITALS_FRAMES_TOTAL_COUNT = 'app.vitals.frames.total.count'; + +/** + * Type for {@link APP_VITALS_FRAMES_TOTAL_COUNT} app.vitals.frames.total.count + */ +export type APP_VITALS_FRAMES_TOTAL_COUNT_TYPE = number; + +// Path: model/attributes/app/app__vitals__start__cold__value.json + +/** + * The duration of a cold app start in milliseconds `app.vitals.start.cold.value` + * + * Attribute Value Type: `number` {@link APP_VITALS_START_COLD_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 1234.56 + */ +export const APP_VITALS_START_COLD_VALUE = 'app.vitals.start.cold.value'; + +/** + * Type for {@link APP_VITALS_START_COLD_VALUE} app.vitals.start.cold.value + */ +export type APP_VITALS_START_COLD_VALUE_TYPE = number; + +// Path: model/attributes/app/app__vitals__start__type.json + +/** + * The type of app start, for example `cold` or `warm` `app.vitals.start.type` + * + * Attribute Value Type: `string` {@link APP_VITALS_START_TYPE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_START_TYPE} `app_start_type` + * + * @example "cold" + */ +export const APP_VITALS_START_TYPE = 'app.vitals.start.type'; + +/** + * Type for {@link APP_VITALS_START_TYPE} app.vitals.start.type + */ +export type APP_VITALS_START_TYPE_TYPE = string; + +// Path: model/attributes/app/app__vitals__start__warm__value.json + +/** + * The duration of a warm app start in milliseconds `app.vitals.start.warm.value` + * + * Attribute Value Type: `number` {@link APP_VITALS_START_WARM_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 1234.56 + */ +export const APP_VITALS_START_WARM_VALUE = 'app.vitals.start.warm.value'; + +/** + * Type for {@link APP_VITALS_START_WARM_VALUE} app.vitals.start.warm.value + */ +export type APP_VITALS_START_WARM_VALUE_TYPE = number; + +// Path: model/attributes/app/app__vitals__ttfd__value.json + +/** + * The duration of time to full display in milliseconds `app.vitals.ttfd.value` + * + * Attribute Value Type: `number` {@link APP_VITALS_TTFD_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link TIME_TO_FULL_DISPLAY} `time_to_full_display` + * + * @example 1234.56 + */ +export const APP_VITALS_TTFD_VALUE = 'app.vitals.ttfd.value'; + +/** + * Type for {@link APP_VITALS_TTFD_VALUE} app.vitals.ttfd.value + */ +export type APP_VITALS_TTFD_VALUE_TYPE = number; + +// Path: model/attributes/app/app__vitals__ttid__value.json + +/** + * The duration of time to initial display in milliseconds `app.vitals.ttid.value` + * + * Attribute Value Type: `number` {@link APP_VITALS_TTID_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link TIME_TO_INITIAL_DISPLAY} `time_to_initial_display` + * + * @example 1234.56 + */ +export const APP_VITALS_TTID_VALUE = 'app.vitals.ttid.value'; + +/** + * Type for {@link APP_VITALS_TTID_VALUE} app.vitals.ttid.value + */ +export type APP_VITALS_TTID_VALUE_TYPE = number; + // Path: model/attributes/blocked_main_thread.json /** @@ -3502,6 +3699,9 @@ export type FP_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_VITALS_FRAMES_DELAY_VALUE} `app.vitals.frames.delay.value` + * + * @deprecated Use {@link APP_VITALS_FRAMES_DELAY_VALUE} (app.vitals.frames.delay.value) instead - Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes * @example 5 */ export const FRAMES_DELAY = 'frames.delay'; @@ -3522,6 +3722,9 @@ export type FRAMES_DELAY_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_VITALS_FRAMES_FROZEN_COUNT} `app.vitals.frames.frozen.count` + * + * @deprecated Use {@link APP_VITALS_FRAMES_FROZEN_COUNT} (app.vitals.frames.frozen.count) instead - Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes * @example 3 */ export const FRAMES_FROZEN = 'frames.frozen'; @@ -3542,6 +3745,9 @@ export type FRAMES_FROZEN_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_VITALS_FRAMES_SLOW_COUNT} `app.vitals.frames.slow.count` + * + * @deprecated Use {@link APP_VITALS_FRAMES_SLOW_COUNT} (app.vitals.frames.slow.count) instead - Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes * @example 1 */ export const FRAMES_SLOW = 'frames.slow'; @@ -3562,6 +3768,9 @@ export type FRAMES_SLOW_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_VITALS_FRAMES_TOTAL_COUNT} `app.vitals.frames.total.count` + * + * @deprecated Use {@link APP_VITALS_FRAMES_TOTAL_COUNT} (app.vitals.frames.total.count) instead - Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes * @example 60 */ export const FRAMES_TOTAL = 'frames.total'; @@ -9568,6 +9777,52 @@ export const TIMBER_TAG = 'timber.tag'; */ export type TIMBER_TAG_TYPE = string; +// Path: model/attributes/time_to_full_display.json + +/** + * The duration of time to full display in milliseconds `time_to_full_display` + * + * Attribute Value Type: `number` {@link TIME_TO_FULL_DISPLAY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_VITALS_TTFD_VALUE} `app.vitals.ttfd.value` + * + * @deprecated Use {@link APP_VITALS_TTFD_VALUE} (app.vitals.ttfd.value) instead - Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes + * @example 1234.56 + */ +export const TIME_TO_FULL_DISPLAY = 'time_to_full_display'; + +/** + * Type for {@link TIME_TO_FULL_DISPLAY} time_to_full_display + */ +export type TIME_TO_FULL_DISPLAY_TYPE = number; + +// Path: model/attributes/time_to_initial_display.json + +/** + * The duration of time to initial display in milliseconds `time_to_initial_display` + * + * Attribute Value Type: `number` {@link TIME_TO_INITIAL_DISPLAY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_VITALS_TTID_VALUE} `app.vitals.ttid.value` + * + * @deprecated Use {@link APP_VITALS_TTID_VALUE} (app.vitals.ttid.value) instead - Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes + * @example 1234.56 + */ +export const TIME_TO_INITIAL_DISPLAY = 'time_to_initial_display'; + +/** + * Type for {@link TIME_TO_INITIAL_DISPLAY} time_to_initial_display + */ +export type TIME_TO_INITIAL_DISPLAY_TYPE = number; + // Path: model/attributes/transaction.json /** @@ -11157,6 +11412,15 @@ export const ATTRIBUTE_TYPE: Record = { [APP_START_TIME]: 'string', [APP_START_TYPE]: 'string', [APP_VERSION]: 'string', + [APP_VITALS_FRAMES_DELAY_VALUE]: 'integer', + [APP_VITALS_FRAMES_FROZEN_COUNT]: 'integer', + [APP_VITALS_FRAMES_SLOW_COUNT]: 'integer', + [APP_VITALS_FRAMES_TOTAL_COUNT]: 'integer', + [APP_VITALS_START_COLD_VALUE]: 'double', + [APP_VITALS_START_TYPE]: 'string', + [APP_VITALS_START_WARM_VALUE]: 'double', + [APP_VITALS_TTFD_VALUE]: 'double', + [APP_VITALS_TTID_VALUE]: 'double', [BLOCKED_MAIN_THREAD]: 'boolean', [BROWSER_NAME]: 'string', [BROWSER_REPORT_TYPE]: 'string', @@ -11567,6 +11831,8 @@ export const ATTRIBUTE_TYPE: Record = { [THREAD_ID]: 'integer', [THREAD_NAME]: 'string', [TIMBER_TAG]: 'string', + [TIME_TO_FULL_DISPLAY]: 'double', + [TIME_TO_INITIAL_DISPLAY]: 'double', [TRANSACTION]: 'string', [TTFB]: 'double', [TTFB_REQUESTTIME]: 'double', @@ -11688,6 +11954,15 @@ export type AttributeName = | typeof APP_START_TIME | typeof APP_START_TYPE | typeof APP_VERSION + | typeof APP_VITALS_FRAMES_DELAY_VALUE + | typeof APP_VITALS_FRAMES_FROZEN_COUNT + | typeof APP_VITALS_FRAMES_SLOW_COUNT + | typeof APP_VITALS_FRAMES_TOTAL_COUNT + | typeof APP_VITALS_START_COLD_VALUE + | typeof APP_VITALS_START_TYPE + | typeof APP_VITALS_START_WARM_VALUE + | typeof APP_VITALS_TTFD_VALUE + | typeof APP_VITALS_TTID_VALUE | typeof BLOCKED_MAIN_THREAD | typeof BROWSER_NAME | typeof BROWSER_REPORT_TYPE @@ -12098,6 +12373,8 @@ export type AttributeName = | typeof THREAD_ID | typeof THREAD_NAME | typeof TIMBER_TAG + | typeof TIME_TO_FULL_DISPLAY + | typeof TIME_TO_INITIAL_DISPLAY | typeof TRANSACTION | typeof TTFB | typeof TTFB_REQUESTTIME @@ -12837,7 +13114,17 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'cold', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + deprecation: { + replacement: 'app.vitals.start.type', + reason: + 'Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_START_TYPE], + changelog: [ + { version: 'next', prs: [313], description: 'Deprecated in favor of app.vitals.start.type' }, + { version: '0.1.0', prs: [127] }, + { version: '0.0.0' }, + ], }, [APP_VERSION]: { brief: 'Human readable application version, as it appears on the platform.', @@ -12851,6 +13138,121 @@ export const ATTRIBUTE_METADATA: Record = { sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: 'next', prs: [296], description: 'Added app.version attribute' }], }, + [APP_VITALS_FRAMES_DELAY_VALUE]: { + brief: + 'The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 5, + aliases: [FRAMES_DELAY], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { version: 'next', prs: [313], description: 'Added app.vitals.frames.delay.value to replace frames.delay' }, + ], + }, + [APP_VITALS_FRAMES_FROZEN_COUNT]: { + brief: 'The number of frozen frames rendered during the lifetime of the span.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 3, + aliases: [FRAMES_FROZEN], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { version: 'next', prs: [313], description: 'Added app.vitals.frames.frozen.count to replace frames.frozen' }, + ], + }, + [APP_VITALS_FRAMES_SLOW_COUNT]: { + brief: 'The number of slow frames rendered during the lifetime of the span.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1, + aliases: [FRAMES_SLOW], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { version: 'next', prs: [313], description: 'Added app.vitals.frames.slow.count to replace frames.slow' }, + ], + }, + [APP_VITALS_FRAMES_TOTAL_COUNT]: { + brief: 'The number of total frames rendered during the lifetime of the span.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 60, + aliases: [FRAMES_TOTAL], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { version: 'next', prs: [313], description: 'Added app.vitals.frames.total.count to replace frames.total' }, + ], + }, + [APP_VITALS_START_COLD_VALUE]: { + brief: 'The duration of a cold app start in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1234.56, + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added app.vitals.start.cold.value attribute' }], + }, + [APP_VITALS_START_TYPE]: { + brief: 'The type of app start, for example `cold` or `warm`', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'cold', + aliases: [APP_START_TYPE], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added app.vitals.start.type attribute' }], + }, + [APP_VITALS_START_WARM_VALUE]: { + brief: 'The duration of a warm app start in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1234.56, + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added app.vitals.start.warm.value attribute' }], + }, + [APP_VITALS_TTFD_VALUE]: { + brief: 'The duration of time to full display in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1234.56, + aliases: [TIME_TO_FULL_DISPLAY], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added app.vitals.ttfd.value attribute' }], + }, + [APP_VITALS_TTID_VALUE]: { + brief: 'The duration of time to initial display in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1234.56, + aliases: [TIME_TO_INITIAL_DISPLAY], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added app.vitals.ttid.value attribute' }], + }, [BLOCKED_MAIN_THREAD]: { brief: 'Whether the main thread was blocked by the span.', type: 'boolean', @@ -14281,7 +14683,17 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 5, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + deprecation: { + replacement: 'app.vitals.frames.delay.value', + reason: + 'Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_FRAMES_DELAY_VALUE], + changelog: [ + { version: 'next', prs: [313], description: 'Deprecated in favor of app.vitals.frames.delay.value' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, + ], }, [FRAMES_FROZEN]: { brief: 'The number of frozen frames rendered during the lifetime of the span.', @@ -14291,7 +14703,17 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 3, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + deprecation: { + replacement: 'app.vitals.frames.frozen.count', + reason: + 'Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_FRAMES_FROZEN_COUNT], + changelog: [ + { version: 'next', prs: [313], description: 'Deprecated in favor of app.vitals.frames.frozen.count' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, + ], }, [FRAMES_SLOW]: { brief: 'The number of slow frames rendered during the lifetime of the span.', @@ -14301,7 +14723,17 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + deprecation: { + replacement: 'app.vitals.frames.slow.count', + reason: + 'Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_FRAMES_SLOW_COUNT], + changelog: [ + { version: 'next', prs: [313], description: 'Deprecated in favor of app.vitals.frames.slow.count' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, + ], }, [FRAMES_TOTAL]: { brief: 'The number of total frames rendered during the lifetime of the span.', @@ -14311,7 +14743,17 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 60, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + deprecation: { + replacement: 'app.vitals.frames.total.count', + reason: + 'Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_FRAMES_TOTAL_COUNT], + changelog: [ + { version: 'next', prs: [313], description: 'Deprecated in favor of app.vitals.frames.total.count' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, + ], }, [FS_ERROR]: { brief: 'The error message of a file system error.', @@ -17795,6 +18237,40 @@ export const ATTRIBUTE_METADATA: Record = { sdks: ['sentry.java.android'], changelog: [{ version: '0.3.0', prs: [183] }], }, + [TIME_TO_FULL_DISPLAY]: { + brief: 'The duration of time to full display in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1234.56, + deprecation: { + replacement: 'app.vitals.ttfd.value', + reason: + 'Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_TTFD_VALUE], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added and deprecated in favor of app.vitals.ttfd.value' }], + }, + [TIME_TO_INITIAL_DISPLAY]: { + brief: 'The duration of time to initial display in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1234.56, + deprecation: { + replacement: 'app.vitals.ttid.value', + reason: + 'Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes', + }, + aliases: [APP_VITALS_TTID_VALUE], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [313], description: 'Added and deprecated in favor of app.vitals.ttid.value' }], + }, [TRANSACTION]: { brief: 'The sentry transaction (segment name).', type: 'string', @@ -18632,6 +19108,15 @@ export type Attributes = { [APP_START_TIME]?: APP_START_TIME_TYPE; [APP_START_TYPE]?: APP_START_TYPE_TYPE; [APP_VERSION]?: APP_VERSION_TYPE; + [APP_VITALS_FRAMES_DELAY_VALUE]?: APP_VITALS_FRAMES_DELAY_VALUE_TYPE; + [APP_VITALS_FRAMES_FROZEN_COUNT]?: APP_VITALS_FRAMES_FROZEN_COUNT_TYPE; + [APP_VITALS_FRAMES_SLOW_COUNT]?: APP_VITALS_FRAMES_SLOW_COUNT_TYPE; + [APP_VITALS_FRAMES_TOTAL_COUNT]?: APP_VITALS_FRAMES_TOTAL_COUNT_TYPE; + [APP_VITALS_START_COLD_VALUE]?: APP_VITALS_START_COLD_VALUE_TYPE; + [APP_VITALS_START_TYPE]?: APP_VITALS_START_TYPE_TYPE; + [APP_VITALS_START_WARM_VALUE]?: APP_VITALS_START_WARM_VALUE_TYPE; + [APP_VITALS_TTFD_VALUE]?: APP_VITALS_TTFD_VALUE_TYPE; + [APP_VITALS_TTID_VALUE]?: APP_VITALS_TTID_VALUE_TYPE; [BLOCKED_MAIN_THREAD]?: BLOCKED_MAIN_THREAD_TYPE; [BROWSER_NAME]?: BROWSER_NAME_TYPE; [BROWSER_REPORT_TYPE]?: BROWSER_REPORT_TYPE_TYPE; @@ -19042,6 +19527,8 @@ export type Attributes = { [THREAD_ID]?: THREAD_ID_TYPE; [THREAD_NAME]?: THREAD_NAME_TYPE; [TIMBER_TAG]?: TIMBER_TAG_TYPE; + [TIME_TO_FULL_DISPLAY]?: TIME_TO_FULL_DISPLAY_TYPE; + [TIME_TO_INITIAL_DISPLAY]?: TIME_TO_INITIAL_DISPLAY_TYPE; [TRANSACTION]?: TRANSACTION_TYPE; [TTFB]?: TTFB_TYPE; [TTFB_REQUESTTIME]?: TTFB_REQUESTTIME_TYPE; diff --git a/model/attributes/app/app__vitals__frames__delay__value.json b/model/attributes/app/app__vitals__frames__delay__value.json new file mode 100644 index 00000000..86e003ae --- /dev/null +++ b/model/attributes/app/app__vitals__frames__delay__value.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.frames.delay.value", + "brief": "The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["frames.delay"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 5, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.frames.delay.value to replace frames.delay" + } + ] +} diff --git a/model/attributes/app/app__vitals__frames__frozen__count.json b/model/attributes/app/app__vitals__frames__frozen__count.json new file mode 100644 index 00000000..abb54bd3 --- /dev/null +++ b/model/attributes/app/app__vitals__frames__frozen__count.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.frames.frozen.count", + "brief": "The number of frozen frames rendered during the lifetime of the span.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["frames.frozen"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 3, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.frames.frozen.count to replace frames.frozen" + } + ] +} diff --git a/model/attributes/app/app__vitals__frames__slow__count.json b/model/attributes/app/app__vitals__frames__slow__count.json new file mode 100644 index 00000000..87be1a4c --- /dev/null +++ b/model/attributes/app/app__vitals__frames__slow__count.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.frames.slow.count", + "brief": "The number of slow frames rendered during the lifetime of the span.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["frames.slow"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 1, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.frames.slow.count to replace frames.slow" + } + ] +} diff --git a/model/attributes/app/app__vitals__frames__total__count.json b/model/attributes/app/app__vitals__frames__total__count.json new file mode 100644 index 00000000..59ce940a --- /dev/null +++ b/model/attributes/app/app__vitals__frames__total__count.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.frames.total.count", + "brief": "The number of total frames rendered during the lifetime of the span.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["frames.total"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 60, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.frames.total.count to replace frames.total" + } + ] +} diff --git a/model/attributes/app/app__vitals__start__cold__value.json b/model/attributes/app/app__vitals__start__cold__value.json new file mode 100644 index 00000000..92d12db3 --- /dev/null +++ b/model/attributes/app/app__vitals__start__cold__value.json @@ -0,0 +1,18 @@ +{ + "key": "app.vitals.start.cold.value", + "brief": "The duration of a cold app start in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 1234.56, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.start.cold.value attribute" + } + ] +} diff --git a/model/attributes/app/app__vitals__start__type.json b/model/attributes/app/app__vitals__start__type.json new file mode 100644 index 00000000..9a2d0e68 --- /dev/null +++ b/model/attributes/app/app__vitals__start__type.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.start.type", + "brief": "The type of app start, for example `cold` or `warm`", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["app_start_type"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "cold", + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.start.type attribute" + } + ] +} diff --git a/model/attributes/app/app__vitals__start__warm__value.json b/model/attributes/app/app__vitals__start__warm__value.json new file mode 100644 index 00000000..2ecb7337 --- /dev/null +++ b/model/attributes/app/app__vitals__start__warm__value.json @@ -0,0 +1,18 @@ +{ + "key": "app.vitals.start.warm.value", + "brief": "The duration of a warm app start in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 1234.56, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.start.warm.value attribute" + } + ] +} diff --git a/model/attributes/app/app__vitals__ttfd__value.json b/model/attributes/app/app__vitals__ttfd__value.json new file mode 100644 index 00000000..3f865d77 --- /dev/null +++ b/model/attributes/app/app__vitals__ttfd__value.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.ttfd.value", + "brief": "The duration of time to full display in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["time_to_full_display"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 1234.56, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.ttfd.value attribute" + } + ] +} diff --git a/model/attributes/app/app__vitals__ttid__value.json b/model/attributes/app/app__vitals__ttid__value.json new file mode 100644 index 00000000..8a063149 --- /dev/null +++ b/model/attributes/app/app__vitals__ttid__value.json @@ -0,0 +1,19 @@ +{ + "key": "app.vitals.ttid.value", + "brief": "The duration of time to initial display in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "alias": ["time_to_initial_display"], + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": 1234.56, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added app.vitals.ttid.value attribute" + } + ] +} diff --git a/model/attributes/app_start_type.json b/model/attributes/app_start_type.json index a55e2192..fbd8a11a 100644 --- a/model/attributes/app_start_type.json +++ b/model/attributes/app_start_type.json @@ -7,7 +7,18 @@ }, "is_in_otel": false, "example": "cold", + "alias": ["app.vitals.start.type"], + "deprecation": { + "replacement": "app.vitals.start.type", + "reason": "Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.start.type" + }, { "version": "0.1.0", "prs": [127] diff --git a/model/attributes/frames/frames__delay.json b/model/attributes/frames/frames__delay.json index 44388ffc..74567e59 100644 --- a/model/attributes/frames/frames__delay.json +++ b/model/attributes/frames/frames__delay.json @@ -7,7 +7,18 @@ }, "is_in_otel": false, "example": 5, + "alias": ["app.vitals.frames.delay.value"], + "deprecation": { + "replacement": "app.vitals.frames.delay.value", + "reason": "Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.delay.value" + }, { "version": "0.4.0", "prs": [228] diff --git a/model/attributes/frames/frames__frozen.json b/model/attributes/frames/frames__frozen.json index 41846a67..3736462a 100644 --- a/model/attributes/frames/frames__frozen.json +++ b/model/attributes/frames/frames__frozen.json @@ -7,7 +7,18 @@ }, "is_in_otel": false, "example": 3, + "alias": ["app.vitals.frames.frozen.count"], + "deprecation": { + "replacement": "app.vitals.frames.frozen.count", + "reason": "Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.frozen.count" + }, { "version": "0.4.0", "prs": [228] diff --git a/model/attributes/frames/frames__slow.json b/model/attributes/frames/frames__slow.json index 46f517c5..2e8757f8 100644 --- a/model/attributes/frames/frames__slow.json +++ b/model/attributes/frames/frames__slow.json @@ -7,7 +7,18 @@ }, "is_in_otel": false, "example": 1, + "alias": ["app.vitals.frames.slow.count"], + "deprecation": { + "replacement": "app.vitals.frames.slow.count", + "reason": "Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.slow.count" + }, { "version": "0.4.0", "prs": [228] diff --git a/model/attributes/frames/frames__total.json b/model/attributes/frames/frames__total.json index c7a761b4..138b5a07 100644 --- a/model/attributes/frames/frames__total.json +++ b/model/attributes/frames/frames__total.json @@ -7,7 +7,18 @@ }, "is_in_otel": false, "example": 60, + "alias": ["app.vitals.frames.total.count"], + "deprecation": { + "replacement": "app.vitals.frames.total.count", + "reason": "Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.total.count" + }, { "version": "0.4.0", "prs": [228] diff --git a/model/attributes/time_to_full_display.json b/model/attributes/time_to_full_display.json new file mode 100644 index 00000000..7bf2faf7 --- /dev/null +++ b/model/attributes/time_to_full_display.json @@ -0,0 +1,24 @@ +{ + "key": "time_to_full_display", + "brief": "The duration of time to full display in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1234.56, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "alias": ["app.vitals.ttfd.value"], + "deprecation": { + "replacement": "app.vitals.ttfd.value", + "reason": "Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added and deprecated in favor of app.vitals.ttfd.value" + } + ] +} diff --git a/model/attributes/time_to_initial_display.json b/model/attributes/time_to_initial_display.json new file mode 100644 index 00000000..f21e93e5 --- /dev/null +++ b/model/attributes/time_to_initial_display.json @@ -0,0 +1,24 @@ +{ + "key": "time_to_initial_display", + "brief": "The duration of time to initial display in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1234.56, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "alias": ["app.vitals.ttid.value"], + "deprecation": { + "replacement": "app.vitals.ttid.value", + "reason": "Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added and deprecated in favor of app.vitals.ttid.value" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 4d63e3b7..7ce542c1 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -141,6 +141,7 @@ class _AttributeNamesMeta(type): "APP_APP_NAME", "APP_APP_START_TIME", "APP_APP_VERSION", + "APP_START_TYPE", "CLS_SOURCE_KEY", "CLS", "CODE_FILEPATH", @@ -160,6 +161,10 @@ class _AttributeNamesMeta(type): "ENVIRONMENT", "FCP", "FP", + "FRAMES_DELAY", + "FRAMES_FROZEN", + "FRAMES_SLOW", + "FRAMES_TOTAL", "FS_ERROR", "GEN_AI_PROMPT", "GEN_AI_REQUEST_AVAILABLE_TOOLS", @@ -223,6 +228,8 @@ class _AttributeNamesMeta(type): "_SENTRY_SEGMENT_ID", "SENTRY_SOURCE", "SENTRY_TRACE_PARENT_SPAN_ID", + "TIME_TO_FULL_DISPLAY", + "TIME_TO_INITIAL_DISPLAY", "TRANSACTION", "TTFB_REQUESTTIME", "TTFB", @@ -754,6 +761,115 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "1.0.0" """ + # Path: model/attributes/app/app__vitals__frames__delay__value.json + APP_VITALS_FRAMES_DELAY_VALUE: Literal["app.vitals.frames.delay.value"] = ( + "app.vitals.frames.delay.value" + ) + """The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/). + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: frames.delay + Example: 5 + """ + + # Path: model/attributes/app/app__vitals__frames__frozen__count.json + APP_VITALS_FRAMES_FROZEN_COUNT: Literal["app.vitals.frames.frozen.count"] = ( + "app.vitals.frames.frozen.count" + ) + """The number of frozen frames rendered during the lifetime of the span. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: frames.frozen + Example: 3 + """ + + # Path: model/attributes/app/app__vitals__frames__slow__count.json + APP_VITALS_FRAMES_SLOW_COUNT: Literal["app.vitals.frames.slow.count"] = ( + "app.vitals.frames.slow.count" + ) + """The number of slow frames rendered during the lifetime of the span. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: frames.slow + Example: 1 + """ + + # Path: model/attributes/app/app__vitals__frames__total__count.json + APP_VITALS_FRAMES_TOTAL_COUNT: Literal["app.vitals.frames.total.count"] = ( + "app.vitals.frames.total.count" + ) + """The number of total frames rendered during the lifetime of the span. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: frames.total + Example: 60 + """ + + # Path: model/attributes/app/app__vitals__start__cold__value.json + APP_VITALS_START_COLD_VALUE: Literal["app.vitals.start.cold.value"] = ( + "app.vitals.start.cold.value" + ) + """The duration of a cold app start in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 1234.56 + """ + + # Path: model/attributes/app/app__vitals__start__type.json + APP_VITALS_START_TYPE: Literal["app.vitals.start.type"] = "app.vitals.start.type" + """The type of app start, for example `cold` or `warm` + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: app_start_type + Example: "cold" + """ + + # Path: model/attributes/app/app__vitals__start__warm__value.json + APP_VITALS_START_WARM_VALUE: Literal["app.vitals.start.warm.value"] = ( + "app.vitals.start.warm.value" + ) + """The duration of a warm app start in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 1234.56 + """ + + # Path: model/attributes/app/app__vitals__ttfd__value.json + APP_VITALS_TTFD_VALUE: Literal["app.vitals.ttfd.value"] = "app.vitals.ttfd.value" + """The duration of time to full display in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: time_to_full_display + Example: 1234.56 + """ + + # Path: model/attributes/app/app__vitals__ttid__value.json + APP_VITALS_TTID_VALUE: Literal["app.vitals.ttid.value"] = "app.vitals.ttid.value" + """The duration of time to initial display in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: time_to_initial_display + Example: 1234.56 + """ + # Path: model/attributes/app_start_type.json APP_START_TYPE: Literal["app_start_type"] = "app_start_type" """Mobile app start variant. Either cold or warm. @@ -761,6 +877,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.vitals.start.type + DEPRECATED: Use app.vitals.start.type instead - Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes Example: "cold" """ @@ -2083,6 +2201,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: int Contains PII: maybe Defined in OTEL: No + Aliases: app.vitals.frames.delay.value + DEPRECATED: Use app.vitals.frames.delay.value instead - Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes Example: 5 """ @@ -2093,6 +2213,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: int Contains PII: maybe Defined in OTEL: No + Aliases: app.vitals.frames.frozen.count + DEPRECATED: Use app.vitals.frames.frozen.count instead - Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes Example: 3 """ @@ -2103,6 +2225,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: int Contains PII: maybe Defined in OTEL: No + Aliases: app.vitals.frames.slow.count + DEPRECATED: Use app.vitals.frames.slow.count instead - Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes Example: 1 """ @@ -2113,6 +2237,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: int Contains PII: maybe Defined in OTEL: No + Aliases: app.vitals.frames.total.count + DEPRECATED: Use app.vitals.frames.total.count instead - Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes Example: 60 """ @@ -5346,6 +5472,32 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "MyTag" """ + # Path: model/attributes/time_to_full_display.json + TIME_TO_FULL_DISPLAY: Literal["time_to_full_display"] = "time_to_full_display" + """The duration of time to full display in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: app.vitals.ttfd.value + DEPRECATED: Use app.vitals.ttfd.value instead - Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes + Example: 1234.56 + """ + + # Path: model/attributes/time_to_initial_display.json + TIME_TO_INITIAL_DISPLAY: Literal["time_to_initial_display"] = ( + "time_to_initial_display" + ) + """The duration of time to initial display in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: app.vitals.ttid.value + DEPRECATED: Use app.vitals.ttid.value instead - Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes + Example: 1234.56 + """ + # Path: model/attributes/transaction.json TRANSACTION: Literal["transaction"] = "transaction" """The sentry transaction (segment name). @@ -6777,13 +6929,211 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "app.vitals.frames.delay.value": AttributeMetadata( + brief="The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=5, + aliases=["frames.delay"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.frames.delay.value to replace frames.delay", + ), + ], + ), + "app.vitals.frames.frozen.count": AttributeMetadata( + brief="The number of frozen frames rendered during the lifetime of the span.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=3, + aliases=["frames.frozen"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.frames.frozen.count to replace frames.frozen", + ), + ], + ), + "app.vitals.frames.slow.count": AttributeMetadata( + brief="The number of slow frames rendered during the lifetime of the span.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1, + aliases=["frames.slow"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.frames.slow.count to replace frames.slow", + ), + ], + ), + "app.vitals.frames.total.count": AttributeMetadata( + brief="The number of total frames rendered during the lifetime of the span.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=60, + aliases=["frames.total"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.frames.total.count to replace frames.total", + ), + ], + ), + "app.vitals.start.cold.value": AttributeMetadata( + brief="The duration of a cold app start in milliseconds", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1234.56, + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.start.cold.value attribute", + ), + ], + ), + "app.vitals.start.type": AttributeMetadata( + brief="The type of app start, for example `cold` or `warm`", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="cold", + aliases=["app_start_type"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.start.type attribute", + ), + ], + ), + "app.vitals.start.warm.value": AttributeMetadata( + brief="The duration of a warm app start in milliseconds", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1234.56, + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.start.warm.value attribute", + ), + ], + ), + "app.vitals.ttfd.value": AttributeMetadata( + brief="The duration of time to full display in milliseconds", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1234.56, + aliases=["time_to_full_display"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.ttfd.value attribute", + ), + ], + ), + "app.vitals.ttid.value": AttributeMetadata( + brief="The duration of time to initial display in milliseconds", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1234.56, + aliases=["time_to_initial_display"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added app.vitals.ttid.value attribute", + ), + ], + ), "app_start_type": AttributeMetadata( brief="Mobile app start variant. Either cold or warm.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="cold", + deprecation=DeprecationInfo( + replacement="app.vitals.start.type", + reason="Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.start.type"], changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Deprecated in favor of app.vitals.start.type", + ), ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), ], @@ -8336,7 +8686,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=5, + deprecation=DeprecationInfo( + replacement="app.vitals.frames.delay.value", + reason="Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.frames.delay.value"], changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Deprecated in favor of app.vitals.frames.delay.value", + ), ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.0.0"), ], @@ -8347,7 +8708,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=3, + deprecation=DeprecationInfo( + replacement="app.vitals.frames.frozen.count", + reason="Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.frames.frozen.count"], changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Deprecated in favor of app.vitals.frames.frozen.count", + ), ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.0.0"), ], @@ -8358,7 +8730,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, + deprecation=DeprecationInfo( + replacement="app.vitals.frames.slow.count", + reason="Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.frames.slow.count"], changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Deprecated in favor of app.vitals.frames.slow.count", + ), ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.0.0"), ], @@ -8369,7 +8752,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=60, + deprecation=DeprecationInfo( + replacement="app.vitals.frames.total.count", + reason="Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.frames.total.count"], changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Deprecated in favor of app.vitals.frames.total.count", + ), ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.0.0"), ], @@ -11803,6 +12197,58 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.3.0", prs=[183]), ], ), + "time_to_full_display": AttributeMetadata( + brief="The duration of time to full display in milliseconds", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1234.56, + deprecation=DeprecationInfo( + replacement="app.vitals.ttfd.value", + reason="Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.ttfd.value"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added and deprecated in favor of app.vitals.ttfd.value", + ), + ], + ), + "time_to_initial_display": AttributeMetadata( + brief="The duration of time to initial display in milliseconds", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1234.56, + deprecation=DeprecationInfo( + replacement="app.vitals.ttid.value", + reason="Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.vitals.ttid.value"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[313], + description="Added and deprecated in favor of app.vitals.ttid.value", + ), + ], + ), "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, @@ -12668,6 +13114,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "app.name": str, "app.start_time": str, "app.version": str, + "app.vitals.frames.delay.value": int, + "app.vitals.frames.frozen.count": int, + "app.vitals.frames.slow.count": int, + "app.vitals.frames.total.count": int, + "app.vitals.start.cold.value": float, + "app.vitals.start.type": str, + "app.vitals.start.warm.value": float, + "app.vitals.ttfd.value": float, + "app.vitals.ttid.value": float, "app_start_type": str, "blocked_main_thread": bool, "browser.name": str, @@ -13079,6 +13534,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.id": int, "thread.name": str, "timber.tag": str, + "time_to_full_display": float, + "time_to_initial_display": float, "transaction": str, "ttfb.requestTime": float, "ttfb": float, diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index 097103a6..03443c95 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -1,6 +1,36 @@ { "_generated": "This file is generated. Do not modify it directly. See scripts/generate_deprecated_attributes_json.ts", "attributes": [ + { + "key": "app_start_type", + "brief": "Mobile app start variant. Either cold or warm.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "cold", + "alias": ["app.vitals.start.type"], + "deprecation": { + "replacement": "app.vitals.start.type", + "reason": "Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.start.type" + }, + { + "version": "0.1.0", + "prs": [127] + }, + { + "version": "0.0.0" + } + ] + }, { "key": "cls", "brief": "The value of the recorded Cumulative Layout Shift (CLS) web vital", @@ -367,6 +397,54 @@ } ] }, + { + "key": "time_to_full_display", + "brief": "The duration of time to full display in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1234.56, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "alias": ["app.vitals.ttfd.value"], + "deprecation": { + "replacement": "app.vitals.ttfd.value", + "reason": "Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added and deprecated in favor of app.vitals.ttfd.value" + } + ] + }, + { + "key": "time_to_initial_display", + "brief": "The duration of time to initial display in milliseconds", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1234.56, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "alias": ["app.vitals.ttid.value"], + "deprecation": { + "replacement": "app.vitals.ttid.value", + "reason": "Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Added and deprecated in favor of app.vitals.ttid.value" + } + ] + }, { "key": "transaction", "brief": "The sentry transaction (segment name).", @@ -1653,6 +1731,126 @@ } ] }, + { + "key": "frames.delay", + "brief": "The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 5, + "alias": ["app.vitals.frames.delay.value"], + "deprecation": { + "replacement": "app.vitals.frames.delay.value", + "reason": "Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.delay.value" + }, + { + "version": "0.4.0", + "prs": [228] + }, + { + "version": "0.0.0" + } + ] + }, + { + "key": "frames.frozen", + "brief": "The number of frozen frames rendered during the lifetime of the span.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 3, + "alias": ["app.vitals.frames.frozen.count"], + "deprecation": { + "replacement": "app.vitals.frames.frozen.count", + "reason": "Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.frozen.count" + }, + { + "version": "0.4.0", + "prs": [228] + }, + { + "version": "0.0.0" + } + ] + }, + { + "key": "frames.slow", + "brief": "The number of slow frames rendered during the lifetime of the span.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1, + "alias": ["app.vitals.frames.slow.count"], + "deprecation": { + "replacement": "app.vitals.frames.slow.count", + "reason": "Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.slow.count" + }, + { + "version": "0.4.0", + "prs": [228] + }, + { + "version": "0.0.0" + } + ] + }, + { + "key": "frames.total", + "brief": "The number of total frames rendered during the lifetime of the span.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 60, + "alias": ["app.vitals.frames.total.count"], + "deprecation": { + "replacement": "app.vitals.frames.total.count", + "reason": "Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [313], + "description": "Deprecated in favor of app.vitals.frames.total.count" + }, + { + "version": "0.4.0", + "prs": [228] + }, + { + "version": "0.0.0" + } + ] + }, { "key": "gen_ai.prompt", "brief": "The input messages sent to the model",