Next.js Server-Side Form Validation

Validate forms in Next.js App Router using server actions with Zod schema validation. Returns typed error objects to the client component and prevents.

Typescript Next Form Validation

Code

snippet
import { z } from 'zod';

const schema = z.object({
  email: z.string().email('Invalid email'),
  password: z.string().min(8, 'Min 8 characters'),
});

export async function loginAction(formData: FormData) {
  const parsed = schema.safeParse({
    email: formData.get('email'),
    password: formData.get('password'),
  });
  if (!parsed.success) {
    return { errors: parsed.error.flatten().fieldErrors };
  }
  const user = await authenticate(parsed.data);
  return { user };
}