Skip to content

Commit cb4dad1

Browse files
authored
perf(sentry): Add experimental UI element tag for interaction transactions (#46340)
1 parent 1e628cd commit cb4dad1

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

static/app/bootstrap/initializeSdk.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {_browserPerformanceTimeOriginMode} from '@sentry/utils';
77

88
import {SENTRY_RELEASE_VERSION, SPA_DSN} from 'sentry/constants';
99
import {Config} from 'sentry/types';
10-
import {addExtraMeasurements} from 'sentry/utils/performanceForSentry';
10+
import {addExtraMeasurements, addUIElementTag} from 'sentry/utils/performanceForSentry';
1111
import {normalizeUrl} from 'sentry/utils/withDomainRequired';
1212

1313
const SPA_MODE_ALLOW_URLS = [
@@ -98,6 +98,7 @@ export function initializeSdk(config: Config, {routes}: {routes?: Function} = {}
9898
},
9999
beforeSendTransaction(event) {
100100
addExtraMeasurements(event);
101+
addUIElementTag(event);
101102

102103
event.spans = event.spans?.filter(span => {
103104
// Filter analytic timeout spans.

static/app/utils/performanceForSentry.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,3 +425,24 @@ export const setGroupedEntityTag = (
425425
groups = [...groups, +Infinity];
426426
setTag(`${tagName}.grouped`, `<=${groups.find(g => n <= g)}`);
427427
};
428+
429+
/**
430+
* A temporary util function used for interaction transactions that will attach a tag to the transaction, indicating the element
431+
* that was interacted with. This will allow for querying for transactions by a specific element. This is a high cardinality tag, but
432+
* it is only temporary for an experiment
433+
*/
434+
export const addUIElementTag = (transaction: TransactionEvent) => {
435+
if (!transaction || transaction.contexts?.trace?.op !== 'ui.action.click') {
436+
return;
437+
}
438+
439+
if (!transaction.tags) {
440+
return;
441+
}
442+
443+
const interactionSpan = transaction.spans?.find(
444+
span => span.op === 'ui.interaction.click'
445+
);
446+
447+
transaction.tags.interactionElement = interactionSpan?.description;
448+
};

0 commit comments

Comments
 (0)