-
-
Notifications
You must be signed in to change notification settings - Fork 35.3k
JSON Schema validation in Node.js core #62598
Description
What is the problem this feature will solve?
Hi all,
I wanted to open a discussion about whether JSON Schema validation could be a useful addition to Node.js core.
Current state
- Node.js currently has no built-in JSON Schema validation
node.config.json(experimental) uses hand-written type checking against a JSON Schema 2020-12 definition generated from C++ option metadatapackage.jsonparsing uses simdjson but has no schema validation, fields are extracted structurally- The only schema validation in the Node.js tree lives inside
deps/npm(Ajv)
Potential use cases
- Validate
node.config.jsonagainst its own schema properly - Future validation for
package.jsonfields (opt-in, non-breaking) - Expose as a built-in module (
node:jsonschema) so userland doesn't need to pull in external validators
Context
I've been working on a project in this area, ata-validator, a JSON Schema validator built on simdjson and RE2. It currently passes 96.9% of the official JSON Schema Test Suite (Draft 2020-12) and falls back to a pure JS engine when native bindings aren't available.
I'm not proposing to land it as-is, I'd love to hear from the group first:
- Is there interest in having JSON Schema validation available in core?
- What would be the most useful entry point? (config validation, public API, both?)
- Any concerns about the dependency story? (RE2/abseil weight, simdjson already in core)
Happy to share benchmarks or more details if this sounds worth exploring.
fyi @Qard
What is the feature you are proposing to solve the problem?
A built-in JSON Schema validator, potentially exposed as node:jsonschema, that could also be used internally for validating node.config.json and other configuration files.
This would provide Node.js users with a fast, native JSON Schema (Draft 2020-12) validation capability without needing external dependencies.
What alternatives have you considered?
-
Continuing with hand-written validation for each config format individually,
doesn't scale as more config formats are added -
Bundling an existing JS-based validator like Ajv into core, lacks native performance benefits
-
Leaving JSON Schema validation entirely to userland
Metadata
Metadata
Assignees
Labels
Type
Projects
Status