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.
Code
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 };
}