diff --git a/apps/web/src/components/theme-toggle.tsx b/apps/web/src/components/theme-toggle.tsx
index 6fd84fa3..236647ee 100644
--- a/apps/web/src/components/theme-toggle.tsx
+++ b/apps/web/src/components/theme-toggle.tsx
@@ -1,5 +1,6 @@
"use client";
+import { useEffect, useState } from "react";
import { Button } from "./ui/button";
import { useTheme } from "next-themes";
import { cn } from "@/utils/ui";
@@ -18,6 +19,25 @@ export function ThemeToggle({
onToggle,
}: ThemeToggleProps) {
const { theme, setTheme } = useTheme();
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ // Prevent hydration mismatch by not rendering theme-dependent content until mounted
+ if (!mounted) {
+ return (
+
+ );
+ }
return (