From 9ad9fac8dd53bb12730951c3f8c33bb6bea39c09 Mon Sep 17 00:00:00 2001 From: Dmitrii Iurco Date: Tue, 9 Jun 2026 12:42:16 -0400 Subject: [PATCH] Fix Settings crash: temporal dead zone on checkDdnsStatus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit checkDdnsStatus was declared via useCallback at line ~526 but referenced in a useEffect dependency array at line 419 — before its declaration. JavaScript const/let are not hoisted; accessing them before declaration throws a ReferenceError (temporal dead zone). In the production build this surfaced as: ReferenceError: Cannot access 'Pn' before initialization and caused the Settings page to crash blank on load. Moved the checkDdnsStatus useCallback definition to immediately before the useEffect that lists it as a dependency. Co-Authored-By: Claude Sonnet 4.6 --- webui/src/pages/Settings.jsx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/webui/src/pages/Settings.jsx b/webui/src/pages/Settings.jsx index 9d1f998..1849c91 100644 --- a/webui/src/pages/Settings.jsx +++ b/webui/src/pages/Settings.jsx @@ -416,6 +416,18 @@ function Settings() { useEffect(() => { loadAll(); }, [loadAll]); useEffect(() => () => clearInterval(certPollRef.current), []); + const checkDdnsStatus = useCallback(async () => { + setDdnsStatusLoading(true); + try { + const res = await ddnsAPI.getStatus(); + setDdnsStatus(res.data); + } catch { + setDdnsStatus(null); + } finally { + setDdnsStatusLoading(false); + } + }, []); + useEffect(() => { if (domainMode === 'pic_ngo') checkDdnsStatus(); }, [domainMode, checkDdnsStatus]); // eslint-disable-line react-hooks/exhaustive-deps @@ -523,18 +535,6 @@ function Settings() { } }, [ddnsCfToken, domainName]); - const checkDdnsStatus = useCallback(async () => { - setDdnsStatusLoading(true); - try { - const res = await ddnsAPI.getStatus(); - setDdnsStatus(res.data); - } catch { - setDdnsStatus(null); - } finally { - setDdnsStatusLoading(false); - } - }, []); - const startCertPolling = useCallback(() => { clearInterval(certPollRef.current); setCertAcquiring(true);