Skip to content

feat(oas): v30 release#1053

Merged
darrenyong merged 2 commits intomainfrom
oas-v30
Feb 18, 2026
Merged

feat(oas): v30 release#1053
darrenyong merged 2 commits intomainfrom
oas-v30

Conversation

@erunion
Copy link
Member

@erunion erunion commented Feb 13, 2026

🐳 Context

Because we are experience some pretty serious performance issues with large API definitions post-dereferencing we are adding general support for handling $ref pointers into oas, without requiring the need for a full dereference.

Important

This is a major breaking change to oas. Because oas has long assumed that the OpenAPI definition it contained was dereferenced this is a huge shift in departure so I expect there to be issues, and as such will be releasing this in v30 RCs until it's stable.

📚 Accompanied work

🧠 Breaking changes

  • Enforced TS strict mode everywhere. Some function return types have changed as a result of this but only to enforce what these methods were already returning.

oas

  • Improved support for $ref pointers on the following accessors:
    • .getAuth()
    • .getPaths()
    • .getWebhooks()

oas/operation

  • .dereference(). This is a new alternative to Oas.dereference() and allows you to dereference a single operation, rather than needing to dereference the entire API definition.
  • .getCallbacks() now always returns an array. Previously if the operation had no callbacks it would return false, however that existence check is better suited for Operation.hasCallbacks().

oas/types

  • isOAS30 has been removed, please use isOpenAPI30 instead.
  • isOAS31 has been removed, please use isOpenAPI31 instead.

oas/utils

  • findSchemaDefinition is no longer exported. If you need to dereference a $ref pointer we suggest you either invoke Oas.dereference() to dereference your entire API definition, use the new Operation.dereference() feature in this release for dereferencing a single API operation, or use a library like @apidevtools/json-schema-ref-parser for dereferencing.

🧬 QA & Testing

I've written a good amount of new tests for these changes but the real Q&A will have to be done within our internal repository, and I expect this work as-is to contain issues so I'll be tagging RC's until it's fully ready for the general public.

## 🧰 Changes

As we're building a new major v30 release of `oas` this removes some
long deprecated exports from `oas/types`:

* [x] `isOAS30` has been removed, please use `isOpenAPI30` instead.
* [x] `isOAS31` has been removed, please use `isOpenAPI31` instead.
@erunion erunion added bug Something isn't working enhancement New feature or request performance Issues with performance refactor Issues about tackling technical debt labels Feb 13, 2026
@erunion erunion changed the title feat(oas): removing deprecated exports (#1052) feat(oas): v30 Feb 13, 2026
@erunion erunion changed the title feat(oas): v30 v30 Feb 13, 2026
@erunion erunion changed the title v30 feat(oas): v30 release Feb 13, 2026
## 🧰 Changes

In preparation of a major breaking release to support `$ref` support
within `oas` this enables Typescript `strict` mode to handle cases where
we might have a `ReferenceObject` where we were previously expecting a
dereferenced object.

* [x] Enforced TS strict mode everywhere. Some function return types
have changed as a result of this but only to enforce what these methods
were already returning.
* [x] Improved the documentation on (most) every library method, with
links to the OpenAPI specification when appropriate.

I've also made one other unrelated change to `Operation.getCallbacks()`
so that it now always returns an array containing callbacks (or not).
Previously if the operation had no callbacks it would return false,
however that existence check is better suited for
`Operation.hasCallbacks()`.

---------

Co-authored-by: Darren Yong <contact.darrenyong@gmail.com>
Co-authored-by: Maximilian Falco Widjaya <maximilianfalco@gmail.com>
Co-authored-by: Darren Yong <41130056+darrenyong@users.noreply.github.com>
@darrenyong darrenyong marked this pull request as ready for review February 18, 2026 00:08
@darrenyong darrenyong merged commit ec3099c into main Feb 18, 2026
9 checks passed
@darrenyong darrenyong deleted the oas-v30 branch February 18, 2026 00:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request performance Issues with performance refactor Issues about tackling technical debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments