ADR
Valibot
バリデーションライブラリとしてValibotを採用した理由。
決定
Valibot を採用する。
Zodとの比較
バリデーションライブラリの主要な選択肢はZodとValibotである。
| 観点 | Zod | Valibot |
|---|---|---|
| npm週間DL数 | 約5,920万 | 約330万 |
| GitHubスター | 約42,200 | 約8,500 |
| バンドルサイズ (min+gzip) | 約58 KB(全体が含まれる) | 1 KB未満(使用分のみ) |
| Tree-shaking | 非対応 | 完全対応 |
| TypeScript型推論 | 同等 | 同等 |
| エコシステム (tRPC, RHF等) | 対応 | 対応 |
コミュニティの大きさではZodが圧倒的だが、バンドルサイズではValibotが98%小さい。
Valibotを選んだ理由
バンドルサイズが小さい
Valibotは関数合成方式を採用しており、使用した関数のみがバンドルに含まれる。Zodはメソッドチェーン方式のため、Tree-shakingが効かずライブラリ全体(約58 KB)がバンドルされる。バリデーションはクライアントサイド(フォーム)でも使用するため、バンドルサイズの差が直接パフォーマンスに影響する。
エコシステムが十分に揃っている
tRPC、React Hook Form、Hono等、採用している技術スタックとの統合はすべてサポートされている。コミュニティ規模ではZodに劣るが、実用上の不足はない。