Personalización de errores
En Zod, los errores de validación aparecen como instancias de la clase z.core.$ZodError.
La clase ZodError en el paquete zod es una subclase que implementa algunos métodos de conveniencia adicionales.
Las instancias de $ZodError contienen un array .issues. Cada issue (problema) contiene un message legible por humanos y metadatos estructurados adicionales sobre el problema.
Cada issue contiene una propiedad message con un mensaje de error legible por humanos. Los mensajes de error se pueden personalizar de varias maneras.
El parámetro error
Prácticamente todas las API de Zod aceptan un mensaje de error opcional.
Este error personalizado aparecerá como la propiedad message de cualquier issue de validación que se origine en este esquema.
Todas las funciones z y métodos de esquema aceptan errores personalizados.
Si lo prefieres, puedes pasar un objeto de parámetros con un parámetro error en su lugar.
El parámetro error opcionalmente acepta una función. Una función de personalización de errores se conoce como un mapa de errores (error map) en la terminología de Zod. El mapa de errores se ejecutará en tiempo de análisis si ocurre un error de validación.
Nota — En Zod v3, había parámetros separados para message (una cadena) y errorMap (una función). Estos se han unificado en Zod 4 como error.
El mapa de errores recibe un objeto de contexto que puedes usar para personalizar el mensaje de error basado en el issue de validación.
Para casos avanzados, el objeto iss proporciona información adicional que puedes usar para personalizar el error.
Dependiendo de la API que estés usando, puede haber propiedades adicionales disponibles. Usa el autocompletado de TypeScript para explorar las propiedades disponibles.
Devuelve undefined para evitar personalizar el mensaje de error y volver al mensaje predeterminado. (Más específicamente, Zod cederá el control al siguiente mapa de errores en la cadena de precedencia.) Esto es útil para personalizar selectivamente ciertos mensajes de error pero no otros.
Personalización de errores por análisis
Para personalizar errores en una base por análisis, pasa un mapa de errores al método parse:
Esto tiene menor precedencia que cualquier mensaje personalizado a nivel de esquema.
El objeto iss es una unión discriminada de todos los tipos de issues posibles. Usa la propiedad code para discriminar entre ellos.
Para un desglose de todos los códigos de issue de Zod, consulta la documentación de zod/v4/core.
Incluir entrada en issues
Por defecto, Zod no incluye datos de entrada en los issues. Esto es para evitar el registro involuntario de datos de entrada potencialmente sensibles. Para incluir los datos de entrada en cada issue, usa la bandera reportInput:
Personalización global de errores
Para especificar un mapa de errores global, usa z.config() para establecer la configuración customError de Zod:
Los mensajes de error globales tienen menor precedencia que los mensajes de error a nivel de esquema o por análisis.
El objeto iss es una unión discriminada de todos los tipos de issues posibles. Usa la propiedad code para discriminar entre ellos.
Para un desglose de todos los códigos de issue de Zod, consulta la documentación de zod/v4/core.
Internacionalización
Para soportar la internacionalización de mensajes de error, Zod proporciona varias locales integradas. Estas se exportan desde el paquete zod/v4/core.
Nota — La biblioteca regular zod carga automáticamente la locale en. Zod Mini no carga ninguna locale por defecto; en su lugar, todos los mensajes de error tienen por defecto Invalid input.
Para cargar perezosamente (lazy load) una locale, considera importaciones dinámicas:
Por conveniencia, todas las locales se exportan como z.locales desde "zod". En algunos empaquetadores, esto puede no ser tree-shakable.
Locales
Las siguientes locales están disponibles:
ar— Arabicaz— Azerbaijanibe— Belarusianbg— Bulgarianca— Catalancs— Czechda— Danishde— Germanen— Englisheo— Esperantoes— Spanishfa— Farsifi— Finnishfr— FrenchfrCA— Canadian Frenchhe— Hebrewhu— Hungarianid— Indonesianis— Icelandicit— Italianja— Japaneseka— Georgiankm— Khmerko— Koreanlt— Lithuanianmk— Macedonianms— Malaynl— Dutchno— Norwegianota— Türkîps— Pashtopl— Polishpt— Portugueseru— Russiansl— Sloveniansv— Swedishta— Tamilth— Thaitr— Türkçeuk— Ukrainianur— Urduvi— Tiếng ViệtzhCN— Simplified ChinesezhTW— Traditional Chineseyo— Yorùbá
Precedencia de errores
A continuación hay una referencia rápida para determinar la precedencia de errores: si se han definido múltiples personalizaciones de errores, ¿cuál tiene prioridad? De mayor a menor prioridad:
- Error a nivel de esquema — Cualquier mensaje de error "hard coded" en una definición de esquema.
- Error por análisis — Un mapa de errores personalizado pasado al método
.parse().
- Mapa de errores global — Un mapa de errores personalizado pasado a
z.config().
- Mapa de errores de locale — Un mapa de errores personalizado pasado a
z.config().

