Migration Guide
While we try to avoid breaking changes, sometimes they’re unavoidable to offer you the latest features. This page lists changes that require updates to your code.v0.93.0
Removed Resolver Node
Valibot and Zod plugins no longer expose theenum.nodes.nullable node. Both plugins were refactored so that nullable values are handled outside of resolvers.
This change only affects advanced users who were directly using resolver nodes.
v0.92.0
Updated Symbol Interface
TheexportFrom property has been replaced with the getExportFromFilePath() function. This allows you to dynamically determine export paths based on symbol properties.
This is a low-level feature, so you’re most likely unaffected unless you’re building custom plugins.
v0.91.0
Removed CommonJS (CJS) Support
@hey-api/openapi-ts is now ESM-only. This change simplifies the codebase, improves tree-shaking, and enables better integration with modern bundlers and TypeScript tooling.
Use dynamic imports for CJS
If you are in a CJS environment, you can still load the package dynamically:
v0.90.0
Resolvers API
The Resolvers API has been simplified and expanded to provide more consistent behavior across plugins.This affects users of Valibot and Zod plugins who were using custom resolvers.
Structure API
The SDK plugin and Angular plugin now implement the Structure API, enabling more complex structures and fixing several known issues.Migration Example
ThemethodNameBuilder function no longer accepts the operation object as an argument directly. Read the SDK Output section to familiarize yourself with the Structure API.
If you’re unable to migrate your configuration to the new syntax, please open an issue.
v0.89.0
Prefer Named Exports
This release changes the default forindex.ts to prefer named exports. Named exports may lead to better IDE and bundler performance.
Removed symbol:setValue:* Events
These events have been removed in favor of node:set:* events.
This only affects custom plugin developers.
v0.88.0
Removed compiler and tsc Exports
This release removes the compiler utility functions. Instead, it introduces a new TypeScript DSL exposed under the $ symbol. All plugins now use this interface.
v0.87.0
Removed Legacy Clients
This release removes support for legacy clients and plugins. Please migrate to the new clients.Identify legacy client usage
Check if you’re using any of these legacy clients:
legacy/fetchlegacy/axioslegacy/angularlegacy/nodelegacy/xhr
v0.86.0
Removed Node 18 Support
This release bumps the minimum required Node version to 20.19.0.v0.85.0
Updated output Options
We made the output configuration more consistent by using null to represent disabled options.
Updated Pinia Colada Query Options
Pinia Colada query options now usedefineQueryOptions to improve reactivity support.
No params
No params
Constant params
Constant params
Reactive params
Reactive params
With properties
With properties
v0.81.0
Server-Sent Events (SSE)
This release adds support for server-sent events (SSE). Instead of treatingtext/event-stream content types as regular HTTP methods, we now generate SSE streams.
v0.73.0
Bundle @hey-api/client-* Plugins
All Hey API clients are now bundled by default. You can remove any installed client packages:
No additional dependencies are required to generate working client code.
v0.63.0
Client Plugins
Clients are now plugins generating their ownclient.gen.ts file.
Added client.gen.ts File
The internal client instance is now in client.gen.ts instead of sdk.gen.ts.
Common Migration Patterns
Updating imports after file renames
Updating imports after file renames
Many releases have renamed generated files. Use find-and-replace to update imports:
Configuration option moves
Configuration option moves
Configuration options often move to more logical locations:
Preserving old behavior
Preserving old behavior
Most breaking changes include a way to preserve the old behavior:
Need Help?
Open an Issue
Report migration problems or ask questions
View Changelog
See detailed changes for each version
We publish migration notes for every breaking release. You might not be impacted by a breaking change if you don’t use the affected features.