Next.js Discord

Discord Forum

Hydration failed

Unanswered
Siberian posted this in #help-forum
Open in Discord
SiberianOP
Hello, I'm using a form and when submitting I encounter the notorious console error:
Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. 

  <form
+    method="POST"
-    method={null}
     action={function bound dispatchActionState}
     className="grid gap-2 relative"
  >

Here is the relevant client component code that is causing the error:
import { ActionResult } from "@/app/types";
import { ReactNode, useActionState } from "react";
import Card from "./Card";

export default function Form({
  children,
  formAction,
  title,
  subtitle,
  styles,
}: {
  children: ReactNode;
  formAction: (_: any, formData: FormData) => Promise<ActionResult>;
  title: string;
  subtitle: string;
  styles?: string;
}) {
  const [state, action, isLoading] = useActionState(formAction, {
    message: "",
    success: false,
  });

  return (
    <Card title={title} subtitle={subtitle} styles={styles || "max-w-md"}>
      <form method="POST" action={action} className="grid gap-2 relative">
        {children}
      </form>
    </Card>
  );
}

Thanks in advance.

9 Replies

Asian black bear
Try removing the explicit method prop.
@Asian black bear Try removing the explicit method prop.
SiberianOP
That results in me getting this hydration error on submit:
autofill-information={"overall type: UNKNOWN_TYPE\nhtml type: HTML_TYPE_UNSPECIFIED\n..."}
-                               title={"overall type: UNKNOWN_TYPE\nhtml type: HTML_TYPE_UNSPECIFIED\nserver type: NO..."}
-                               autofill-prediction="UNKNOWN_TYPE"
Asian black bear
This looks like Chrome.
Try a different browser to confirm whether it's an issue with your code or the browser.
@Asian black bear Try a different browser to confirm whether it's an issue with your code or the browser.
SiberianOP
Alright, I'll commit treason and open up Binge.
@Asian black bear Try a different browser to confirm whether it's an issue with your code or the browser.
SiberianOP
Ohh my bad I've accidently removed a "use server" from my server actions file, thanks for helping though.
@Siberian Ohh my bad I've accidently removed a `"use server"` from my server actions file, thanks for helping though.
Crying rn lol, I typed "Weird, If the function you're passing to useActionState() is a Server Action I would bet It works. Are you sure you're marking it with "use server"?" and then did ctrl + x when I read it might be chrome and I didn't want to sound stupid...
You're good