DEV Community

Alex Spinov
Alex Spinov

Posted on

Conform Has a Free API — Type-Safe Form Validation for React Server Components

What if your form validation worked seamlessly with React Server Actions — progressive enhancement, no client JavaScript required?

Conform is a form validation library designed for server-first React applications.

Why Conform

Traditional form libraries (React Hook Form, Formik) are client-side only. Conform works with:

  • Server Actions — validate on the server, progressively enhance on client
  • Progressive enhancement — forms work without JavaScript
  • Zod/Yup integration — use your existing schemas
  • Accessibility — ARIA attributes generated automatically
  • Nested objects and arrays — complex form structures with type safety
  • File uploads — built-in support

Quick Start

npm install @conform-to/react @conform-to/zod
Enter fullscreen mode Exit fullscreen mode
// Server Action
"use server";
import { parseWithZod } from "@conform-to/zod";
import { z } from "zod";

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

export async function signup(prevState: unknown, formData: FormData) {
  const submission = parseWithZod(formData, { schema });

  if (submission.status !== "success") {
    return submission.reply();
  }

  // Create user...
  return redirect("/dashboard");
}
Enter fullscreen mode Exit fullscreen mode
// Client Component
"use client";
import { useForm } from "@conform-to/react";
import { parseWithZod } from "@conform-to/zod";
import { useActionState } from "react";
import { signup } from "./actions";

export function SignupForm() {
  const [lastResult, action] = useActionState(signup, undefined);
  const [form, fields] = useForm({
    lastResult,
    onValidate({ formData }) {
      return parseWithZod(formData, { schema });
    },
  });

  return (
    <form id={form.id} onSubmit={form.onSubmit} action={action}>
      <input name={fields.email.name} />
      <div>{fields.email.errors}</div>
      <input name={fields.password.name} type="password" />
      <div>{fields.password.errors}</div>
      <button>Sign Up</button>
    </form>
  );
}
Enter fullscreen mode Exit fullscreen mode

Real Use Case

A SaaS rebuilt their multi-step onboarding form with Conform + Server Actions. The form worked even when JavaScript failed to load. Conversion rate improved 12% on mobile — where JS loading is unreliable.

When to Use Conform

  • React Server Components / Server Actions projects
  • Forms that must work without JavaScript
  • Complex multi-step forms with nested data
  • Accessibility-critical applications

Get Started

Visit conform.guide — open source, works with Next.js, Remix, and any React framework.


Need custom data pipelines or scraping solutions? Check out my Apify actors or email me at spinov001@gmail.com for custom solutions.

Top comments (0)