diff --git a/static/app/utils/issueTypeConfig/index.tsx b/static/app/utils/issueTypeConfig/index.tsx index e3af71d7a5eb6b..69c69aaf791be9 100644 --- a/static/app/utils/issueTypeConfig/index.tsx +++ b/static/app/utils/issueTypeConfig/index.tsx @@ -39,12 +39,17 @@ const BASE_CONFIG: IssueTypeConfig = { aiSuggestedSolution: false, events: {enabled: true}, mergedIssues: {enabled: false}, + performanceDurationRegression: {enabled: false}, + profilingDurationRegression: {enabled: false}, regression: {enabled: false}, replays: {enabled: false}, showFeedbackWidget: false, - stats: {enabled: true}, similarIssues: {enabled: false}, + spanEvidence: {enabled: false}, + stacktrace: {enabled: true}, + stats: {enabled: true}, tags: {enabled: true}, + tagsTab: {enabled: true}, userFeedback: {enabled: false}, discover: {enabled: true}, evidence: {title: t('Evidence')}, diff --git a/static/app/utils/issueTypeConfig/performanceConfig.tsx b/static/app/utils/issueTypeConfig/performanceConfig.tsx index feb95183e0c47a..7060e1a897eb09 100644 --- a/static/app/utils/issueTypeConfig/performanceConfig.tsx +++ b/static/app/utils/issueTypeConfig/performanceConfig.tsx @@ -27,6 +27,8 @@ const performanceConfig: IssueCategoryConfigMapping = { mergedIssues: {enabled: false}, replays: {enabled: true}, similarIssues: {enabled: false}, + stacktrace: {enabled: false}, + spanEvidence: {enabled: true}, userFeedback: {enabled: false}, // Performance issues render a custom SpanEvidence component evidence: null, @@ -195,8 +197,12 @@ const performanceConfig: IssueCategoryConfigMapping = { discover: {enabled: false}, regression: {enabled: true}, replays: {enabled: false}, + performanceDurationRegression: {enabled: true}, stats: {enabled: false}, tags: {enabled: false}, + tagsTab: {enabled: false}, + // We show the regression summary instead + spanEvidence: {enabled: false}, }, [IssueType.PERFORMANCE_ENDPOINT_REGRESSION]: { actions: { @@ -225,9 +231,13 @@ const performanceConfig: IssueCategoryConfigMapping = { }, discover: {enabled: false}, regression: {enabled: true}, + performanceDurationRegression: {enabled: true}, replays: {enabled: false}, stats: {enabled: false}, tags: {enabled: false}, + tagsTab: {enabled: false}, + // We show the regression summary instead + spanEvidence: {enabled: false}, }, [IssueType.PROFILE_FILE_IO_MAIN_THREAD]: { resources: { @@ -317,9 +327,13 @@ const performanceConfig: IssueCategoryConfigMapping = { discover: {enabled: false}, events: {enabled: false}, regression: {enabled: true}, + profilingDurationRegression: {enabled: true}, replays: {enabled: false}, + // We show the regression summary instead + spanEvidence: {enabled: false}, stats: {enabled: false}, tags: {enabled: false}, + tagsTab: {enabled: false}, }, [IssueType.PROFILE_FUNCTION_REGRESSION]: { actions: { @@ -349,9 +363,13 @@ const performanceConfig: IssueCategoryConfigMapping = { discover: {enabled: false}, events: {enabled: false}, regression: {enabled: true}, + profilingDurationRegression: {enabled: true}, replays: {enabled: false}, stats: {enabled: false}, + // We show the regression summary instead + spanEvidence: {enabled: false}, tags: {enabled: false}, + tagsTab: {enabled: false}, }, }; diff --git a/static/app/utils/issueTypeConfig/replayConfig.tsx b/static/app/utils/issueTypeConfig/replayConfig.tsx index 097515eb04154a..9a082fcf3bfdef 100644 --- a/static/app/utils/issueTypeConfig/replayConfig.tsx +++ b/static/app/utils/issueTypeConfig/replayConfig.tsx @@ -22,7 +22,7 @@ const replayConfig: IssueCategoryConfigMapping = { stats: {enabled: true}, similarIssues: {enabled: false}, showFeedbackWidget: true, - tags: {enabled: true}, + tagsTab: {enabled: true}, userFeedback: {enabled: true}, discover: {enabled: true}, evidence: {title: t('Evidence')}, diff --git a/static/app/utils/issueTypeConfig/types.tsx b/static/app/utils/issueTypeConfig/types.tsx index 2736ae54153f0c..8aebd5921b8bee 100644 --- a/static/app/utils/issueTypeConfig/types.tsx +++ b/static/app/utils/issueTypeConfig/types.tsx @@ -59,6 +59,14 @@ export type IssueTypeConfig = { * Is the Merged Issues tab shown for this issue */ mergedIssues: DisabledWithReasonConfig; + /** + * Shows performance duration regression components + */ + performanceDurationRegression: DisabledWithReasonConfig; + /** + * Shows profiling duration regression components + */ + profilingDurationRegression: DisabledWithReasonConfig; /** * Enables various regression related supporting data for an issue type. */ @@ -90,14 +98,23 @@ export type IssueTypeConfig = { * Is the Similar Issues tab shown for this issue */ similarIssues: DisabledWithReasonConfig; + spanEvidence: DisabledWithReasonConfig; + /** + * Is the Stacktrace shown for this issue + */ + stacktrace: DisabledWithReasonConfig; /** * Are group stats (counts/time series) shown for this issue. */ stats: DisabledWithReasonConfig; /** - * Is the Tags tab show for this issue + * Are event tags or highlights shown for this issue */ tags: DisabledWithReasonConfig; + /** + * Is the Tags tab show for this issue + */ + tagsTab: DisabledWithReasonConfig; /** * Is the User Feedback tab shown for this issue */ diff --git a/static/app/utils/issueTypeConfig/uptimeConfig.tsx b/static/app/utils/issueTypeConfig/uptimeConfig.tsx index d1970a3e53e84a..69fbffe26bc193 100644 --- a/static/app/utils/issueTypeConfig/uptimeConfig.tsx +++ b/static/app/utils/issueTypeConfig/uptimeConfig.tsx @@ -21,7 +21,7 @@ const uptimeConfig: IssueCategoryConfigMapping = { userFeedback: {enabled: false}, usesIssuePlatform: true, stats: {enabled: false}, - tags: {enabled: false}, + tagsTab: {enabled: false}, issueSummary: {enabled: false}, }, }; diff --git a/static/app/views/issueDetails/groupEventDetails/groupEventDetailsContent.tsx b/static/app/views/issueDetails/groupEventDetails/groupEventDetailsContent.tsx index 455f6015459047..af65e6a48c239a 100644 --- a/static/app/views/issueDetails/groupEventDetails/groupEventDetailsContent.tsx +++ b/static/app/views/issueDetails/groupEventDetails/groupEventDetailsContent.tsx @@ -64,7 +64,7 @@ import {space} from 'sentry/styles/space'; import type {Entry, EntryException, Event, EventTransaction} from 'sentry/types/event'; import {EntryType, EventOrGroupType} from 'sentry/types/event'; import type {Group} from 'sentry/types/group'; -import {IssueCategory, IssueType} from 'sentry/types/group'; +import {IssueCategory} from 'sentry/types/group'; import type {Project} from 'sentry/types/project'; import {defined} from 'sentry/utils'; import { @@ -232,7 +232,7 @@ export function EventDetailsContent({ project={project} /> )} - {!hasStreamlinedUI && ( + {!hasStreamlinedUI && issueTypeConfig.tags.enabled && ( )} {showPossibleSolutionsHigher && ( @@ -259,16 +259,17 @@ export function EventDetailsContent({ /> )} - {defined(eventEntries[EntryType.STACKTRACE]) && ( - - - - )} + {issueTypeConfig.stacktrace.enabled && + defined(eventEntries[EntryType.STACKTRACE]) && ( + + + + )} {defined(eventEntries[EntryType.THREADS]) && ( )} - {group.issueCategory === IssueCategory.PERFORMANCE && ( + {issueTypeConfig.spanEvidence.enabled && ( )} + {issueTypeConfig.regression.enabled && ( + + + + )} + {issueTypeConfig.performanceDurationRegression.enabled && ( + + + + + + + + + + + + )} + {issueTypeConfig.profilingDurationRegression.enabled && ( + + + + + + + + + + + {t('Largest Changes in Call Stack Frequency')} +

+ {t(`See which functions changed the most before and after the regression. The + frame with the largest increase in call stack population likely + contributed to the cause for the duration regression.`)} +

+ +
+
+ + + +
+
+ )} {issueTypeConfig.replays.enabled && ( @@ -372,16 +424,28 @@ export function EventDetailsContent({
)} - {hasStreamlinedUI ? ( + {issueTypeConfig.tags.enabled ? ( - - + {hasStreamlinedUI ? ( + + + + + ) : ( +
+ +
+ )}
- ) : ( -
- -
- )} + ) : null} {hasFeatureFlagSection && ( @@ -429,96 +493,6 @@ function ResourcesAndPossibleSolutionsIssueDetailsContent({ ); } -const GroupContent = styled('div')` - border: 1px solid ${p => p.theme.translucentBorder}; - background: ${p => p.theme.background}; - border-radius: ${p => p.theme.borderRadius}; - position: relative; -`; - -const GroupContentPadding = styled('div')` - padding: ${space(1)} ${space(1.5)}; -`; - -// TODO: Merge regression issues with the other event details -function RegressionEventContainer({children}: {children: React.ReactNode}) { - const hasStreamlinedUI = useHasStreamlinedUI(); - - if (!hasStreamlinedUI) { - return children; - } - - return ( - - {children} - - ); -} - -function PerformanceDurationRegressionIssueDetailsContent({ - group, - event, - project, -}: Required) { - return ( - - - - - - - - - - - - - - - ); -} - -function ProfilingDurationRegressionIssueDetailsContent({ - group, - event, - project, -}: Required) { - return ( - - - - - - - - - - - - - - - {t('Largest Changes in Call Stack Frequency')} -

- {t(`See which functions changed the most before and after the regression. The - frame with the largest increase in call stack population likely - contributed to the cause for the duration regression.`)} -

- -
-
- - - -
-
-
- ); -} - export default function GroupEventDetailsContent({ group, event, @@ -534,35 +508,11 @@ export default function GroupEventDetailsContent({ ); } - switch (group.issueType) { - case IssueType.PERFORMANCE_DURATION_REGRESSION: - case IssueType.PERFORMANCE_ENDPOINT_REGRESSION: { - return ( - - ); - } - case IssueType.PROFILE_FUNCTION_REGRESSION_EXPERIMENTAL: - case IssueType.PROFILE_FUNCTION_REGRESSION: { - return ( - - ); - } - default: { - return hasStreamlinedUI ? ( - - ) : ( - - ); - } - } + return hasStreamlinedUI ? ( + + ) : ( + + ); } /** diff --git a/static/app/views/issueDetails/groupSidebar.tsx b/static/app/views/issueDetails/groupSidebar.tsx index 7551f9560fcb9c..2a9b9e0e9fba63 100644 --- a/static/app/views/issueDetails/groupSidebar.tsx +++ b/static/app/views/issueDetails/groupSidebar.tsx @@ -282,7 +282,7 @@ export default function GroupSidebar({ )} {!hasStreamlinedUI && renderPluginIssue()} - {issueTypeConfig.tags.enabled && ( + {issueTypeConfig.tagsTab.enabled && (