05/11/2025

I form sono una delle parti più noiose delle interfacce.
Li scrivi, li validi, li testi… e poi puntualmente l’utente inserisce qualcosa che non ti aspetti.
Se vuoi fare le cose fatte bene — cioè validazione sul client, tipi sicuri e lo stesso schema riusato anche sul server — allora la coppia React Hook Form + Zod è tra le soluzioni più eleganti in circolazione.
In Arkemis la usiamo perché:
Vediamo come si imposta.
Metterli insieme significa:
Installa tutto:
jsxPartiamo dalla parte più importante: lo schema.
Immaginiamo un form di contatto “dev style”:
jsx🎯 Nota: qui non stiamo duplicando tipi — li prendiamo direttamente da Zod.
Ora usiamo lo schema dentro il form.
L’idea è: “quando faccio submit, passa tutto dal resolver di Zod”.
jsx📌 Cose importanti:
Quando il form arriva su un api Next.js come `/api/contact`, lo validiamo con lo stesso schema.
jsxIn questo modo:
Se il server risponde con gli errori, li puoi rimettere dentro RHF:
jsx(nel componente sopra non ho messo setError per tenere il codice più leggibile, ma lo puoi aggiungere alla destrutturazione di useForm)
In Arkemis abbiamo pubblicato una piccola utility open source, shadcn-zod-form, che fa esattamente quello che avremmo voluto trovare già pronto:
Genera form di shadcn/ui partendo direttamente dagli schemi Zod.
Unisci il meglio dei tre mondi: Zod (schema), React Hook Form (gestione), shadcn/ui (UI bella e consistente).
In pratica:
L’abbiamo aperto e… ha già superato le 200 ⭐ su GitHub 🎉 Segno che questo problema lo avevano in tanti.
È open-source, quindi se vuoi aggiungere nuovi mapping di componenti, migliorare la CLI o supportare nuovi pattern, le PR sono benvenute
Nel mondo dei form, spesso si parte da un campo di testo e si finisce con un mostro di validazioni, stati e bug invisibili.
La combo React Hook Form + Zod è la cura elegante a tutto questo caos: ti dà tipi forti, validazione chiara e una DX che ti fa venir voglia di costruire di più e meglio.
Con pochi hook e uno schema ben scritto, ottieni form più affidabili, scalabili e facili da mantenere. Ma soprattutto, ottieni consistenza: il client e il server parlano lo stesso linguaggio.
Se anche tu vuoi creare esperienze fluide, tipate e senza sorprese,
beh… la prossima volta che devi validare un campo, fatti aiutare da Zod e React Hook Form.
🧠 Build clean. Validate smart. Quack proud. 🦆
Risorse
https://zod.dev
https://react-hook-form.com