Next.js

Updated: 7/14/2025, 10:19:28 AM

shadcn/uiでdarkmodeに切り替えるときのHydration errorを解決する方法

7/14/2025, 10:19:28 AM

theme-provider.tsx

"use client"; import { ThemeProvider as NextThemeProvider } from "next-themes"; import { type ThemeProviderProps } from "next-themes/dist/types"; import { useEffect, useState } from "react"; export const ThemeProvider = ({ children, ...props }: ThemeProviderProps) => { const [mounted, setMounted] = useState<boolean>(false); useEffect(() => { setMounted(true); return () => setMounted(false); }, []); return ( mounted && <NextThemeProvider {...props}>{children}</NextThemeProvider> ); };

のようにすればよいらしい.このようにしたら治った.

参考 DarkMode切替時でのHydration errorの対応策