diff --git a/.changeset/pretty-rings-compare.md b/.changeset/pretty-rings-compare.md new file mode 100644 index 00000000000..a46279fd7b8 --- /dev/null +++ b/.changeset/pretty-rings-compare.md @@ -0,0 +1,5 @@ +--- +"@clerk/shared": patch +--- + +Increase sampling for high-signal auth components on mount. diff --git a/packages/shared/src/telemetry/events/component-mounted.ts b/packages/shared/src/telemetry/events/component-mounted.ts index 3b63d75e8b8..940f8a1a943 100644 --- a/packages/shared/src/telemetry/events/component-mounted.ts +++ b/packages/shared/src/telemetry/events/component-mounted.ts @@ -4,6 +4,19 @@ const EVENT_COMPONENT_MOUNTED = 'COMPONENT_MOUNTED'; const EVENT_COMPONENT_OPENED = 'COMPONENT_OPENED'; const EVENT_SAMPLING_RATE = 0.1; +/** Increase sampling for high-signal auth components on mount. */ +const AUTH_COMPONENTS = new Set(['SignIn', 'SignUp']); + +/** + * Returns the per-event sampling rate for component-mounted telemetry events. + * Uses a higher rate for SignIn/SignUp to improve signal quality. + * + * @internal + */ +function getComponentMountedSamplingRate(component: string): number { + return AUTH_COMPONENTS.has(component) ? 1 : EVENT_SAMPLING_RATE; +} + type ComponentMountedBase = { component: string; }; @@ -18,6 +31,8 @@ type EventPrebuiltComponent = ComponentMountedBase & { type EventComponentMounted = ComponentMountedBase & TelemetryEventRaw['payload']; /** + * Factory for prebuilt component telemetry events. + * * @internal */ function createPrebuiltComponentEvent(event: typeof EVENT_COMPONENT_MOUNTED | typeof EVENT_COMPONENT_OPENED) { @@ -28,7 +43,8 @@ function createPrebuiltComponentEvent(event: typeof EVENT_COMPONENT_MOUNTED | ty ): TelemetryEventRaw { return { event, - eventSamplingRate: EVENT_SAMPLING_RATE, + eventSamplingRate: + event === EVENT_COMPONENT_MOUNTED ? getComponentMountedSamplingRate(component) : EVENT_SAMPLING_RATE, payload: { component, appearanceProp: Boolean(props?.appearance), @@ -91,7 +107,7 @@ export function eventComponentMounted( ): TelemetryEventRaw { return { event: EVENT_COMPONENT_MOUNTED, - eventSamplingRate: EVENT_SAMPLING_RATE, + eventSamplingRate: getComponentMountedSamplingRate(component), payload: { component, ...props,