From 4ff04701d8362f61125a7771d5e6576d3f9d1e01 Mon Sep 17 00:00:00 2001 From: ryan-crabbe-berri Date: Wed, 8 Jul 2026 15:13:54 -0700 Subject: [PATCH] docs(ui): explain latest-ref pattern in shared OAuth hook --- ui/litellm-dashboard/src/hooks/useMcpOAuthPkceFlow.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/litellm-dashboard/src/hooks/useMcpOAuthPkceFlow.ts b/ui/litellm-dashboard/src/hooks/useMcpOAuthPkceFlow.ts index 930e953fa84..35e21e338c3 100644 --- a/ui/litellm-dashboard/src/hooks/useMcpOAuthPkceFlow.ts +++ b/ui/litellm-dashboard/src/hooks/useMcpOAuthPkceFlow.ts @@ -84,6 +84,9 @@ export const useMcpOAuthPkceFlow = ({ const [error, setError] = useState(null); const processingRef = useRef(false); + // Latest-ref pattern: reassigned every render so the memoized callbacks below + // read the current buildReturnUrl/persistToken/onSuccess at call time without + // listing them as deps (which would re-subscribe the on-mount resume effect). const callbacksRef = useRef({ buildReturnUrl, persistToken, onSuccess }); callbacksRef.current = { buildReturnUrl, persistToken, onSuccess };