From a9a49076559bd18f564745ed5fbe526d68f9e8a5 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 5 Feb 2026 16:48:26 +0000 Subject: [PATCH] fix(clerk-js): Remove beforeunload event listener from SafeLock The beforeunload listener was redundant and degraded UX by disabling the browser's back-forward cache (bfcache). Lock cleanup is handled automatically: - Web Locks API releases locks natively on page unload - browser-tabs-lock has a built-in timeout mechanism that expires orphaned locks after ~5 seconds Fixes #7714 https://claude.ai/code/session_01S2A4oTbEm3huTsR26xkU1E --- packages/clerk-js/src/core/auth/safeLock.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/clerk-js/src/core/auth/safeLock.ts b/packages/clerk-js/src/core/auth/safeLock.ts index 405190a73ff..5fb08ea5a06 100644 --- a/packages/clerk-js/src/core/auth/safeLock.ts +++ b/packages/clerk-js/src/core/auth/safeLock.ts @@ -3,12 +3,6 @@ import Lock from 'browser-tabs-lock'; export function SafeLock(key: string) { const lock = new Lock(); - // TODO: Figure out how to fix this linting error - // eslint-disable-next-line @typescript-eslint/no-misused-promises - window.addEventListener('beforeunload', async () => { - await lock.releaseLock(key); - }); - const acquireLockAndRun = async (cb: () => Promise) => { if ('locks' in navigator && isSecureContext) { const controller = new AbortController();