Browser Attributes

33 attributes in this category.31 stable·2 deprecated

33 attributes

Stable Attributes

browser.bfcache.frame

stringScrub: ManualVisibility: PublicOTel: False

Which frame in the page's frame tree a back/forward cache not-restored reason originated from: the top document or a child frame.

Examplestopchild
Changelog
v0.19.0#513Added browser.bfcache.frame attribute
Raw JSON
{
  "key": "browser.bfcache.frame",
  "brief": "Which frame in the page's frame tree a back/forward cache not-restored reason originated from: the top document or a child frame.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "top",
    "child"
  ],
  "changelog": [
    {
      "version": "0.19.0",
      "prs": [
        513
      ],
      "description": "Added browser.bfcache.frame attribute"
    }
  ]
}

browser.bfcache.not_restored_reason_count

integerScrub: ManualVisibility: PublicOTel: False

The number of reported reasons a page was not restored from the back/forward cache on a back/forward navigation. 0 when the browser reported no reasons (e.g. non-Chromium browsers).

Examples2
Changelog
v0.19.0#513Added browser.bfcache.not_restored_reason_count attribute
Raw JSON
{
  "key": "browser.bfcache.not_restored_reason_count",
  "brief": "The number of reported reasons a page was not restored from the back/forward cache on a back/forward navigation. 0 when the browser reported no reasons (e.g. non-Chromium browsers).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    2
  ],
  "changelog": [
    {
      "version": "0.19.0",
      "prs": [
        513
      ],
      "description": "Added browser.bfcache.not_restored_reason_count attribute"
    }
  ]
}

browser.bfcache.outcome

stringScrub: ManualVisibility: PublicOTel: False

Whether a back/forward navigation was restored from the browser's back/forward cache (bfcache). 'hit' means the page was restored; 'miss' means it was reloaded.

Exampleshitmiss
Changelog
v0.19.0#513Added browser.bfcache.outcome attribute
Raw JSON
{
  "key": "browser.bfcache.outcome",
  "brief": "Whether a back/forward navigation was restored from the browser's back/forward cache (bfcache). 'hit' means the page was restored; 'miss' means it was reloaded.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "hit",
    "miss"
  ],
  "changelog": [
    {
      "version": "0.19.0",
      "prs": [
        513
      ],
      "description": "Added browser.bfcache.outcome attribute"
    }
  ]
}

browser.bfcache.reason

stringScrub: ManualVisibility: PublicOTel: False

A browser-reported reason a page was not restored from the back/forward cache on a back/forward navigation, taken from the notRestoredReasons API. Reported per reason (a single miss can have several). Currently Chromium-only.

Examplesunload-listenerwebsocketidbversionchangeeventresponse-cache-control-no-store
Changelog
v0.19.0#513Added browser.bfcache.reason attribute
Raw JSON
{
  "key": "browser.bfcache.reason",
  "brief": "A browser-reported reason a page was not restored from the back/forward cache on a back/forward navigation, taken from the notRestoredReasons API. Reported per reason (a single miss can have several). Currently Chromium-only.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "unload-listener",
    "websocket",
    "idbversionchangeevent",
    "response-cache-control-no-store"
  ],
  "changelog": [
    {
      "version": "0.19.0",
      "prs": [
        513
      ],
      "description": "Added browser.bfcache.reason attribute"
    }
  ]
}

browser.name

stringScrub: ManualVisibility: PublicOTel: False

The name of the browser.

ExampleChrome
Changelog
v0.1.0#127#139
v0.0.0
Raw JSON
{
  "key": "browser.name",
  "brief": "The name of the browser.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "Chrome",
  "alias": [
    "sentry.browser.name"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        127,
        139
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

browser.navigation.id

integerScrub: ManualVisibility: PublicOTel: False

The identifier of the navigation the measurement belongs to, incremented by the browser for each navigation within a page's lifetime.

Examples130
Additional Context
  • Sourced from PerformanceEntry.navigationId, defined by the Soft Navigations spec. Despite its origin it is not soft-navigation specific: the field is set on the PerformanceNavigationTiming entry of a hard navigation too.
  • The value starts at 1 for the initial page load and increments for each subsequent navigation. It is only unique within a single page lifetime, not globally.
  • A value of 0 is a fallback rather than a real navigation id: web-vitals reports 0 when the browser does not expose PerformanceEntry.navigationId, so 0 means the id is unknown.
  • Pairs with browser.navigation.type: the type says how the browser arrived at the page, the id says which navigation of that page a measurement belongs to.
  • Not to be confused with the Navigation API's NavigationHistoryEntry.id, which is an opaque string identifying a history entry rather than a counter, and is not interchangeable with this value.
  • Also distinct from the router.navigation.* attributes, which describe the client-side router's own view of a navigation. Those come from the framework, this one comes from the browser, and both can be set on the same span.
Changelog
v0.24.0#640Document 0 as the fallback value when the browser does not support navigationId
v0.22.0#634Added browser.navigation.id attribute
Raw JSON
{
  "key": "browser.navigation.id",
  "brief": "The identifier of the navigation the measurement belongs to, incremented by the browser for each navigation within a page's lifetime.",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    1,
    3,
    0
  ],
  "additional_context": [
    "Sourced from `PerformanceEntry.navigationId`, defined by the Soft Navigations spec. Despite its origin it is not soft-navigation specific: the field is set on the `PerformanceNavigationTiming` entry of a hard navigation too.",
    "The value starts at 1 for the initial page load and increments for each subsequent navigation. It is only unique within a single page lifetime, not globally.",
    "A value of 0 is a fallback rather than a real navigation id: web-vitals reports 0 when the browser does not expose `PerformanceEntry.navigationId`, so 0 means the id is unknown.",
    "Pairs with `browser.navigation.type`: the type says how the browser arrived at the page, the id says which navigation of that page a measurement belongs to.",
    "Not to be confused with the Navigation API's `NavigationHistoryEntry.id`, which is an opaque string identifying a history entry rather than a counter, and is not interchangeable with this value.",
    "Also distinct from the `router.navigation.*` attributes, which describe the client-side router's own view of a navigation. Those come from the framework, this one comes from the browser, and both can be set on the same span."
  ],
  "changelog": [
    {
      "version": "0.24.0",
      "prs": [
        640
      ],
      "description": "Document 0 as the fallback value when the browser does not support `navigationId`"
    },
    {
      "version": "0.22.0",
      "prs": [
        634
      ],
      "description": "Added browser.navigation.id attribute"
    }
  ]
}

browser.navigation.type

stringScrub: ManualVisibility: PublicOTel: False

The type of navigation the browser performed to arrive at the page the metrics were measured on.

Examplesnavigatereloadback-forwardback-forward-cacheprerenderrestoresoft-navigation
Additional Context
  • Carries the navigationType value reported by the web-vitals library verbatim. web-vitals hyphenates the Navigation Timing PerformanceNavigationTiming.type value (back_forward becomes back-forward) and adds states that API does not cover: back-forward-cache for a restore from the back/forward cache, prerender, restore for a discarded tab being reloaded, and soft-navigation.
  • back-forward-cache is only set when the page was actually restored from the back/forward cache. A back/forward navigation that missed the cache is a full document load and reports back-forward. Use the browser.bfcache.* attributes to diagnose misses.
  • prerender pages finish painting before activation, so their paint timings are offset by browser.performance.navigation.activation_start. Keep them separate when aggregating web vitals.
  • Not to be confused with router.navigation.type, which holds the client-side router's own vocabulary (link, goto, router.push). The two are independent and can both be set on the same span.
Changelog
v0.24.0#640Use the web-vitals navigation types as-is: bfcache is now back-forward-cache, and back-forward and restore are no longer reported as navigate
v0.22.0#600Added browser.navigation.type attribute
Raw JSON
{
  "key": "browser.navigation.type",
  "brief": "The type of navigation the browser performed to arrive at the page the metrics were measured on.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "navigate",
    "reload",
    "back-forward",
    "back-forward-cache",
    "prerender",
    "restore",
    "soft-navigation"
  ],
  "additional_context": [
    "Carries the `navigationType` value reported by the web-vitals library verbatim. web-vitals hyphenates the Navigation Timing `PerformanceNavigationTiming.type` value (`back_forward` becomes `back-forward`) and adds states that API does not cover: `back-forward-cache` for a restore from the back/forward cache, `prerender`, `restore` for a discarded tab being reloaded, and `soft-navigation`.",
    "`back-forward-cache` is only set when the page was actually restored from the back/forward cache. A back/forward navigation that missed the cache is a full document load and reports `back-forward`. Use the `browser.bfcache.*` attributes to diagnose misses.",
    "`prerender` pages finish painting before activation, so their paint timings are offset by `browser.performance.navigation.activation_start`. Keep them separate when aggregating web vitals.",
    "Not to be confused with `router.navigation.type`, which holds the client-side router's own vocabulary (`link`, `goto`, `router.push`). The two are independent and can both be set on the same span."
  ],
  "changelog": [
    {
      "version": "0.24.0",
      "prs": [
        640
      ],
      "description": "Use the web-vitals navigation types as-is: `bfcache` is now `back-forward-cache`, and `back-forward` and `restore` are no longer reported as `navigate`"
    },
    {
      "version": "0.22.0",
      "prs": [
        600
      ],
      "description": "Added browser.navigation.type attribute"
    }
  ]
}

browser.paint.type

stringScrub: ManualVisibility: PublicOTel: False

The type of paint timing entry reported by the browser.

Examplesfirst-paintfirst-contentful-paint
Changelog
v0.22.0#606Added browser.paint.type attribute
Raw JSON
{
  "key": "browser.paint.type",
  "brief": "The type of paint timing entry reported by the browser.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "first-paint",
    "first-contentful-paint"
  ],
  "changelog": [
    {
      "version": "0.22.0",
      "prs": [
        606
      ],
      "description": "Added browser.paint.type attribute"
    }
  ]
}

browser.performance.navigation.activation_start

doubleScrub: ManualVisibility: PublicOTel: False

The time between initiating a navigation to a page and the browser activating the page

Example1.983
Changelog
v0.5.0#321Added browser.performance.navigation.activation_start attribute
Raw JSON
{
  "key": "browser.performance.navigation.activation_start",
  "brief": "The time between initiating a navigation to a page and the browser activating the page",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1.983,
  "alias": [
    "performance.activationStart"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        321
      ],
      "description": "Added browser.performance.navigation.activation_start attribute"
    }
  ]
}

browser.performance.time_origin

doubleScrub: ManualVisibility: PublicOTel: False

The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated

Example1776185678.886
Changelog
v0.5.0#321Added browser.performance.time_origin attribute attribute
Raw JSON
{
  "key": "browser.performance.time_origin",
  "brief": "The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1776185678.886,
  "alias": [
    "performance.timeOrigin"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        321
      ],
      "description": "Added browser.performance.time_origin attribute attribute"
    }
  ]
}

browser.report.type

stringScrub: ManualVisibility: PublicOTel: False

A browser report sent via reporting API..

Examplenetwork-error
Changelog
v0.1.0#68#127
Raw JSON
{
  "key": "browser.report.type",
  "brief": "A browser report sent via reporting API..",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "network-error",
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        68,
        127
      ]
    }
  ]
}

browser.script.invoker

stringScrub: ManualVisibility: PublicOTel: False

How a script was called in the browser.

ExampleWindow.requestAnimationFrame
Changelog
v0.1.0#127
v0.0.0
Raw JSON
{
  "key": "browser.script.invoker",
  "brief": "How a script was called in the browser.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "Window.requestAnimationFrame",
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

browser.script.invoker_type

stringScrub: ManualVisibility: PublicOTel: False

Browser script entry point type.

Exampleevent-listener
Changelog
v0.1.0#127
v0.0.0
Raw JSON
{
  "key": "browser.script.invoker_type",
  "brief": "Browser script entry point type.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "event-listener",
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

browser.script.source_char_position

integerScrub: ManualVisibility: PublicOTel: False

A number representing the script character position of the script.

Example678
Changelog
v0.4.0#228
v0.0.0
Raw JSON
{
  "key": "browser.script.source_char_position",
  "brief": "A number representing the script character position of the script.",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 678,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

browser.version

stringScrub: ManualVisibility: PublicOTel: False

The version of the browser.

Example120.0.6099.130
Changelog
Raw JSON
{
  "key": "browser.version",
  "brief": "The version of the browser.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "120.0.6099.130",
  "alias": [
    "sentry.browser.version"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        59,
        127,
        139
      ]
    }
  ]
}

browser.web_vital.cls.source.<key>

stringScrub: ManualVisibility: PublicOTel: FalseDynamic

The HTML elements or components responsible for the layout shift. <key> is a numeric index from 1 to N

Examplebody > div#app
Dynamic SuffixYes - the key contains dynamic parts
Changelog
v0.5.0#234
Raw JSON
{
  "key": "browser.web_vital.cls.source.<key>",
  "brief": "The HTML elements or components responsible for the layout shift. <key> is a numeric index from 1 to N",
  "has_dynamic_suffix": true,
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "body > div#app",
  "alias": [
    "cls.source.<key>"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        234
      ]
    }
  ]
}

browser.web_vital.cls.value

doubleScrub: ManualVisibility: PublicOTel: False

The value of the recorded Cumulative Layout Shift (CLS) web vital

Example0.2361
Aliasescls
Changelog
v0.5.0#229Added browser.web_vital.cls.value attribute
Raw JSON
{
  "key": "browser.web_vital.cls.value",
  "brief": "The value of the recorded Cumulative Layout Shift (CLS) web vital",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 0.2361,
  "alias": [
    "cls"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        229
      ],
      "description": "Added browser.web_vital.cls.value attribute"
    }
  ]
}

browser.web_vital.fcp.value

doubleScrub: ManualVisibility: PublicOTel: False

The time it takes for the browser to render the first piece of meaningful content on the screen

Example547.6951
Aliasesfcp
Changelog
v0.5.0#235
Raw JSON
{
  "key": "browser.web_vital.fcp.value",
  "brief": "The time it takes for the browser to render the first piece of meaningful content on the screen",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 547.6951,
  "alias": [
    "fcp"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        235
      ]
    }
  ]
}

browser.web_vital.fp.value

doubleScrub: ManualVisibility: PublicOTel: False

The time in milliseconds it takes for the browser to render the first pixel on the screen

Example477.1926
Aliasesfp
Changelog
v0.5.0#235
Raw JSON
{
  "key": "browser.web_vital.fp.value",
  "brief": "The time in milliseconds it takes for the browser to render the first pixel on the screen",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 477.1926,
  "alias": [
    "fp"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        235
      ]
    }
  ]
}

browser.web_vital.inp.interaction_type

stringScrub: ManualVisibility: PublicOTel: False

The kind of user interaction INP was reported on

Examplesclickhoverdragpress
Additional Context
  • One of click, hover, drag or press, derived from the DOM event name of the Event Timing entry: pointer, mouse and touch events map to click, mouseover and similar to hover, drag and drop events to drag, and keyboard and input events to press. The same value forms the suffix of the span's ui.interaction.* op.
  • Not to be confused with the interactionType of the web-vitals attribution build, which only distinguishes pointer and keyboard.
  • Omitted when INP is reported without an interaction to attribute it to, see browser.web_vital.inp.target. The op of such a span still falls into ui.interaction.click so that it stays within the interaction span family, which makes this attribute, not the op, the way to tell a real click from a value with no interaction.
Changelog
v0.24.0#641Added browser.web_vital.inp.interaction_type attribute
Raw JSON
{
  "key": "browser.web_vital.inp.interaction_type",
  "brief": "The kind of user interaction INP was reported on",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "click",
    "hover",
    "drag",
    "press"
  ],
  "additional_context": [
    "One of `click`, `hover`, `drag` or `press`, derived from the DOM event name of the Event Timing entry: pointer, mouse and touch events map to `click`, `mouseover` and similar to `hover`, drag and drop events to `drag`, and keyboard and `input` events to `press`. The same value forms the suffix of the span's `ui.interaction.*` op.",
    "Not to be confused with the `interactionType` of the web-vitals attribution build, which only distinguishes `pointer` and `keyboard`.",
    "Omitted when INP is reported without an interaction to attribute it to, see `browser.web_vital.inp.target`. The op of such a span still falls into `ui.interaction.click` so that it stays within the interaction span family, which makes this attribute, not the op, the way to tell a real click from a value with no interaction."
  ],
  "changelog": [
    {
      "version": "0.24.0",
      "prs": [
        641
      ],
      "description": "Added browser.web_vital.inp.interaction_type attribute"
    }
  ]
}

browser.web_vital.inp.target

stringScrub: ManualVisibility: PublicOTel: False

The HTML element selector or component name of the element the user interacted with, for the interaction INP was reported on

Examplesbody > div#app > button.submitSubmitButton
Additional Context
  • Named after PerformanceEventTiming.target, the way browser.web_vital.lcp.element is named after LargestContentfulPaint.element. The value uses the same format as that attribute.
  • Omitted when INP is reported without an interaction to attribute it to. web-vitals reports such a value for a soft navigation whose interactions all stayed below the Event Timing duration threshold, so there is no element to name. The span is still named and still carries browser.web_vital.inp.value.
Changelog
v0.24.0#641Added browser.web_vital.inp.target attribute
Raw JSON
{
  "key": "browser.web_vital.inp.target",
  "brief": "The HTML element selector or component name of the element the user interacted with, for the interaction INP was reported on",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "body > div#app > button.submit",
    "SubmitButton"
  ],
  "additional_context": [
    "Named after `PerformanceEventTiming.target`, the way `browser.web_vital.lcp.element` is named after `LargestContentfulPaint.element`. The value uses the same format as that attribute.",
    "Omitted when INP is reported without an interaction to attribute it to. web-vitals reports such a value for a soft navigation whose interactions all stayed below the Event Timing duration threshold, so there is no element to name. The span is still named and still carries `browser.web_vital.inp.value`."
  ],
  "changelog": [
    {
      "version": "0.24.0",
      "prs": [
        641
      ],
      "description": "Added browser.web_vital.inp.target attribute"
    }
  ]
}

browser.web_vital.inp.value

doubleScrub: ManualVisibility: PublicOTel: False

The value of the recorded Interaction to Next Paint (INP) web vital

Example200
Aliasesinp
Changelog
v0.5.0#229Added browser.web_vital.inp.value attribute
Raw JSON
{
  "key": "browser.web_vital.inp.value",
  "brief": "The value of the recorded Interaction to Next Paint (INP) web vital",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 200,
  "alias": [
    "inp"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        229
      ],
      "description": "Added browser.web_vital.inp.value attribute"
    }
  ]
}

browser.web_vital.lcp.element

stringScrub: ManualVisibility: PublicOTel: False

The HTML element selector or component name for which LCP was reported

Examplebody > div#app > div#container > div
Changelog
v0.5.0#233
Raw JSON
{
  "key": "browser.web_vital.lcp.element",
  "brief": "The HTML element selector or component name for which LCP was reported",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "body > div#app > div#container > div",
  "alias": [
    "lcp.element"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        233
      ]
    }
  ]
}

browser.web_vital.lcp.id

stringScrub: ManualVisibility: PublicOTel: False

The id of the dom element responsible for the largest contentful paint

Example#gero
Aliaseslcp.id
Changelog
v0.5.0#233
Raw JSON
{
  "key": "browser.web_vital.lcp.id",
  "brief": "The id of the dom element responsible for the largest contentful paint",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "#gero",
  "alias": [
    "lcp.id"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        233
      ]
    }
  ]
}

browser.web_vital.lcp.load_time

integerScrub: ManualVisibility: PublicOTel: False

The time it took for the LCP element to be loaded

Example1402
Changelog
v0.5.0#233
Raw JSON
{
  "key": "browser.web_vital.lcp.load_time",
  "brief": "The time it took for the LCP element to be loaded",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1402,
  "alias": [
    "lcp.loadTime"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        233
      ]
    }
  ]
}

browser.web_vital.lcp.render_time

integerScrub: ManualVisibility: PublicOTel: False

The time it took for the LCP element to be rendered

Example1685
Changelog
v0.5.0#233
Raw JSON
{
  "key": "browser.web_vital.lcp.render_time",
  "brief": "The time it took for the LCP element to be rendered",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1685,
  "alias": [
    "lcp.renderTime"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        233
      ]
    }
  ]
}

browser.web_vital.lcp.size

integerScrub: ManualVisibility: PublicOTel: False

The size of the largest contentful paint element

Example1024
Aliaseslcp.size
Changelog
v0.5.0#233
Raw JSON
{
  "key": "browser.web_vital.lcp.size",
  "brief": "The size of the largest contentful paint element",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1024,
  "alias": [
    "lcp.size"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        233
      ]
    }
  ]
}

browser.web_vital.lcp.url

stringScrub: AutoVisibility: PublicOTel: False

The url of the dom element responsible for the largest contentful paint

Examplehttps://example.com/static/img.png
Aliaseslcp.url
Changelog
v0.5.0#233
Raw JSON
{
  "key": "browser.web_vital.lcp.url",
  "brief": "The url of the dom element responsible for the largest contentful paint",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "https://example.com/static/img.png",
  "alias": [
    "lcp.url"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        233
      ]
    }
  ]
}

browser.web_vital.lcp.value

doubleScrub: ManualVisibility: PublicOTel: False

The value of the recorded Largest Contentful Paint (LCP) web vital

Example2500
Aliaseslcp
Changelog
v0.5.0#229Added browser.web_vital.lcp.value attribute
Raw JSON
{
  "key": "browser.web_vital.lcp.value",
  "brief": "The value of the recorded Largest Contentful Paint (LCP) web vital",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 2500,
  "alias": [
    "lcp"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        229
      ],
      "description": "Added browser.web_vital.lcp.value attribute"
    }
  ]
}

browser.web_vital.ttfb.request_time

doubleScrub: ManualVisibility: PublicOTel: False

The time it takes for the server to process the initial request and send the first byte of a response to the user's browser

Example1554.5814
Changelog
v0.5.0#235
Raw JSON
{
  "key": "browser.web_vital.ttfb.request_time",
  "brief": "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1554.5814,
  "alias": [
    "ttfb.requestTime"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        235
      ]
    }
  ]
}

browser.web_vital.ttfb.value

doubleScrub: ManualVisibility: PublicOTel: False

The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds

Example194.3322
Aliasesttfb
Changelog
v0.5.0#235
Raw JSON
{
  "key": "browser.web_vital.ttfb.value",
  "brief": "The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 194.3322,
  "alias": [
    "ttfb"
  ],
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        235
      ]
    }
  ]
}

Deprecated Attributes

These attributes are deprecated and should not be used in new code. See each attribute for migration guidance.

browser.web_vital.cls.report_eventDeprecated

stringScrub: ManualVisibility: PublicOTel: False

The event that caused the SDK to report CLS (pagehide or navigation)

Examplenavigation

No replacement available at this time.

The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement.

Changelog
v0.24.0#642Deprecated browser.web_vital.cls.report_event, which has no replacement
v0.5.0#319Added browser.web_vital.cls.report_event attribute
Raw JSON
{
  "key": "browser.web_vital.cls.report_event",
  "brief": "The event that caused the SDK to report CLS (pagehide or navigation)",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "navigation",
  "deprecation": {
    "reason": "The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the CLS value is final, so there is no report event to record. No replacement.",
    "_status": null
  },
  "changelog": [
    {
      "version": "0.24.0",
      "prs": [
        642
      ],
      "description": "Deprecated browser.web_vital.cls.report_event, which has no replacement"
    },
    {
      "version": "0.5.0",
      "prs": [
        319
      ],
      "description": "Added browser.web_vital.cls.report_event attribute"
    }
  ]
}

browser.web_vital.lcp.report_eventDeprecated

stringScrub: ManualVisibility: PublicOTel: False

The event that caused the SDK to report LCP (pagehide or navigation)

Examplepagehide

No replacement available at this time.

The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement.

Changelog
v0.24.0#642Deprecated browser.web_vital.lcp.report_event, which has no replacement
v0.5.0#319Added browser.web_vital.lcp.report_event attribute
Raw JSON
{
  "key": "browser.web_vital.lcp.report_event",
  "brief": "The event that caused the SDK to report LCP (pagehide or navigation)",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "pagehide",
  "deprecation": {
    "reason": "The JavaScript SDK stopped setting this in v11. With per-navigation web vitals, web-vitals decides when the LCP value is final, so there is no report event to record. No replacement.",
    "_status": null
  },
  "changelog": [
    {
      "version": "0.24.0",
      "prs": [
        642
      ],
      "description": "Deprecated browser.web_vital.lcp.report_event, which has no replacement"
    },
    {
      "version": "0.5.0",
      "prs": [
        319
      ],
      "description": "Added browser.web_vital.lcp.report_event attribute"
    }
  ]
}