Comparison of the errors thrown by libraries, including stack trace length.
Copy to clipboardimport { personSchema } from "./schemas"; import * as v from "valibot"; try { v.parse(personSchema, data); } catch (e) { console.error(e); }
Where error.stack is available, we measure how many frames it takes to reach the line of user code (as opposed to library code).
ValiError: Invalid length: Expected >=1 but received 0
at Module.parse (file:///node_modules/.pnpm/valibot@1.2.0_typescript@6.0.0-beta/node_modules/valibot/dist/index.mjs:6748:28)
at Object.throw (file:///schemas/dist/benchmarks-D-_Y96Ph.js:93:6)
at file:///bench/src/scripts/stack/log.ts:24:28| Library | Version | Downloads (/wk) | Frame # | Line count | ||||
|---|---|---|---|---|---|---|---|---|
zod/v3 | Code snippet | Error output | 4.4.3 | 221.77M | 3 | 299 | ||
valibot | Code snippet | Error output | 1.4.2 | 14.05M | 2 | 218 | ||
zod | Code snippet | Error output | 4.4.3 | 221.77M | 171 | |||
zod/mini | Code snippet | Error output | 4.4.3 | 221.77M | 171 | |||
decoders | Code snippet | Error output | 2.9.3 | 50.34K | 3 | 98 | ||
@sapphire/shapeshift | Code snippet | Error output | 4.0.0 | 834.75K | 5 | 90 | ||
effect | Code snippet(Commented code is not benchmarked) | Error output | 3.21.4 | 18.78M | 5 | 78 | ||
yup | Code snippet | Error output | 1.7.1 | 10.05M | 49 | |||
runtypes | Code snippet | Error output | 7.0.4 | 237.68K | 2 | 37 | ||
sury | Code snippet(Commented code is not benchmarked) | Error output | 11.0.0-alpha.9 | 217K | 3 | 36 | ||
superstruct | Code snippet | Error output | 2.0.2 | 5.29M | 3 | 29 | ||
typebox | Code snippet | Error output | 1.3.3 | 4M | 2 | 28 | ||
arktype | Code snippet | Error output | 2.2.2 | 1.16M | 8 | 26 | ||
joi | Code snippet | Error output | 18.2.3 | 17.59M | 24 | |||
effect@beta | Code snippet | Error output | 4.0.0-beta.93 | 18.78M | 22 | |||
ajv | Code snippet(Commented code is not benchmarked) | Error output | 8.20.0 | 272.01M | 16 | |||
typia | Code snippet(Commented code is not benchmarked) | Error output | 12.1.1 | 316.54K | 5 | 15 |