From 22a2582bb932cf1a804abff3d0d7e273f084c2cc Mon Sep 17 00:00:00 2001 From: Jacek Date: Tue, 2 Sep 2025 11:30:07 -0500 Subject: [PATCH] fix: allow clearing fetch cache on sign out --- packages/clerk-js/src/core/clerk.ts | 4 ++++ packages/clerk-js/src/ui/hooks/useFetch.ts | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 807942113bf..892995885d3 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -525,6 +525,10 @@ export class Clerk implements ClerkInterface { // Notify other tabs that user is signing out and clean up cookies. eventBus.emit(events.UserSignOut, null); + if (typeof window !== 'undefined' && (window as any).__clerkClearFetchCache) { + (window as any).__clerkClearFetchCache(); + } + this.#setTransitiveState(); await tracker.track(async () => { diff --git a/packages/clerk-js/src/ui/hooks/useFetch.ts b/packages/clerk-js/src/ui/hooks/useFetch.ts index 7abe9207c49..d499ed91597 100644 --- a/packages/clerk-js/src/ui/hooks/useFetch.ts +++ b/packages/clerk-js/src/ui/hooks/useFetch.ts @@ -31,6 +31,15 @@ export const clearFetchCache = () => { requestCache = new Map(); }; +/** + * Global function to clear the fetch cache. + * This is exposed on the window object to allow core modules to clear the cache + * without importing from UI modules. + */ +if (typeof window !== 'undefined') { + (window as any).__clerkClearFetchCache = clearFetchCache; +} + const serialize = (key: unknown) => (typeof key === 'string' ? key : JSON.stringify(key)); const useCache = (