npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

better-zod-errors

v1.0.0

Published

<h1 align="center"> <br /> 💎 <br /> better-zod-errors <sup> <br /> <br /> </sup> </h1>

Readme

Introduction

This library provides set of functions to format and enhance error messages generated by Zod with code frames.

Installation

$ npm install better-zod-errors
# or
$ yarn add better-zod-errors
# or
$ pnpm add better-zod-errors

Usage

This library provides two main functions to format Zod errors with code frames:

JSON Format

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
  }
}

YAML Format

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
  }
}

API

formatJsonError(issue: z.ZodIssue, data: any, [options: FormatJsonErrorOptions]): string

Formats a single Zod issue into a more readable error message with a code frame.

issue

Type: z.ZodIssue

The Zod issue to format thrown during validation with ZodError.

data

Type: any

The original data that was validated. If the data was not matched with the original structure, it may throw an error.

options

Type: FormatJsonErrorOptions (optional)

useColor

Type: boolean (default: true)

Whether to use ANSI colors in the output. Set to false to disable colors.

syntaxHighlighting

Type: boolean (default: true)

Whether to use syntax highlighting in the code frame. Set to false to disable syntax highlighting.

formatYamlError(issue: z.ZodIssue, payload: any, [options: FormatYamlErrorOptions]): string

Formats a single Zod issue into a more readable error message with a YAML code frame.

issue

Type: z.ZodIssue

The Zod issue to format thrown during validation with ZodError.

payload

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.

options

Type: FormatYamlErrorOptions (optional)

useColor

Type: boolean (default: true)

Whether to use ANSI colors in the output. Set to false to disable colors.

syntaxHighlighting

Type: boolean (default: true)

Whether to use syntax highlighting in the YAML code frame. Set to false to disable syntax highlighting.