Conform is a progressive-enhancement-first form library designed for server-centric frameworks like Remix and Next.js Server Actions. It validates FormData on the server and hydrates field errors on the client without controlled inputs.
0 / 5 completed
1 / 5
What is Conform's primary design goal compared to React Hook Form?
Conform is designed for server-centric frameworks. It parses FormData on the server, validates it (with Zod, Valibot, or custom), and returns structured results that drive both server responses and client-side error display — with full support for native form submission and progressive enhancement.
2 / 5
What does getFormProps(form) return in Conform?
getFormProps(form) extracts the necessary HTML attributes and event handlers from Conform's form object. Spreading these onto the <form> element wires up Conform's validation lifecycle, accessibility attributes, and submission handling without boilerplate.
3 / 5
What does getInputProps(field, options) do in Conform?
getInputProps(field, { type: 'email' }) generates the correct HTML attributes for the input, including accessibility attributes like aria-invalid and aria-describedby when the field has errors. Because inputs are uncontrolled, they do not cause re-renders on every keystroke.
4 / 5
What is an intent in Conform and when is it used?
Intent in Conform is a reserved FormData field that carries contextual information about the submission. For example, a list form might have buttons for 'delete row' and 'add row' — each sends a different intent value so the server action can branch on what the user intended without needing separate form endpoints.
5 / 5
What does parse(formData, { schema }) return in Conform when used on the server?
parse(formData, { schema: zodSchema }) validates the submission against the schema. The returned object's status is 'success' with a typed value, or 'error' with field-level error messages. Calling submission.reply() serialises the result to send back to the client for hydrating field errors.