From 874df97fb97142703501e9dfb61b3e1b1d4c1f28 Mon Sep 17 00:00:00 2001 From: wobsoriano Date: Mon, 27 Oct 2025 09:13:06 -0700 Subject: [PATCH 1/2] fix(react-router): Allow overriding of options in middleware --- .../server/__tests__/clerkMiddleware.test.ts | 8 +++++ .../src/server/clerkMiddleware.ts | 34 ++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts b/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts index 8be8e33c419..b69447ba3b6 100644 --- a/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts +++ b/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts @@ -65,6 +65,14 @@ describe('clerkMiddleware', () => { const result = await middleware(args, mockNext); expect(mockAuthenticateRequest).toHaveBeenCalledWith(expect.any(Object), { + apiUrl: undefined, + secretKey: 'sk_test_...', + jwtKey: undefined, + proxyUrl: undefined, + isSatellite: undefined, + domain: undefined, + publishableKey: 'pk_test_...', + machineSecretKey: undefined, audience: '', authorizedParties: [], signInUrl: '', diff --git a/packages/react-router/src/server/clerkMiddleware.ts b/packages/react-router/src/server/clerkMiddleware.ts index 2e1f2d62d72..af71c526097 100644 --- a/packages/react-router/src/server/clerkMiddleware.ts +++ b/packages/react-router/src/server/clerkMiddleware.ts @@ -34,13 +34,39 @@ export const clerkMiddleware = (options?: ClerkMiddlewareOptions): MiddlewareFun return async (args, next) => { const clerkRequest = createClerkRequest(patchRequest(args.request)); const loadedOptions = loadOptions(args, options); - const { audience, authorizedParties } = loadedOptions; - const { signInUrl, signUpUrl, afterSignInUrl, afterSignUpUrl } = loadedOptions; - const { organizationSyncOptions } = loadedOptions; - const requestState = await clerkClient(args).authenticateRequest(clerkRequest, { + + // Pick only the properties needed by authenticateRequest. + // Used when manually providing options to the middleware. + const { + apiUrl, + secretKey, + jwtKey, + proxyUrl, + isSatellite, + domain, + publishableKey, + machineSecretKey, + audience, + authorizedParties, + signInUrl, + signUpUrl, + afterSignInUrl, + afterSignUpUrl, organizationSyncOptions, + } = loadedOptions; + + const requestState = await clerkClient(args).authenticateRequest(clerkRequest, { + apiUrl, + secretKey, + jwtKey, + proxyUrl, + isSatellite, + domain, + publishableKey, + machineSecretKey, audience, authorizedParties, + organizationSyncOptions, signInUrl, signUpUrl, afterSignInUrl, From d9f972c507dc2b6c5d42db74a63b1ef915438195 Mon Sep 17 00:00:00 2001 From: Robert Soriano Date: Mon, 27 Oct 2025 09:14:52 -0700 Subject: [PATCH 2/2] chore: add changeset --- .changeset/purple-peas-shave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/purple-peas-shave.md diff --git a/.changeset/purple-peas-shave.md b/.changeset/purple-peas-shave.md new file mode 100644 index 00000000000..f8236388834 --- /dev/null +++ b/.changeset/purple-peas-shave.md @@ -0,0 +1,5 @@ +--- +"@clerk/react-router": patch +--- + +Fixed an issue where manually specified options in the middleware were not being respected.