You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This release has 15 breaking changes. Please review the release notes carefully before upgrading.
Updates
cli: print file count and generator speed (#3828)
⚠️ Breaking: client: resolve runtimeConfigPath relative to the output folder (#3770)
Changed runtimeConfigPath behavior
This was a known, long-standing issue confusing first-time users. Before, defining client runtimeConfigPath value would paste it verbatim to the generated output. This release changes the behavior to resolve relative to the current working directory the same way output path works.
config: remove --apply flag from Biome post-processor commands (#3812)
⚠️ Breaking: pass previous result to error interceptors (#3814)
⚠️ Breaking:request and response objects might be undefined (#3814)
⚠️ Breaking: respect throwOnError when request validation fails (#3814)
⚠️ Breaking: respect ky instance defaults (#3806)
Changed Ky client behavior
The Ky client was updated to be more intuitive. Some Ky options now need to be passed via the kyOptions field and you need to pass undefined to unset an option.
Valibot plugin no longer exports composite request Data schemas. Instead, each layer is exported as a separate schema. If you're using validators with SDKs, you can preserve the composite schema with shouldExtract:
exportdefault{input: "hey-api/backend",// sign up at app.heyapi.devoutput: "src/client",plugins: [// ...other plugins{name: "sdk",validator: "valibot",},{name: "valibot",requests: {shouldExtract: true,},},],};
Zod plugin no longer exports composite request Data schemas. Instead, each layer is exported as a separate schema. If you're using validators with SDKs, you can preserve the composite schema with shouldExtract:
exportdefault{input: "hey-api/backend",// sign up at app.heyapi.devoutput: "src/client",plugins: [// ...other plugins{name: "sdk",validator: "zod",},{name: "zod",requests: {shouldExtract: true,},},],};
BREAKING:symbol: replace exportFrom array with getExportFromFilePath() function (#3312) (cd44523) by @mrlubos
Updated Symbol interface
The exportFrom 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.
BREAKING: Drop CommonJS (CJS) support. This package is now ESM-only. (#3251) (7f19d59) by @mrlubos
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.
CommonJS entry points (require(), module.exports) are no longer supported. If you are in a CJS environment, you can still load the package dynamically using import() like:
renovateBot
changed the title
chore(deps): update dependency @hey-api/openapi-ts to ^0.92.0
chore(deps): update dependency @hey-api/openapi-ts to ^0.93.0
Feb 24, 2026
renovateBot
changed the title
chore(deps): update dependency @hey-api/openapi-ts to ^0.93.0
chore(deps): update dependency @hey-api/openapi-ts to ^0.94.0
Mar 5, 2026
renovateBot
changed the title
chore(deps): update dependency @hey-api/openapi-ts to ^0.94.0
chore(deps): update dependency @hey-api/openapi-ts to ^0.95.0
Apr 2, 2026
renovateBot
changed the title
chore(deps): update dependency @hey-api/openapi-ts to ^0.95.0
chore(deps): update dependency @hey-api/openapi-ts to ^0.96.0
Apr 13, 2026
This PR was assessed and cannot be safely merged. The legacy/fetch plugin is fully removed in v0.96, causing pnpm spec:generate to crash. This is a substantial migration (new client architecture, regenerated api structure, updated compat layer) - not a simple bump. I am going to create a clean separate PR that will include the proper migration steps and link it up here. This will auto-close once that PR is merged.
renovateBot
changed the title
chore(deps): update dependency @hey-api/openapi-ts to ^0.96.0
chore(deps): update dependency @hey-api/openapi-ts to ^0.97.0
Apr 28, 2026
Because you closed this PR without merging, Renovate will ignore this update (^0.97.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^0.71.1→^0.97.0Release Notes
hey-api/openapi-ts (@hey-api/openapi-ts)
v0.97.0@hey-api/openapi-ts 0.97.0
This release has 15 breaking changes. Please review the release notes carefully before upgrading.
Updates
runtimeConfigPathrelative to the output folder (#3770)Changed
runtimeConfigPathbehaviorThis was a known, long-standing issue confusing first-time users. Before, defining client
runtimeConfigPathvalue would paste it verbatim to the generated output. This release changes the behavior to resolve relative to the current working directory the same way output path works.--applyflag from Biome post-processor commands (#3812)Plugins
@hey-api/client-angular
requestandresponseobjects might be undefined (#3814)throwOnErrorwhen request validation fails (#3814)@hey-api/client-fetch
requestandresponseobjects might be undefined (#3814)throwOnErrorwhen request validation fails (#3814)@hey-api/client-ky
requestandresponseobjects might be undefined (#3814)throwOnErrorwhen request validation fails (#3814)Changed Ky client behavior
The Ky client was updated to be more intuitive. Some Ky options now need to be passed via the
kyOptionsfield and you need to passundefinedto unset an option.@hey-api/client-next
requestandresponseobjects might be undefined (#3814)throwOnErrorwhen request validation fails (#3814)@hey-api/client-ofetch
requestandresponseobjects might be undefined (#3814)throwOnErrorwhen request validation fails (#3814)@tanstack/angular-query-experimental
setQueryDataoption (#3824)@tanstack/preact-query
useSetQueryDataoption (#3824)setQueryDataoption (#3824)@tanstack/react-query
useSetQueryDataoption (#3824)setQueryDataoption (#3824)@tanstack/solid-query
setQueryDataoption (#3824)@tanstack/svelte-query
setQueryDataoption (#3824)@tanstack/vue-query
setQueryDataoption (#3824)zod
.discriminatedUnionto.unionif members contain intersection (#3813)@hey-api/codegen-core 0.8.1
Updates
@hey-api/shared 0.4.2
Updates
v0.96.1@hey-api/openapi-ts 0.96.1
Updates
Plugins
@hey-api/client-angular
headerstoHeadersinResolvedRequestOptions(#3757)@hey-api/client-fetch
headerstoHeadersinResolvedRequestOptions(#3757)@hey-api/client-ky
headerstoHeadersinResolvedRequestOptions(#3757)@hey-api/client-next
headerstoHeadersinResolvedRequestOptions(#3757)@hey-api/client-ofetch
headerstoHeadersinResolvedRequestOptions(#3757)valibot
.variant()(#3780)zod
.discriminatedUnion()(#3780)z.inputandz.outputtypes (#3759)@hey-api/json-schema-ref-parser 1.4.1
Updates
@hey-api/shared 0.4.1
Updates
@hey-api/vite-plugin 0.3.1
Updates
viteoptions (#3776)v0.96.0@hey-api/openapi-ts 0.96.0
This release has 1 breaking change. Please review the release notes carefully before upgrading.
Updates
Plugins
@angular/common
@hey-api/client-angular
@hey-api/client-axios
@hey-api/client-fetch
@hey-api/client-ky
@hey-api/client-next
@hey-api/client-nuxt
@hey-api/client-ofetch
@hey-api/transformers
@hey-api/codegen-core 0.8.0
This release has 1 breaking change. Please review the release notes carefully before upgrading.
Updates
@hey-api/json-schema-ref-parser 1.4.0
This release has 1 breaking change. Please review the release notes carefully before upgrading.
Updates
@hey-api/shared 0.4.0
This release has 1 breaking change. Please review the release notes carefully before upgrading.
Updates
@hey-api/spec-types 0.2.0
This release has 2 breaking changes. Please review the release notes carefully before upgrading.
Updates
OpenAPIExtensionstoSpecExtensions(#3715)WithSpecExtensionstype (#3734)@hey-api/vite-plugin 0.3.0
This release has 1 breaking change. Please review the release notes carefully before upgrading.
Updates
v0.95.0Minor Changes
96f60ad) by @mrlubosValidator request schemas
Valibot plugin no longer exports composite request
Dataschemas. Instead, each layer is exported as a separate schema. If you're using validators with SDKs, you can preserve the composite schema withshouldExtract:plugin.getSymbol()function (#3671) (96f60ad) by @mrlubosRemoved
plugin.getSymbol()functionThis function has been removed. You can use
plugin.querySymbol()instead. It accepts the same arguments and returns the same result.96f60ad) by @mrlubosValidator request schemas
Zod plugin no longer exports composite request
Dataschemas. Instead, each layer is exported as a separate schema. If you're using validators with SDKs, you can preserve the composite schema withshouldExtract:Patch Changes
plugin(@hey-api/client-axios): fix: improve
beforeRequesttyping (#3660) (f3f887e) by @tomvdvplugin(zod): export request body, path, query, and headers schemas (#3671) (
96f60ad) by @mrlubosplugin(@hey-api/client-ky): fix: improve
beforeRequesttyping (#3660) (d65b5c7) by @tomvdvplugin(@hey-api/client-next): fix: improve
beforeRequesttyping (#3660) (a4b13d4) by @tomvdvplugin(@hey-api/client-angular): fix: improve
beforeRequesttyping (#3660) (9ecc562) by @tomvdvplugin(orpc): fix: adjust input shape (#3671) (
96f60ad) by @mrlubosplugin(@hey-api/client-fetch): fix: improve
beforeRequesttyping (#3660) (11be579) by @tomvdvplugin(valibot): export request body, path, query, and headers schemas (#3671) (
96f60ad) by @mrlubosplugin(@hey-api/sdk): improve types for SSE events (#3466) (
51ff11a) by @bilby91Updated Dependencies:
v0.94.4Compare Source
Patch Changes
8e1e62d) by @hyobanv0.94.3Compare Source
Patch Changes
output: pass context as second argument in
module.resolve()function (#3615) (b6a65d6) by @mrlubosplugin(@hey-api/client-nuxt): preserve AbortSignal, FormData, and ReadableStream in unwrapRefs (#3614) (
129afa0) by @copilot-swe-agentparser: fix: self-referencing discriminator (#3601) (
857eb19) by @pgraugoutput: add
moduleoption (#3616) (e4eea23) by @mrlubosplugin(@hey-api/transformers): expose
pluginand$in transformer function context (#3610) (18ccc81) by @mrlubosUpdated Dependencies:
v0.94.2Compare Source
Patch Changes
internal: export Plugins namespace (#3586) (
12827e3) by @mrlubosplugin(nestjs): initial release (#3573) (
e596edb) by @mikhininternal: expand TypeScript peer dependency range (#3588) (
ae5ecc9) by @mrlubosoutput: pass default value to
headerfunction (#3585) (c076e4d) by @mrlubosUpdated Dependencies:
v0.94.1Compare Source
Patch Changes
plugin(@hey-api/typescript): add Resolvers API (#3531) (
0e47fcb) by @mrlubosdsl: expand list of JavaScript globals (#3508) (
1e00a69) by @mrlubosplugin(valibot): provide more resolvers (#3547) (
854ee1c) by @mrluboscli: show environment value in development (#3546) (
571bc8a) by @mrlubosplugin(zod): handle
guidstring format (#3552) (7acb228) by @erikwskiplugin(@hey-api/typescript): implement
getName()symbol hook (#3556) (68c750a) by @mrlubosplugin(zod): implement
getName()symbol hook (#3556) (68c750a) by @mrlubosconfig(plugins): show warning when plugin infer fails (#3540) (
0512650) by @mrlubosplugin(valibot): implement
getName()symbol hook (#3556) (68c750a) by @mrlubosplugin(@hey-api/transformers): fix: support
anyOfschema with null (#3504) (4b6b398) by @copilot-swe-agentplugin(zod): provide more resolvers (#3554) (
bfa255c) by @mrlubosUpdated Dependencies:
v0.94.0Compare Source
Minor Changes
buildUrl()function includesbaseUrlfrom config by default (#3491) (c0cbffb) by @copilot-swe-agentPatch Changes
dsl(reserved): expand reserved keywords with more globals (#3487) (
89a9151) by @mrlubosparser: fix: explicit discriminator mapping wins over fallback in nested
allOf(#3490) (a67d589) by @pgraugplugin(@pinia/colada): fix: pass error type generic to
defineQueryOptions(#3483) (8e5a578) by @lukaspodmelleplugin(@tanstack/react-query): support generating
useMutationhooks (#3432) (12d7660) by @nmokkenstormplugin(typescript): fix: reference enum object when creating enum types (#3500) (
127e67b) by @mrlubosoutput(header): fix: support function signature in client and core files (#3486) (
942913a) by @mrlubosoutput: fix: avoid double sanitizing leading character (#3448) (
c50f7bc) by @mrlubosinternal: fix: simplify dev mode check (#3498) (
ea2538b) by @mrlubosplugin(zod): support function in
metadataoption (#3497) (1ed39bc) by @copilot-swe-agentplugin(valibot): support function in
metadataoption (#3497) (202cc05) by @copilot-swe-agentinternal: log symbol meta if name is falsy (#3448) (
c50f7bc) by @mrlubosclient: fix: change serializer types from
anytounknown(#3471) (ad11be2) by @copilot-swe-agentplugin(@tanstack/preact-query): initial release (#3499) (
873839e) by @mrlubosUpdated Dependencies:
v0.93.1Compare Source
Patch Changes
plugin(@tanstack/query): fix: skip mutation queries for SSE endpoints (#3470) (
3ca4f31) by @copilot-swe-agentclient: fix: avoid removing empty arrays from flat arguments (#3451) (
1518fda) by @copilot-swe-agentplugin(zod): fix: apply nullable modifier to
additionalPropertiesschema (#3452) (2e903af) by @copilot-swe-agentcli: fix: do not set
logs.filetotrueby default (#3469) (9e3d347) by @copilot-swe-agentplugin(@hey-api/sdk): fix: correctly set required flat parameters (#3458) (
bf50a55) by @copilot-swe-agentplugin(zod): add
uflag on regex patterns with unicode property escapes (#3468) (67ad86a) by @copilot-swe-agentplugin(valibot): add
uflag on regex patterns with unicode property escapes (#3468) (003d914) by @copilot-swe-agentplugin(@hey-api/typescript): simplify union types if a member is
unknown(#3454) (96d87df) by @copilot-swe-agentclient(@hey-api/nuxt): fix: do not unwrap blob values (#3459) (
b7233d1) by @LeiCraftclient: support async
createClientConfig(#3445) (cd33d86) by @copilot-swe-agentv0.93.0Compare Source
Minor Changes
enum.nodes.nullableresolver node (#3396) (ea6f386) by @mrlubosRemoved resolver node
Valibot plugin no longer exposes the
enum.nodes.nullablenode. It was refactored so that nullable values are handled outside of resolvers.enum.nodes.nullableresolver node (#3398) (737730c) by @mrlubosRemoved resolver node
Zod plugin no longer exposes the
enum.nodes.nullablenode. It was refactored so that nullable values are handled outside of resolvers.Patch Changes
parser: prefer unprefixed schema names from external files (#3417) (
f3a264b) by @copilot-swe-agentparser(patch): support callback for
patch.schemas(#3415) (e494f4d) by @copilot-swe-agentoutput: fix: apply
output.headerto bundled files (#3438) (bcd0a87) by @copilot-swe-agentparser: handle OpenAPI 3.1
contentMediaTypekeyword as binary format when file-like (#3431) (d6a8538) by @copilot-swe-agentinput: fix: improve returned status code when spec fetch fails (#3427) (
37dd92c) by @copilot-swe-agentclient: expose
onRequestin RequestOptions for SSE request interception (#3392) (8fc4681) by @copilot-swe-agentparser: add
patch.inputand shorthandpatch()option for full specification transformations (#3411) (ba9f893) by @copilot-swe-agentparser: fix: preserve
unevaluatedPropertieskeyword in transforms (#3435) (f659b38) by @copilot-swe-agentplugin(zod): use
.nullable()and.nullish()methods (#3398) (737730c) by @mrlubosparser: fix: resolve sibling schemas from external files during bundling (#3422) (
19fd80a) by @j-westoverparser(transforms): add
schemaNametransform (#3416) (4b9d032) by @copilot-swe-agentplugin(valibot): use
.nullable()and.nullish()methods (#3396) (ea6f386) by @mrlubosinput: fix: avoid prefixing sources if paths do not collide on operations (#3436) (
b1a419a) by @copilot-swe-agentparser(patch): support callback for
patch.operations(#3420) (e1cd970) by @copilot-swe-agentparser: add support for non-string discriminator property types (#3385) (
dd0be9c) by @SipanPUpdated Dependencies:
v0.92.4Compare Source
Patch Changes
plugin(@hey-api/transformers): fix: false positive warning for discriminated
oneOfschemas (#3379) (1f7c262) by @copilot-swe-agentplugin(@hey-api/client-nuxt): fix: forward
asyncDataOptionstouseFetchanduseLazyFetch(#3382) (a4b7399) by @rigtigeEmiloutput: detect
importFileExtensionfrom tsconfigmoduleoption (#3380) (4cbc307) by @copilot-swe-agentplugin(@hey-api/typescript): fix: deduplicate enum keys to avoid name collision (#3376) (
54138b6) by @spikesagalplugin(@hey-api/client-nuxt): unwrap
ComputedRefbody before initial serialization (#3361) (ca52649) by @rigtigeEmilplugin(@angular/common): use generics for HttpRequests (#3384) (
a94f50f) by @quartepieplugin(@hey-api/transformers): fix: handle
$refkeywords inallOfcompositions (#3374) (4b781aa) by @copilot-swe-agentinternal: use shared schema processor (#3370) (
27cd91f) by @mrlubosUpdated Dependencies:
v0.92.3Compare Source
Patch Changes
e54db3e) by @mrlubosv0.92.2Minor Changes
exportFromarray withgetExportFromFilePath()function (#3312) (cd44523) by @mrlubosUpdated Symbol interface
The
exportFromproperty has been replaced with thegetExportFromFilePath()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.Patch Changes
config: rename
exportFromIndexoption toincludeInEntry(#3312) (cd44523) by @mrlubosconfig:
includeInEntryaccepts function in addition to primitive value (#3312) (cd44523) by @mrlubosparser: add
getExportFromFilePath()hook (#3312) (cd44523) by @mrlubosplugin: add
commentsoption to all plugins (#3317) (7b3c8f2) by @mrlubostypes: improve
defineConfig()types (#3312) (cd44523) by @mrlubosconfig: rename
output.indexFiletooutput.entryFile(#3312) (cd44523) by @mrlubosfix: improve dev mode detection causing builds to fail (#3300) (
be2f3fb) by @copilot-swe-agentUpdated Dependencies:
v0.91.1Compare Source
Patch Changes
Updated Dependencies:
v0.91.0Compare Source
Minor Changes
7f19d59) by @mrlubosRemoved CommonJS (CJS) support
@hey-api/openapi-tsis now ESM-only. This change simplifies the codebase, improves tree-shaking, and enables better integration with modern bundlers and TypeScript tooling.CommonJS entry points (
require(),module.exports) are no longer supported. If you are in a CJS environment, you can still load the package dynamically usingimport()like:If you have previously written:
Migrate by updating your static imports:
If your environment cannot use ESM, pin to a previous version.
Patch Changes
Updated Dependencies:
v0.90.10Compare Source
Patch Changes
plugin(@tanstack/solid-query): index mutation options symbol (#3253) (
c5f379e) by @mrlubosplugin(@tanstack/svelte-query): index mutation options symbol (#3253) (
c5f379e) by @mrlubosplugin(@tanstack/vue-query): index mutation options symbol (#3253) (
c5f379e) by @mrlubosplugin(@tanstack/react-query): index mutation options symbol (#3253) (
c5f379e) by @mrlubosparser: inline deep path
$refreferences (#3242) (00cfaed) by @chrg1001plugin(@tanstack/angular-query-experimental): index mutation options symbol (#3249) (
5977f56) by @j-ibarraplugin(@hey-api/sdk): correctly map body keys in flat mode (#3255) (
9ca5471) by @jsjames[
v0.90.9](https://redirect.github.com/hey-api/opeConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.