Skip to content

Commit f4b4a82

Browse files
committed
fix: cache hosted pairing request at module level to survive remounts
readHostedPairingRequest() was called inside useRef() which re-initializes on remount. After the first mount, stripPairingTokenFromUrl() removes the token from the URL, so any subsequent remount (React Strict Mode, Suspense, parent key change) would read null from the stripped URL and show a misleading 'missing host or token' error. Cache the result in a module-level variable so it persists across remounts.
1 parent 0d692d0 commit f4b4a82

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

apps/web/src/components/auth/PairingRouteSurface.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,16 @@ export function PairingRouteSurface({
161161
);
162162
}
163163

164+
let cachedHostedPairingRequest: ReturnType<typeof readHostedPairingRequest> | undefined;
165+
function readHostedPairingRequestOnce() {
166+
if (cachedHostedPairingRequest === undefined) {
167+
cachedHostedPairingRequest = readHostedPairingRequest();
168+
}
169+
return cachedHostedPairingRequest;
170+
}
171+
164172
export function HostedPairingRouteSurface() {
165-
const hostedPairingRequestRef = useRef(readHostedPairingRequest());
173+
const hostedPairingRequestRef = useRef(readHostedPairingRequestOnce());
166174
const [status, setStatus] = useState<"pairing" | "paired" | "error">("pairing");
167175
const [message, setMessage] = useState("Connecting to this backend.");
168176
const submitAttemptedRef = useRef(false);

0 commit comments

Comments
 (0)