From 8461e508eb5c763c4d84183b5ea9394caebe3a40 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Fri, 3 Oct 2025 12:35:37 -0700 Subject: [PATCH 1/6] add `contributes` property to variant type --- .../app/components/events/groupingInfo/groupingVariant.spec.tsx | 1 + .../app/components/events/groupingInfo/useEventGroupingInfo.tsx | 1 + static/app/types/event.tsx | 1 + 3 files changed, 3 insertions(+) diff --git a/static/app/components/events/groupingInfo/groupingVariant.spec.tsx b/static/app/components/events/groupingInfo/groupingVariant.spec.tsx index 33530dfee78c38..9ffacd71e57260 100644 --- a/static/app/components/events/groupingInfo/groupingVariant.spec.tsx +++ b/static/app/components/events/groupingInfo/groupingVariant.spec.tsx @@ -38,6 +38,7 @@ describe('Grouping Variant', () => { }); const performanceIssueVariant = { type: EventGroupVariantType.PERFORMANCE_PROBLEM, + contributes: true, description: 'performance issue', hash: 'hash3', hashMismatch: false, diff --git a/static/app/components/events/groupingInfo/useEventGroupingInfo.tsx b/static/app/components/events/groupingInfo/useEventGroupingInfo.tsx index d4683283c05f6d..bfa8aca59befdd 100644 --- a/static/app/components/events/groupingInfo/useEventGroupingInfo.tsx +++ b/static/app/components/events/groupingInfo/useEventGroupingInfo.tsx @@ -28,6 +28,7 @@ function generatePerformanceGroupInfo({ return group ? { [group.issueType]: { + contributes: true, description: t('performance problem'), hash: event.occurrence?.fingerprint[0] || '', hashMismatch: false, diff --git a/static/app/types/event.tsx b/static/app/types/event.tsx index c7a31069c06d83..8edd0041c011b7 100644 --- a/static/app/types/event.tsx +++ b/static/app/types/event.tsx @@ -58,6 +58,7 @@ export const enum EventGroupVariantType { } interface BaseVariant { + contributes: boolean; description: string | null; hash: string | null; hashMismatch: boolean; From 9518f707d95d35578fa97443d85b24300ebb1cbf Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Fri, 3 Oct 2025 12:35:37 -0700 Subject: [PATCH 2/6] base visibility on `contributes` value --- static/app/components/events/groupingInfo/groupingInfo.tsx | 2 +- static/app/components/events/groupingInfo/groupingVariant.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/static/app/components/events/groupingInfo/groupingInfo.tsx b/static/app/components/events/groupingInfo/groupingInfo.tsx index 7d316aedcd38d9..0f7a46d81564f7 100644 --- a/static/app/components/events/groupingInfo/groupingInfo.tsx +++ b/static/app/components/events/groupingInfo/groupingInfo.tsx @@ -101,7 +101,7 @@ export default function GroupingInfo({ {isPending && !hasPerformanceGrouping ? : null} {hasPerformanceGrouping || isSuccess ? variants - .filter(variant => variant.hash !== null || showNonContributing) + .filter(variant => variant.contributes || showNonContributing) .map((variant, index, filteredVariants) => ( Date: Fri, 3 Oct 2025 12:35:38 -0700 Subject: [PATCH 3/6] base variant contributes icon on `contributes` --- static/app/components/events/groupingInfo/groupingVariant.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/app/components/events/groupingInfo/groupingVariant.tsx b/static/app/components/events/groupingInfo/groupingVariant.tsx index 2f965a0dd35d97..2a85efd9b927ed 100644 --- a/static/app/components/events/groupingInfo/groupingVariant.tsx +++ b/static/app/components/events/groupingInfo/groupingVariant.tsx @@ -156,7 +156,7 @@ function GroupingVariant({event, variant, showNonContributing}: GroupingVariantP }; const renderTitle = () => { - const isContributing = variant.hash !== null; + const isContributing = variant.contributes; const hint = variant.hint; From f1926fdd021f99b23e75e115cab73307dcb3ea2c Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Fri, 3 Oct 2025 12:35:38 -0700 Subject: [PATCH 4/6] sort variants based on `contributes` value --- static/app/components/events/groupingInfo/groupingInfo.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/static/app/components/events/groupingInfo/groupingInfo.tsx b/static/app/components/events/groupingInfo/groupingInfo.tsx index 0f7a46d81564f7..1e1022eddef425 100644 --- a/static/app/components/events/groupingInfo/groupingInfo.tsx +++ b/static/app/components/events/groupingInfo/groupingInfo.tsx @@ -41,10 +41,13 @@ export default function GroupingInfo({ const variants = groupInfo ? Object.values(groupInfo).sort((a, b) => { - // Sort variants with hashes before those without - if (a.hash && !b.hash) { + // Sort contributing variants before non-contributing ones + if (a.contributes && !b.contributes) { return -1; } + if (b.contributes && !a.contributes) { + return 1; + } // Sort by description alphabetically const descA = a.description?.toLowerCase() ?? ''; From e86a5502ef1a6cab4fb3e0619ea4a3aee6cf5356 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Fri, 3 Oct 2025 12:35:38 -0700 Subject: [PATCH 5/6] gather grouping methods based on `contributes` --- static/app/components/events/groupingInfo/groupingSummary.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/app/components/events/groupingInfo/groupingSummary.tsx b/static/app/components/events/groupingInfo/groupingSummary.tsx index f6a6e503f7430a..e84424d6a5e7a3 100644 --- a/static/app/components/events/groupingInfo/groupingSummary.tsx +++ b/static/app/components/events/groupingInfo/groupingSummary.tsx @@ -24,7 +24,7 @@ export function GroupInfoSummary({ }); const groupedBy = groupInfo ? Object.values(groupInfo) - .filter(variant => variant.hash !== null && variant.description !== null) + .filter(variant => variant.contributes && variant.description !== null) .map(variant => variant.description!) .sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())) .join(', ') From 60f5c944e75360245540d725bed9e704b97af08e Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Fri, 3 Oct 2025 12:35:38 -0700 Subject: [PATCH 6/6] fix test --- .../components/events/groupingInfo/groupingInfoSection.spec.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/static/app/components/events/groupingInfo/groupingInfoSection.spec.tsx b/static/app/components/events/groupingInfo/groupingInfoSection.spec.tsx index 89ff73c09178b3..0c5a5c5ed90bd1 100644 --- a/static/app/components/events/groupingInfo/groupingInfoSection.spec.tsx +++ b/static/app/components/events/groupingInfo/groupingInfoSection.spec.tsx @@ -31,6 +31,7 @@ describe('EventGroupingInfo', () => { url: `/projects/org-slug/project-slug/events/${event.id}/grouping-info/`, body: { app: { + contributes: true, description: 'variant description', hash: '123', hashMismatch: false,