NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm
A JSON Schema validator with support for custom keywords, vocabularies, and dialects
Latest stable
1.18.1
Last release today
14 Nov 2026
Ships fairly regularly
a new release about every 6 weeks
Rarely documented
notes for 10 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
124 releases · first in 2020
Drag across the ruler to compare, or tap a release to open it.
A schema can no longer give itself or an embedded schema a file: $id unless it was loaded from the filesystem. Before this fix, a schema retrieved fro
file: $id unless it was loaded from the filesystem. Before this fix, a schema retrieved from the web could use a file: $id to make its $refs resolve against a file: base and load local schema files. A file: id is now allowed only when the URI it resolves against is also a file: URI.multipleOf gives correct results for very small divisors and very large values. Values much smaller than the divisor, like 1e-20 with multipleOf: 1, no longer pass. (#140, by @MohitSAGAR11)SchemaParameter.schema in the openapi-3-1 types: it was OasSchema32 and is now OasSchema31. (#137, by @tarunagnihotri534)format keyword respects shouldValidateFormat. It still validates formats by default, but now you can turn that off.date-time format validates against RFC 9557, which allows time zone and suffix tags such as 2026-11-14T12:00:00-08:00[America/Los_Angeles]. The v1 handler uses the https://json-schema.org/format/date-time URI. The RFC 3339 handler that draft-04 through draft-2020-12 use moved to https://json-schema.org/format/draft-04/date-time.$dynamicRef no longer accepts a leading #. Write "$dynamicRef": "foo", not "$dynamicRef": "#foo".BASIC output went from about 3.8ms to 3.0ms.format-assertion and format-annotation tags.@stylistic/eslint-plugin 6.0.0.Full Changelog: v1.18.0...v1.18.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →
You can now add your own output formats with setOutputFormat from @hyperjump/json-schema/experimental . An output format handler is called for each ev
You can now add your own output formats with setOutputFormat from @hyperjump/json-schema/experimental. An output format handler is called for each evaluation with the validation options. It can return an EvaluationPlugin that collects results during evaluation, and a getErrors function that builds the errors of the output when validation fails. FLAG, BASIC, and DETAILED are now registered this way too.
This lets other packages add output formats without this package depending on them. For example, @hyperjump/json-schema-errors uses it to add a JSE output format with human readable error messages.
import { setOutputFormat } from "@hyperjump/json-schema/experimental";
setOutputFormat("FAILED_KEYWORDS", (options) => {
const plugin = new FailedKeywordsPlugin();
return { plugin, getErrors: () => plugin.keywords };
});
const output = await validate("https://example.com/schema1", 42, "FAILED_KEYWORDS");In TypeScript, OutputFormats and ValidationOptions are now interfaces, so a package that adds an output format can augment them with its output type and options. validate, Validator, and interpret infer the output type from the output format you pass. See the README's Output Formats section for the full example. The README now documents the DETAILED output format as well.
const and enum no longer follow references in their values. In draft-04, draft-06, and draft-07, a value like { "const": { "$ref": "#/definitions/foo" } } now compares against the literal object instead of the referenced schema. (#129)Full Changelog: v1.17.9...v1.18.0
This project publishes no release notes. Between v1.17.9 and v1.18.0 there were 4 commits, 3 of them substantive:
Build schema documents without cloning the schema
Full Changelog: v1.17.8...v1.17.9
This project publishes no release notes. Between v1.17.8 and v1.17.9 there were 15 commits, 13 of them substantive:
Allow instance objects to have null constructors
Full Changelog: v1.17.7...v1.17.8
This project publishes no release notes. Between v1.17.7 and v1.17.8 there were 2 commits, 1 of them substantive:
Fix type for Keyword.annotation
Full Changelog: v1.17.6...v1.17.7
This project publishes no release notes. Between v1.17.6 and v1.17.7 there were 8 commits, 7 of them substantive:
Pin undici version to work around a bug
Full Changelog: v1.17.5...v1.17.6
This project publishes no release notes. Between v1.17.5 and v1.17.6 there were 5 commits, 4 of them substantive:
fix(format): use RFC1123 hostname validator for legacy drafts
Full Changelog: v1.17.4...v1.17.5
This project publishes no release notes. Between v1.17.4 and v1.17.5 there were 7 commits, 6 of them substantive:
Don't short circuit in dependencies keyword
Full Changelog: v1.17.3...v1.17.4
This project publishes no release notes. Between v1.17.3 and v1.17.4 there were 7 commits, 6 of them substantive:
Remove Reference type from Callbacks definition
allowEmptyValue is valid only for query parameters.Full Changelog: v1.17.2...v1.17.3
This project publishes no release notes. Between v1.17.2 and v1.17.3 there were 8 commits, 6 of them substantive:
allowEmptyValue is valid only for query parameters.Type fix Full Changelog : v1.17.1...v1.17.2
Full Changelog: v1.17.1...v1.17.2
This project publishes no release notes. Between v1.17.1 and v1.17.2 there were 2 commits, 1 of them substantive:
This project publishes no release notes. Between v1.17.0 and v1.17.1 there were 3 commits, 2 of them substantive:
This project publishes no release notes. Between v1.17.0 and v1.17.1 there were 3 commits, 2 of them substantive:
This project publishes no release notes. Between v1.16.5 and v1.17.0 there were 16 commits, 15 of them substantive:
This project publishes no release notes. Between v1.16.5 and v1.17.0 there were 16 commits, 15 of them substantive:
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.