Title: Expose JSON Schema validation as a public API · Issue #62937 · nodejs/node · GitHub
Open Graph Title: Expose JSON Schema validation as a public API · Issue #62937 · nodejs/node
X Title: Expose JSON Schema validation as a public API · Issue #62937 · nodejs/node
Description: What is the problem this feature will solve? PR #62603 is vendoring ata-validator into Node.js core for node.config.json validation. During that review, @TheOneTheOnlyJJ and @H4ad both asked whether ata could be exposed to user code once...
Open Graph Description: What is the problem this feature will solve? PR #62603 is vendoring ata-validator into Node.js core for node.config.json validation. During that review, @TheOneTheOnlyJJ and @H4ad both asked whethe...
X Description: What is the problem this feature will solve? PR #62603 is vendoring ata-validator into Node.js core for node.config.json validation. During that review, @TheOneTheOnlyJJ and @H4ad both asked whethe...
Opengraph URL: https://github.com/nodejs/node/issues/62937
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Expose JSON Schema validation as a public API","articleBody":"### What is the problem this feature will solve?\n\nPR #62603 is vendoring `ata-validator` into Node.js core for `node.config.json` validation. During that review, @TheOneTheOnlyJJ and @h4ad both asked whether ata could be exposed to user code once it's vendored in.\n\nEvery project that needs JSON Schema validation today pulls in a third-party dependency. If Node is already shipping a validator internally, it feels odd not to let user code reach it.\n\nOpening this to check if the direction is something the project wants to pursue, and to collect thoughts on naming and scope before anyone writes a prototype PR.\n\n### What is the feature you are proposing to solve the problem?\n\nExpose ata as a built-in `node:` module, using the same runtime that #62603 is vendoring.\n\nThree names came up in discussion:\n\n- `node:schema`, focused on JSON Schema\n- `node:jsonschema`, more specific\n- `node:json`, wider, covering parse and validate together (ata already vendors simdjson)\n\nRough sketch:\n\n```js\nimport { Validator } from 'node:schema'\n\nconst v = new Validator({\n type: 'object',\n properties: { id: { type: 'integer' } },\n required: ['id'],\n})\n\nv.validate({ id: 1 }) // { valid: true, errors: [] }\n```\n\nWould probably land this behind an experimental flag first, the way `node:test` started. Happy to put together a prototype PR if the direction is one the project wants to pursue.\n\n### What alternatives have you considered?\n\n\n1. Keep the vendor scoped to `node.config.json` only (current #62603 plan). Downside: Node ships a validator user code can't reach.\n\n2. Schema-only module (`node:schema` / `node:jsonschema`). Narrow scope, leaves simdjson for another issue.\n\n3. Combined `node:json` module. Covers parse and validate together, bigger API surface.\n\n4. Third-party package that depends on Node internals. Ruled out, defeats the point of vendoring.\n\nNo strong preference between 2 and 3. Would rather hear from the Node collaborators and folks who already commented on #62603 before picking.\n","author":{"url":"https://github.com/mertcanaltin","@type":"Person","name":"mertcanaltin"},"datePublished":"2026-04-24T18:50:07.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/62937/node/issues/62937"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d9993a0e-7e92-88e9-0cf5-e3ec9ba7ab3f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CF06:3BF7C9:102A89F:15FAC5D:6A4D6882 |
| html-safe-nonce | d803477c45d5c0a43abe4377d439cbc66aa7ae44068114e64649bb8faf2f390e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRjA2OjNCRjdDOToxMDJBODlGOjE1RkFDNUQ6NkE0RDY4ODIiLCJ2aXNpdG9yX2lkIjoiNzUxOTk5NjUyMTY2OTgxNDQwMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 8cee021211f86fa97f51ff89c5bb508ce73e70b99c8ac6fcd8c0419ab16b71d3 |
| hovercard-subject-tag | issue:4324938832 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/nodejs/node/62937/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c3ef34fd4e01517d674902d6090c94c56e139fe0db2466d9d26a45f9b6058e61/nodejs/node/issues/62937 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c3ef34fd4e01517d674902d6090c94c56e139fe0db2466d9d26a45f9b6058e61/nodejs/node/issues/62937 |
| og:image:alt | What is the problem this feature will solve? PR #62603 is vendoring ata-validator into Node.js core for node.config.json validation. During that review, @TheOneTheOnlyJJ and @H4ad both asked whethe... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mertcanaltin |
| hostname | github.com |
| expected-hostname | github.com |
| None | 7db3950e3f59095e20a9789440c3dd554efc62d434882ead06ae05b5815605b9 |
| turbo-cache-control | no-preview |
| go-import | github.com/nodejs/node git https://github.com/nodejs/node.git |
| octolytics-dimension-user_id | 9950313 |
| octolytics-dimension-user_login | nodejs |
| octolytics-dimension-repository_id | 27193779 |
| octolytics-dimension-repository_nwo | nodejs/node |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27193779 |
| octolytics-dimension-repository_network_root_nwo | nodejs/node |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | cd8f6a71db61d6012a0cbb134be844fdbe9b8a45 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width