Skip to content

Typed submit

config.ts calls defineForm(...), action.ts wires createFormAction(config, handler) as a server action, and page.tsx renders FormRenderer<typeof config> — the submit payload is fully inferred from the config; server field errors reuse the same ServerErrorResult shape.

Demo only — submitting taken@example.com funnels a server-side field error back onto the email field.