diff --git a/src/app/login/dev-login-form.tsx b/src/app/login/dev-login-form.tsx index 89a01a7..865cc4c 100644 --- a/src/app/login/dev-login-form.tsx +++ b/src/app/login/dev-login-form.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { signIn } from "next-auth/react"; type WorkspaceOption = { @@ -28,6 +28,12 @@ export function DevLoginForm({ workspaces }: { workspaces: WorkspaceOption[] }) const [workspaceId, setWorkspaceId] = useState(workspaces[0]?.id ?? ""); const [loading, setLoading] = useState(false); + // Render client-only — password manager extensions inject extra DOM nodes + // into the input fields below, which causes a hydration mismatch on SSR. + const [mounted, setMounted] = useState(false); + useEffect(() => setMounted(true), []); + if (!mounted) return null; + async function handleLogin( loginEmail: string, loginName: string,