Next.js

Updated: 10/18/2025, 5:40:23 PM

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

10/18/2025, 5:40:23 PM

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の対応策