Skip to content

Commit 3b62651

Browse files
Add canUseKeyless check to detectKeylessEnvDrift function in keyless telemetry
Changeset
1 parent c4e7b99 commit 3b62651

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

.changeset/fine-weeks-give.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@clerk/nextjs': patch
3+
---
4+
5+
Updated implementation of detectKeylessEnvDrift to function when <ClerkProvider /> is implemented in client components. Added canUseKeyless check to detectKeylessEnvDrift to prevent telemetry event from running for production applications.

packages/nextjs/src/app-router/client/ClerkProvider.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ const NextClientClerkProvider = (props: NextClerkProviderProps) => {
4444
const replace = useAwaitableReplace();
4545
const [isPending, startTransition] = useTransition();
4646

47+
// Call drift detection on mount (client-side)
48+
useSafeLayoutEffect(() => {
49+
if (canUseKeyless) {
50+
void detectKeylessEnvDriftAction();
51+
}
52+
}, []);
53+
4754
// Avoid rendering nested ClerkProviders by checking for the existence of the ClerkNextOptions context provider
4855
const isNested = Boolean(useClerkNextOptions());
4956
if (isNested) {
@@ -56,11 +63,6 @@ const NextClientClerkProvider = (props: NextClerkProviderProps) => {
5663
}
5764
}, [isPending]);
5865

59-
// Call drift detection on mount (client-side)
60-
useSafeLayoutEffect(() => {
61-
void detectKeylessEnvDriftAction();
62-
}, []);
63-
6466
useSafeLayoutEffect(() => {
6567
window.__unstable__onBeforeSetActive = intent => {
6668
/**

packages/nextjs/src/app-router/keyless-actions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ export async function deleteKeylessAction() {
9595
}
9696

9797
export async function detectKeylessEnvDriftAction() {
98+
if (!canUseKeyless) {
99+
return;
100+
}
101+
98102
try {
99103
const { detectKeylessEnvDrift } = await import('../server/keyless-telemetry.js');
100104
await detectKeylessEnvDrift();

packages/nextjs/src/server/keyless-telemetry.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { TelemetryEventRaw } from '@clerk/types';
22
import { promises as fs } from 'fs';
33
import { dirname, join } from 'path';
44

5+
import { canUseKeyless } from '../utils/feature-flags';
56
import { createClerkClientWithOptions } from './createClerkClient';
67

78
const EVENT_KEYLESS_ENV_DRIFT_DETECTED = 'KEYLESS_ENV_DRIFT_DETECTED';
@@ -86,6 +87,9 @@ async function tryMarkTelemetryEventAsFired(): Promise<boolean> {
8687
* @returns Promise<void> - Function completes silently, errors are logged but don't throw
8788
*/
8889
export async function detectKeylessEnvDrift(): Promise<void> {
90+
if (!canUseKeyless) {
91+
return;
92+
}
8993
// Only run on server side
9094
if (typeof window !== 'undefined') {
9195
return;

0 commit comments

Comments
 (0)