Comparison with Alternative Libraries
This document provides a brief comparison between @apical-ts/craft and other
popular TypeScript OpenAPI client generators.
@apical-ts/craft
- ✅ Exact typings with Zod v4
- ✅ Discriminated unions for response payloads based on status codes
- ✅ Typed error handling / no unknown exceptions
- ✅ Default response handling
- ✅ Modular, tree-shakable output
- ✅ Multiple success (2xx) responses handling
- ✅ Multiple content types response handling
- ✅ Server-side validation support
- 🟡 Integration with popular frameworks (express, react-query, msw via sample adapters)
- ✅ Wildcard status code handling (e.g., 5xx)
- ✅ Recursive schema support
- ✅ Maintenance and active development
- ❌ Strong Community support
@heyapi/openapi-ts
- ✅ Exact typings with Zod v4
- ❌ Discriminated unions for response payloads based on status codes
- ❌ Typed error handling / no unknown exceptions
- ❌ Default response handling
- ❌ Modular, tree-shakable output
- 🟡 Multiple success (2xx) responses handling (simple union)
- ❌ Multiple content types response handling
- 🟡 Server-side validation support (via fastify plugin)
- ✅ Integration with popular frameworks via adapters (react-query and others)
- ❌ Wildcard status code handling (e.g., 5xx)
- ❌ Recursive schema support
- ✅ Maintenance and active development
- ✅ Strong Community support
Massimo
- ❌ Exact typings with Zod v4 (uses ajv for validation and generated TypeScript types)
- ✅ Discriminated unions for response payloads based on status codes
- ❌ Typed error handling / no unknown exceptions
- ❌ Default response handling (breaks typings and client generation)
- ✅ Modular, tree-shakable output (client is generated dynamically based on OpenAPI spec)
- ✅ Multiple success (2xx) responses handling
- ❌ Multiple content types response handling
- ✅ Server-side validation support (via ajv)
- ❌ Integration with popular frameworks via adapters
- ✅ Wildcard status code handling (e.g., 5xx)
- ❌ Recursive schema support
- ✅ Maintenance and active development
- 🟡 Strong Community support
Orval
- ❌ Exact typings with Zod v4 (loose schemas with zod v3)
- ❌ Discriminated unions for response payloads based on status codes (simple unions)
- ❌ Typed error handling / no unknown exceptions
- ✅ Default response handling
- ✅ Modular, tree-shakable output
- 🟡 Multiple success (2xx) responses handling (breaks handling multiple content types)
- 🟡 Multiple content types response handling (breaks handling multiple success responses)
- ✅ Server-side validation support (via hono plugin)
- ✅ Integration with popular frameworks via adapters
- ✅ Wildcard status code handling (e.g., 5xx)
- ❌ Recursive schema support
- ✅ Maintenance and active development
- ✅ Strong Community support
openapi-zod-client
- ❌ Exact typings with Zod v4 (loose schemas with zod v3)
- ❌ Discriminated unions for response payloads based on status codes
- ❌ Typed error handling / no unknown exceptions
- ❌ Default response handling
- ❌ Modular, tree-shakable output
- ❌ Multiple success (2xx) responses handling
- ❌ Multiple content types response handling
- ❌ Server-side validation support
- ❌ Integration with popular frameworks via adapters
- ❌ Wildcard status code handling (e.g., 5xx)
- ❌ Recursive schema support
- ❌ Maintenance and active development
- ❌ Strong Community support