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..599ff02ac51 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,12 @@ export const ClientClerkProvider = (props: NextClerkProviderProps) => { return new Promise(res => { window.__clerk_internal_invalidateCachePromise = res; startTransition(() => { - router.refresh(); + //@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(); + } }); }); }; 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()}`); +}