From 185c4b33f11b027cae8de2f6895bd5dcdebe72c7 Mon Sep 17 00:00:00 2001 From: Nikos Douvlis Date: Wed, 5 Jun 2024 16:53:13 +0300 Subject: [PATCH 1/2] fix(nextjs): Replace router.refresh() with cookies().delete() --- .changeset/smooth-carrots-hear.md | 5 +++++ packages/nextjs/src/app-router/client/ClerkProvider.tsx | 3 ++- .../src/app-router/server-actions/invalidateCache.ts | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 .changeset/smooth-carrots-hear.md create mode 100644 packages/nextjs/src/app-router/server-actions/invalidateCache.ts diff --git a/.changeset/smooth-carrots-hear.md b/.changeset/smooth-carrots-hear.md new file mode 100644 index 00000000000..3fc34c49fa7 --- /dev/null +++ b/.changeset/smooth-carrots-hear.md @@ -0,0 +1,5 @@ +--- +'@clerk/nextjs': patch +--- + +Replace router.refresh() with cookies().delete() diff --git a/packages/nextjs/src/app-router/client/ClerkProvider.tsx b/packages/nextjs/src/app-router/client/ClerkProvider.tsx index 44efa5a0be5..df1d00d2339 100644 --- a/packages/nextjs/src/app-router/client/ClerkProvider.tsx +++ b/packages/nextjs/src/app-router/client/ClerkProvider.tsx @@ -8,6 +8,7 @@ import { ClerkNextOptionsProvider } from '../../client-boundary/NextOptionsConte import type { NextClerkProviderProps } from '../../types'; import { ClerkJSScript } from '../../utils/clerk-js-script'; import { mergeNextClerkPropsWithEnv } from '../../utils/mergeNextClerkPropsWithEnv'; +import { invalidateCacheAction } from '../server-actions/invalidateCache'; import { useAwaitablePush } from './useAwaitablePush'; import { useAwaitableReplace } from './useAwaitableReplace'; @@ -56,7 +57,7 @@ export const ClientClerkProvider = (props: NextClerkProviderProps) => { return new Promise(res => { window.__clerk_internal_invalidateCachePromise = res; startTransition(() => { - router.refresh(); + invalidateCacheAction(); }); }); }; diff --git a/packages/nextjs/src/app-router/server-actions/invalidateCache.ts b/packages/nextjs/src/app-router/server-actions/invalidateCache.ts new file mode 100644 index 00000000000..525242763d0 --- /dev/null +++ b/packages/nextjs/src/app-router/server-actions/invalidateCache.ts @@ -0,0 +1,7 @@ +'use server'; + +import { cookies } from 'next/headers'; + +export function invalidateCacheAction() { + return cookies().delete(`__clerk_invalidate_cache_cookie_${Date.now()}`); +} From f17124a4924e46421c8b3230960ae9823936f329 Mon Sep 17 00:00:00 2001 From: George Desipris Date: Tue, 11 Jun 2024 15:28:48 +0300 Subject: [PATCH 2/2] fix(nextjs): Invalidate via server action for nextjs 14 and above --- packages/nextjs/src/app-router/client/ClerkProvider.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/nextjs/src/app-router/client/ClerkProvider.tsx b/packages/nextjs/src/app-router/client/ClerkProvider.tsx index df1d00d2339..599ff02ac51 100644 --- a/packages/nextjs/src/app-router/client/ClerkProvider.tsx +++ b/packages/nextjs/src/app-router/client/ClerkProvider.tsx @@ -57,7 +57,12 @@ export const ClientClerkProvider = (props: NextClerkProviderProps) => { return new Promise(res => { window.__clerk_internal_invalidateCachePromise = res; startTransition(() => { - invalidateCacheAction(); + //@ts-expect-error next exitsts on window + if (window.next?.version && typeof window.next.version === 'string' && window.next.version.startsWith('13')) { + router.refresh(); + } else { + invalidateCacheAction(); + } }); }); };