Skip to content

Commit 19bddcb

Browse files
Lms24claude
andauthored
feat(attributes): Add LCP web vital meta attributes (#233)
* feat(attributes): Add LCP web vital meta attributes Add browser.web_vital.lcp.element, .id, .url, .size, .load_time, and .render_time attributes following the browser.web_vital.lcp naming pattern. Deprecate the legacy lcp.* attributes in favour of their browser.web_vital.lcp.* counterparts with backfill status. Co-Authored-By: Claude <noreply@anthropic.com> Made-with: Cursor * regenerate after rebase --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent f09166c commit 19bddcb

15 files changed

Lines changed: 956 additions & 4 deletions

javascript/sentry-conventions/src/attributes.ts

Lines changed: 342 additions & 4 deletions
Large diffs are not rendered by default.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"key": "browser.web_vital.lcp.element",
3+
"brief": "The HTML element selector or component name for which LCP was reported",
4+
"type": "string",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": "body > div#app > div#container > div",
10+
"alias": ["lcp.element"],
11+
"sdks": ["javascript-browser"],
12+
"changelog": [
13+
{
14+
"version": "next",
15+
"prs": [233]
16+
}
17+
]
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"key": "browser.web_vital.lcp.id",
3+
"brief": "The id of the dom element responsible for the largest contentful paint",
4+
"type": "string",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": "#gero",
10+
"alias": ["lcp.id"],
11+
"sdks": ["javascript-browser"],
12+
"changelog": [
13+
{
14+
"version": "next",
15+
"prs": [233]
16+
}
17+
]
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"key": "browser.web_vital.lcp.load_time",
3+
"brief": "The time it took for the LCP element to be loaded",
4+
"type": "integer",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": 1402,
10+
"alias": ["lcp.loadTime"],
11+
"sdks": ["javascript-browser"],
12+
"changelog": [
13+
{
14+
"version": "next",
15+
"prs": [233]
16+
}
17+
]
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"key": "browser.web_vital.lcp.render_time",
3+
"brief": "The time it took for the LCP element to be rendered",
4+
"type": "integer",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": 1685,
10+
"alias": ["lcp.renderTime"],
11+
"sdks": ["javascript-browser"],
12+
"changelog": [
13+
{
14+
"version": "next",
15+
"prs": [233]
16+
}
17+
]
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"key": "browser.web_vital.lcp.size",
3+
"brief": "The size of the largest contentful paint element",
4+
"type": "integer",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": 1024,
10+
"alias": ["lcp.size"],
11+
"sdks": ["javascript-browser"],
12+
"changelog": [
13+
{
14+
"version": "next",
15+
"prs": [233]
16+
}
17+
]
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"key": "browser.web_vital.lcp.url",
3+
"brief": "The url of the dom element responsible for the largest contentful paint",
4+
"type": "string",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": "https://example.com/static/img.png",
10+
"alias": ["lcp.url"],
11+
"sdks": ["javascript-browser"],
12+
"changelog": [
13+
{
14+
"version": "next",
15+
"prs": [233]
16+
}
17+
]
18+
}

model/attributes/lcp/lcp__element.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,17 @@
77
},
88
"is_in_otel": false,
99
"example": "img",
10+
"deprecation": {
11+
"replacement": "browser.web_vital.lcp.element",
12+
"reason": "The LCP element is now recorded as a browser.web_vital.lcp.element attribute.",
13+
"_status": "backfill"
14+
},
15+
"alias": ["browser.web_vital.lcp.element"],
1016
"changelog": [
17+
{
18+
"version": "next",
19+
"prs": [233]
20+
},
1121
{
1222
"version": "0.1.0",
1323
"prs": [127]

model/attributes/lcp/lcp__id.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,17 @@
77
},
88
"is_in_otel": false,
99
"example": "#hero",
10+
"deprecation": {
11+
"replacement": "browser.web_vital.lcp.id",
12+
"reason": "The LCP id is now recorded as a browser.web_vital.lcp.id attribute.",
13+
"_status": "backfill"
14+
},
15+
"alias": ["browser.web_vital.lcp.id"],
1016
"changelog": [
17+
{
18+
"version": "next",
19+
"prs": [233]
20+
},
1121
{
1222
"version": "0.1.0",
1323
"prs": [127]
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"key": "lcp.loadTime",
3+
"brief": "The time it took for the LCP element to be loaded",
4+
"type": "integer",
5+
"pii": {
6+
"key": "maybe"
7+
},
8+
"is_in_otel": false,
9+
"example": 1402,
10+
"sdks": ["javascript-browser"],
11+
"deprecation": {
12+
"replacement": "browser.web_vital.lcp.load_time",
13+
"reason": "The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.",
14+
"_status": "backfill"
15+
},
16+
"alias": ["browser.web_vital.lcp.load_time"],
17+
"changelog": [
18+
{
19+
"version": "next",
20+
"prs": [233]
21+
}
22+
]
23+
}

0 commit comments

Comments
 (0)