diff --git a/packages/react/src/html/ui/hooks/useTheme.mjs b/packages/react/src/html/ui/hooks/useTheme.mjs index 3ed562d16..f7ee009a8 100644 --- a/packages/react/src/html/ui/hooks/useTheme.mjs +++ b/packages/react/src/html/ui/hooks/useTheme.mjs @@ -29,10 +29,14 @@ const applySystemTheme = () => applyTheme('system'); * @returns {['system'|'light'|'dark', (next: 'system'|'light'|'dark') => void]} */ export const useTheme = () => { - // Read stored preference once on mount; default to 'system'. - const [pref, setPref] = useState(() => - server ? 'system' : (localStorage.getItem('theme') ?? 'system') - ); + const [pref, setPref] = useState('system'); + + useEffect(() => { + const stored = localStorage.getItem('theme'); + if (stored === 'light' || stored === 'dark') { + setPref(stored); + } + }, []); // Apply theme on every preference change, and if 'system', // also listen for OS-level color scheme changes.