fix(performance): Restore feature parity on EAP Sampled Events tab#111731
fix(performance): Restore feature parity on EAP Sampled Events tab#111731
Conversation
The SpanCategoryFilter dropdown on the sampled events tab had no effect since the OverviewSpansTable does not consume the span.category URL param. Remove it and adjust the grid layout so the search bar fills the available space in the EAP path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace useSegmentSpansQuery with a direct useSpans call and define inline fields, column types, and column order. This decouples the overview events table from segmentSpansTable so each can evolve independently. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire up URL-based sort state for the OverviewSpansTable so that span.duration and timestamp columns are sortable, matching the non-EAP EventsTable behavior. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Match the non-EAP behavior by only showing the Replay column when the organization has the session-replay feature flag and the project platform supports replays. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wrap the trace ID column in a link to the trace details view, matching the existing behavior in the transaction events table. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Display request.method as a column before duration in the overview spans table, making it easier to distinguish between different HTTP methods at a glance. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Display user.display (derived from user.username, user.email, user.ip, or user.id) as a column in the overview spans table. Co-Authored-By: Claude Opus 4.6 <noreply@example.com>
Move Span ID to the first column and Trace ID after Total Duration for a more natural reading order: Span ID, User, HTTP Method, Total Duration, Trace ID, Timestamp, Replay, Profile. Co-Authored-By: Claude Opus 4.6 <noreply@example.com>
96a7068 to
ab1c197
Compare
0fa9d8b to
dbe22f5
Compare
ffaadd5 to
50fb9c6
Compare
50fb9c6 to
68d95e6
Compare
68d95e6 to
2f3f211
Compare
2f3f211 to
dbe22f5
Compare
7704599 to
b9ebdd3
Compare
b9ebdd3 to
1b803e5
Compare
Add an "Open in Explore" button to the filter bar when the EAP transaction summary is active, mirroring the "Open in Discover" button shown for non-EAP. The button links to the Explore Traces page preserving the current query, page filters, and sort. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enable the Percentile filter (p50/p75/p95/p99/p100) for EAP mode, which was previously hidden. Fetches percentile thresholds via useSpans with p50(span.duration) through p100(span.duration), applies a span.duration filter to the table and count queries, and carries the filter into the Open in Explore URL. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…down The `otherPercentage` value could go negative due to floating-point drift, producing an invalid negative CSS width. Use Math.max to clamp it to zero. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename to match the UI label for this table. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eventView.project is a number array. Using a template literal on the whole array produces "1,2" with multiple projects, which never matches any project ID. Use the first element instead, matching the pattern in useEventViewProject. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…able Passing an empty dateSelection to getTraceDetailsUrl caused the current page's date filter params (statsPeriod, start, end) to be overwritten with undefined. Use normalizeDateTimeParams to extract the date selection from the URL query params instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1b803e5 to
5a58382
Compare
5a58382 to
75fe46e
Compare
|
@cursor review |
|
@sentry review |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| pageFilters: selection, | ||
| }, | ||
| 'api.insights.segment-spans-table' | ||
| ); |
There was a problem hiding this comment.
Table queries fire without duration filter during loading
Low Severity
When a non-P100 percentile filter is active, useMaxDuration returns maxDuration: 0 while loading (because mapEAPPercentileValues([]) defaults all values to 0). Since 0 fails the maxDuration > 0 check, both the count and table useSpans queries fire immediately without any duration filter. When the percentile query completes, maxDuration updates and both queries re-fire with the correct filter — making the first pair of API calls wasted. Passing something like enabled: !isMaxDurationLoading to the table's useSpans calls (or returning undefined instead of 0 from mapEAPPercentileValues during loading) would prevent the unnecessary requests.
Additional Locations (1)
|
This PR has gone through too many iterations (binary searching where my |


This chunky PR brings the Transaction Summary > Sampled Events tab up to feature parity with the pre-EAP version (with a single exception).
What's fixed:
What's different from the pre-EAP Sampled Events tab:
We're still split between switching on EAP conditionally inside components, and duplicating into new - all this goes away as soon as the GA for this is stable.
Each commit is pretty self-contained, if that helps for reviewing - if it's still too big I'm happy to break it up.
Fixes DAIN-1401.