feat(browser): Report the INP target and interaction type as attributes - #24573
Merged
Merged
Conversation
The element and the kind of interaction an INP was reported on only existed as the span's name and op. Both always have a value, even for an INP that web-vitals reports without an entry, which is named "Interaction to next paint" and filed under `ui.interaction.click` to stay within the interaction span family. Nothing reading the span can tell that apart from a real click. Report them as `browser.web_vital.inp.target` and `browser.web_vital.inp.interaction_type`, set only for what was actually observed. The keys are hardcoded until getsentry/sentry-conventions#641 is released.
Contributor
size-limit report 📦
|
Lms24
approved these changes
Sep 22, 2026
Lms24
left a comment
Member
There was a problem hiding this comment.
I think, omitting is fine (and we could revisit if we needed it)
logaretm
marked this pull request as ready for review
September 22, 2026 19:12
logaretm
requested review from
msonnb and
mydea
and removed request for
a team
September 22, 2026 19:12
Lms24
added a commit
that referenced
this pull request
Sep 22, 2026
…ebase Rebasing onto develop replayed this branch over "Report the INP target and interaction type as attributes" (#24573). Both sides had added an attributes block to `_sendInpSpan`, and the auto-merge kept both, leaving a duplicate `const attributes` declaration and a duplicate `browser.web_vital.inp.target` assignment. Git raised no conflict for either. Keep that PR's attribute line and drop ours, with one change: it read the selector off the span name, which no longer holds one here. Under span streaming the name is the component name or the op's fallback, so the attribute now reads `selector` directly. Omitting it for a missing entry or an unresolved element is unchanged. The same merge duplicated the attribute's key inside single object literals across six test files, which is dead code in a JS object. Drop the second of each pair, and drop our negative assertion for the entry-less case, which that PR's own test covers more precisely. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
47 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The element and interaction type an INP was reported on only existed as the span's name and op, which always have a value and so mislabel an INP reported without an interaction as a click, fixed by reporting them as
browser.web_vital.inp.targetandbrowser.web_vital.inp.interaction_type, set only for what was actually observed.I added unit tests for an unresolved element and for an INP without an entry, and the INP browser integration tests now expect both attributes.
Question for the review: should the "unknown" case be reported as
<unknown>or asunknownwithout the brackets, or omit it entirely? I chose to omit it for now.ref Conventions PR: getsentry/sentry-conventions#641