From 3b04f374b8877e4cf4167f11ad3aa0ddf41f030d Mon Sep 17 00:00:00 2001 From: Barkley Trimsworth Date: Mon, 30 Mar 2026 19:24:05 +0000 Subject: [PATCH] fix(portal): fix isInitializing race condition causing premature redirect setIsInitializing(false) was in .finally() which fires BEFORE the outer .then() chain completes, causing redirect to fire before setSession was called. Now setIsInitializing(false) is called explicitly inside success/error handlers after setSession completes. Co-Authored-By: Paperclip --- apps/web/src/portal/CustomerPortal.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/web/src/portal/CustomerPortal.tsx b/apps/web/src/portal/CustomerPortal.tsx index f3d567a..86bb454 100644 --- a/apps/web/src/portal/CustomerPortal.tsx +++ b/apps/web/src/portal/CustomerPortal.tsx @@ -86,6 +86,7 @@ export function CustomerPortal() { .then((r) => { if (!r.ok) { setSessionError("Failed to create portal session. Please try again."); + setIsInitializing(false); return null; } return r.json() as Promise; @@ -96,11 +97,12 @@ export function CustomerPortal() { setClientName(devUser.name); setSessionError(null); } + setIsInitializing(false); }) .catch(() => { setSessionError("Failed to connect. Please check your connection and try again."); - }) - .finally(() => setIsInitializing(false)); + setIsInitializing(false); + }); } else { // No sessionId param and no dev user — init is complete with no session setIsInitializing(false);