-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
feat(dashboards): Adds core web vitals samples tables to prebuilt Web Vitals dashboard #105438
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
feat(dashboards): Adds core web vitals samples tables to prebuilt Web Vitals dashboard #105438
Conversation
| fields: [ | ||
| 'trace', | ||
| 'lcp.element', | ||
| 'measurements.lcp', | ||
| 'profile.id', | ||
| 'replay.id', | ||
| 'measurements.score.ratio.lcp', | ||
| 'timestamp', | ||
| ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: The new LCP, INP, and CLS sample table widgets query for profile.id, replay.id, and lcp.element from a SPANS dataset, but these fields are likely unavailable at the span level.
Severity: MEDIUM | Confidence: High
🔍 Detailed Analysis
The newly added LCP, INP, and CLS sample table widgets are configured to query the SPANS dataset for the fields profile.id, replay.id, and lcp.element. However, these fields are likely transaction-level identifiers or tags, not attributes available on individual spans. Since there are no other examples of table widgets querying these raw fields from the SPANS source, and these fields are not used in any other span queries in the codebase, it is highly probable that they are not queryable columns. This will likely cause the widgets to fail to render or display empty tables, as the underlying query will return no data for these columns.
💡 Suggested Fix
Verify if profile.id, replay.id, and lcp.element are available on the SPANS dataset. If not, either remove these columns from the widget definitions or change the data source. If these are transaction properties, the query might need to be against the TRANSACTIONS dataset instead of SPANS.
🤖 Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location:
static/app/views/dashboards/utils/prebuiltConfigs/webVitals/pageSummary.ts#L452-L460
Potential issue: The newly added LCP, INP, and CLS sample table widgets are configured
to query the `SPANS` dataset for the fields `profile.id`, `replay.id`, and
`lcp.element`. However, these fields are likely transaction-level identifiers or tags,
not attributes available on individual spans. Since there are no other examples of table
widgets querying these raw fields from the `SPANS` source, and these fields are not used
in any other span queries in the codebase, it is highly probable that they are not
queryable columns. This will likely cause the widgets to fail to render or display empty
tables, as the underlying query will return no data for these columns.
Did we get this right? 👍 / 👎 to inform future reviews.
Reference ID: 7891519
| queries: [ | ||
| { | ||
| name: '', | ||
| conditions: `has:measurements.lcp`, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sample tables use different filters than summary widgets
The new sample tables use simple has:measurements.* conditions while all other SPANS widgets in this dashboard use DEFAULT_QUERY_FILTER. The DEFAULT_QUERY_FILTER restricts to specific span.op values and excludes unparameterized transactions. This inconsistency means the samples could include data not reflected in the summary metrics (P75 values, scores), potentially confusing users when the samples don't match the aggregated numbers.
Adds samples tables for core webvitals to the web vitals prebuilt json