From 8a6baf96e0ea36b2488faeeb5d4075bdfad37d8b Mon Sep 17 00:00:00 2001 From: ChrisCanin Date: Wed, 19 Nov 2025 14:42:14 -0800 Subject: [PATCH 1/2] fix(fraudProtection): Add handling for network errors in captcha logic --- packages/clerk-js/src/core/fraudProtection.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/clerk-js/src/core/fraudProtection.ts b/packages/clerk-js/src/core/fraudProtection.ts index 6051f5d8010..8dcac4aebed 100644 --- a/packages/clerk-js/src/core/fraudProtection.ts +++ b/packages/clerk-js/src/core/fraudProtection.ts @@ -1,4 +1,4 @@ -import { ClerkRuntimeError, isClerkAPIResponseError } from '@clerk/shared/error'; +import { ClerkRuntimeError, isClerkAPIResponseError, isClerkRuntimeError } from '@clerk/shared/error'; import { CaptchaChallenge } from '../utils/captcha/CaptchaChallenge'; import type { Clerk } from './resources/internal'; @@ -45,6 +45,12 @@ export class FraudProtection { throw e; } + // Network errors should bypass captcha logic and be re-thrown immediately + // so cache fallback can be triggered + if (isClerkRuntimeError(e) && e.code === 'network_error') { + throw e; + } + if (e.errors[0]?.code !== 'requires_captcha') { throw e; } From c1acc3237a02ddebeaaaadefb2b9596ed31200ca Mon Sep 17 00:00:00 2001 From: ChrisCanin Date: Wed, 19 Nov 2025 16:04:04 -0800 Subject: [PATCH 2/2] Unmask network errors to enable cache fallback --- .changeset/fix-network-error-cache-fallback.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-network-error-cache-fallback.md diff --git a/.changeset/fix-network-error-cache-fallback.md b/.changeset/fix-network-error-cache-fallback.md new file mode 100644 index 00000000000..f11efdb2ad0 --- /dev/null +++ b/.changeset/fix-network-error-cache-fallback.md @@ -0,0 +1,5 @@ +--- +'@clerk/clerk-js': patch +--- + +Fix issue where network errors were being masked by fraud protection logic, preventing cache fallback from triggering properly.