This library provides set of functions to format and enhance error messages generated by Zod with code frames.
| with JSON | with YAML |
|---|---|
![]() |
![]() |
$ npm install better-zod-errors
# or
$ yarn add better-zod-errors
# or
$ pnpm add better-zod-errorsThis library provides two main functions to format Zod errors with code frames:
You can format JSON data validation errors using the formatJsonError function:
import { z } from "zod";
import { formatJsonError } from "better-zod-errors";
const schema = z.object({
name: z.string().min(2, "Name must be at least 2 characters long"),
age: z.number().min(0, "Age must be a positive number"),
});
const payload = {
name: "A",
age: -5,
};
try {
schema.parse(payload);
} catch (e) {
if (e instanceof z.ZodError) {
for (const issue of e.issues) {
const formattedError = formatJsonError(issue, payload);
console.log(formattedError); // formatted error message with code frame
}
} else {
// handle other errors
}
}You can also format YAML data validation errors using the formatYamlError function:
import { z } from "zod";
import { formatYamlError } from "better-zod-errors";
const schema = z.object({
name: z.string().min(2, "Name must be at least 2 characters long"),
age: z.number().min(0, "Age must be a positive number"),
address: z.object({
street: z.string(),
city: z.string(),
}),
});
const payload = {
name: "John",
age: -5,
address: {
street: "123 Main St",
city: 456, // Invalid type
},
};
try {
schema.parse(payload);
} catch (e) {
if (e instanceof z.ZodError) {
for (const issue of e.issues) {
const formattedError = formatYamlError(issue, payload);
console.log(formattedError); // formatted YAML error message with code frame
}
} else {
// handle other errors
}
}Formats a single Zod issue into a more readable error message with a code frame.
Type: z.ZodIssue
The Zod issue to format thrown during validation with ZodError.
Type: any
The original data that was validated. If the data was not matched with the original structure, it may throw an error.
Type: FormatJsonErrorOptions (optional)
Type: boolean (default: true)
Whether to use ANSI colors in the output. Set to false to disable colors.
Type: boolean (default: true)
Whether to use syntax highlighting in the code frame. Set to false to disable syntax highlighting.
Formats a single Zod issue into a more readable error message with a YAML code frame.
Type: z.ZodIssue
The Zod issue to format thrown during validation with ZodError.
Type: number | bigint | boolean | string | object
The original data that was validated in YAML format. The function will serialize this data to YAML and create a source map to locate error positions.
Type: FormatYamlErrorOptions (optional)
Type: boolean (default: true)
Whether to use ANSI colors in the output. Set to false to disable colors.
Type: boolean (default: true)
Whether to use syntax highlighting in the YAML code frame. Set to false to disable syntax highlighting.

