From fba2c6ec8ff80497151b81eadced67617abf8b68 Mon Sep 17 00:00:00 2001 From: Itay Brenner Date: Thu, 14 May 2026 16:04:25 -0300 Subject: [PATCH 1/2] feat(attributes): Add `app.vitals.start.prewarmed` attribute Co-Authored-By: Claude Opus 4.6 (1M context) --- .../sentry-conventions/src/attributes.ts | 34 +++++++++++++++++++ .../app/app__vitals__start__prewarmed.json | 18 ++++++++++ python/src/sentry_conventions/attributes.py | 28 +++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 model/attributes/app/app__vitals__start__prewarmed.json diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 8e7aa029..2c67a76d 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -1157,6 +1157,26 @@ export const 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__prewarmed.json + +/** + * Whether the app start was prewarmed. `app.vitals.start.prewarmed` + * + * Attribute Value Type: `boolean` {@link APP_VITALS_START_PREWARMED_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @example true + */ +export const APP_VITALS_START_PREWARMED = 'app.vitals.start.prewarmed'; + +/** + * Type for {@link APP_VITALS_START_PREWARMED} app.vitals.start.prewarmed + */ +export type APP_VITALS_START_PREWARMED_TYPE = boolean; + // Path: model/attributes/app/app__vitals__start__reason.json /** @@ -12008,6 +12028,7 @@ export const ATTRIBUTE_TYPE: Record = { [APP_VITALS_FRAMES_SLOW_COUNT]: 'integer', [APP_VITALS_FRAMES_TOTAL_COUNT]: 'integer', [APP_VITALS_START_COLD_VALUE]: 'double', + [APP_VITALS_START_PREWARMED]: 'boolean', [APP_VITALS_START_REASON]: 'string', [APP_VITALS_START_SCREEN]: 'string', [APP_VITALS_START_TYPE]: 'string', @@ -12578,6 +12599,7 @@ export type AttributeName = | typeof APP_VITALS_FRAMES_SLOW_COUNT | typeof APP_VITALS_FRAMES_TOTAL_COUNT | typeof APP_VITALS_START_COLD_VALUE + | typeof APP_VITALS_START_PREWARMED | typeof APP_VITALS_START_REASON | typeof APP_VITALS_START_SCREEN | typeof APP_VITALS_START_TYPE @@ -13892,6 +13914,17 @@ export const ATTRIBUTE_METADATA: Record = { sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.cold.value attribute' }], }, + [APP_VITALS_START_PREWARMED]: { + brief: 'Whether the app start was prewarmed.', + type: 'boolean', + pii: { + isPii: 'false', + }, + isInOtel: false, + example: true, + sdks: ['sentry.cocoa'], + changelog: [{ version: 'next', prs: [378], description: 'Added app.vitals.start.prewarmed attribute' }], + }, [APP_VITALS_START_REASON]: { brief: 'The reason that triggered the app start.', type: 'string', @@ -20124,6 +20157,7 @@ export type Attributes = { [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_PREWARMED]?: APP_VITALS_START_PREWARMED_TYPE; [APP_VITALS_START_REASON]?: APP_VITALS_START_REASON_TYPE; [APP_VITALS_START_SCREEN]?: APP_VITALS_START_SCREEN_TYPE; [APP_VITALS_START_TYPE]?: APP_VITALS_START_TYPE_TYPE; diff --git a/model/attributes/app/app__vitals__start__prewarmed.json b/model/attributes/app/app__vitals__start__prewarmed.json new file mode 100644 index 00000000..4a1e4881 --- /dev/null +++ b/model/attributes/app/app__vitals__start__prewarmed.json @@ -0,0 +1,18 @@ +{ + "key": "app.vitals.start.prewarmed", + "brief": "Whether the app start was prewarmed.", + "type": "boolean", + "pii": { + "key": "false" + }, + "is_in_otel": false, + "example": true, + "sdks": ["sentry.cocoa"], + "changelog": [ + { + "version": "next", + "prs": [378], + "description": "Added app.vitals.start.prewarmed attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 4100b101..8c4e8b4e 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -831,6 +831,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 1234.56 """ + # Path: model/attributes/app/app__vitals__start__prewarmed.json + APP_VITALS_START_PREWARMED: Literal["app.vitals.start.prewarmed"] = ( + "app.vitals.start.prewarmed" + ) + """Whether the app start was prewarmed. + + Type: bool + Contains PII: false + Defined in OTEL: No + Example: true + """ + # Path: model/attributes/app/app__vitals__start__reason.json APP_VITALS_START_REASON: Literal["app.vitals.start.reason"] = ( "app.vitals.start.reason" @@ -7408,6 +7420,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "app.vitals.start.prewarmed": AttributeMetadata( + brief="Whether the app start was prewarmed.", + type=AttributeType.BOOLEAN, + pii=PiiInfo(isPii=IsPii.FALSE), + is_in_otel=False, + example=True, + sdks=["sentry.cocoa"], + changelog=[ + ChangelogEntry( + version="next", + prs=[378], + description="Added app.vitals.start.prewarmed attribute", + ), + ], + ), "app.vitals.start.reason": AttributeMetadata( brief="The reason that triggered the app start.", type=AttributeType.STRING, @@ -13984,6 +14011,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "app.vitals.frames.slow.count": int, "app.vitals.frames.total.count": int, "app.vitals.start.cold.value": float, + "app.vitals.start.prewarmed": bool, "app.vitals.start.reason": str, "app.vitals.start.screen": str, "app.vitals.start.type": str, From 8d48c5a0152a31981fdf224ea9f61750a50005d8 Mon Sep 17 00:00:00 2001 From: Itay Brenner Date: Thu, 14 May 2026 16:05:08 -0300 Subject: [PATCH 2/2] fix(attributes): Correct PR number in changelog to #379 Co-Authored-By: Claude Opus 4.6 (1M context) --- javascript/sentry-conventions/src/attributes.ts | 2 +- model/attributes/app/app__vitals__start__prewarmed.json | 2 +- python/src/sentry_conventions/attributes.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 2c67a76d..375fe4a8 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -13923,7 +13923,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: true, sdks: ['sentry.cocoa'], - changelog: [{ version: 'next', prs: [378], description: 'Added app.vitals.start.prewarmed attribute' }], + changelog: [{ version: 'next', prs: [379], description: 'Added app.vitals.start.prewarmed attribute' }], }, [APP_VITALS_START_REASON]: { brief: 'The reason that triggered the app start.', diff --git a/model/attributes/app/app__vitals__start__prewarmed.json b/model/attributes/app/app__vitals__start__prewarmed.json index 4a1e4881..c767c319 100644 --- a/model/attributes/app/app__vitals__start__prewarmed.json +++ b/model/attributes/app/app__vitals__start__prewarmed.json @@ -11,7 +11,7 @@ "changelog": [ { "version": "next", - "prs": [378], + "prs": [379], "description": "Added app.vitals.start.prewarmed attribute" } ] diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 8c4e8b4e..6478f6c7 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -7430,7 +7430,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): changelog=[ ChangelogEntry( version="next", - prs=[378], + prs=[379], description="Added app.vitals.start.prewarmed attribute", ), ],