Skip to content

Commit 6183b19

Browse files
committed
fix: resolve hydration errors in theme toggle components
1 parent 1b33590 commit 6183b19

File tree

1 file changed

+4
-16
lines changed

1 file changed

+4
-16
lines changed

app/providers/GlobalProvider.tsx

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,10 @@ const queryClient = new QueryClient({
3030
const PSE_DARK_MODE_KEY = "pse-dark-mode"
3131

3232
export function GlobalProvider({ children }: { children: ReactNode }) {
33-
// Start with system preference to avoid null return
34-
const [isDarkMode, setIsDarkMode] = useState(() => {
35-
// Server-side safe default
36-
if (typeof window === "undefined") return false
37-
38-
// Try to get system preference immediately
39-
try {
40-
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
41-
return mediaQuery.matches
42-
} catch {
43-
return false
44-
}
45-
})
33+
const [isDarkMode, setIsDarkMode] = useState(false)
4634
const [isInitialized, setIsInitialized] = useState(false)
47-
48-
// Initialize dark mode from localStorage or system preference
35+
36+
// Initialize dark mode from localStorage or system preference AFTER hydration
4937
useEffect(() => {
5038
const storedPreference = localStorage.getItem(PSE_DARK_MODE_KEY)
5139
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
@@ -95,4 +83,4 @@ export function useGlobalProvider() {
9583
throw new Error("useGlobalContext must be used within a GlobalProvider")
9684
}
9785
return context
98-
}
86+
}

0 commit comments

Comments
 (0)