I wrote this (my own blog). I needed a schema lib for MCP tool inputs and kept seeing Zod vs Valibot vs ArkType takes with no numbers, so I timed the same schemas on Node 24 with tinybench and checked bundle size with esbuild.

Numbers and the MCP wiring are in the post. Short version: Valibot won the hot path for the shapes I use, ArkType was close, Zod 4 was fine but heavier. Bundle size mattered more than I expected once the schemas sat behind an MCP server.

Curious what people actually ship for tool schemas in production — Zod by default, or something lighter?

 

I wrote this one (my own blog). I tested node app.ts with no tsx or build step on Node 22.20, 24.22 and 26.13. Interfaces, generics, as casts and import type just work. Enums, namespaces, parameter properties, decorators, .tsx files and extensionless imports all fail, with the exact errors in the post, plus a tsconfig (erasableSyntaxOnly, verbatimModuleSyntax) that catches them before runtime. Note that --experimental-transform-types is gone in Node 26.

Happy to hear if anyone is running this in production and hit other edges.