Skip to content
  • Auto
  • Light
  • Dark
FeedbackDashboard

Editions

Editions allow us to safely make updates and improvements to SDKs and the Stainless config that aren’t backwards-compatible, like changing default behavior or renaming a property. Every time we make a breaking change, we release a new version in the form of an “edition” which you can explicitly opt-in to when you’re ready.

There are two types of editions:

  • Top-level editions are for general and cross-language changes and have a date-based identifier (e.g., 2025-10-08)
  • Language-specific editions only impact a specific programming language and have an identifier that includes the language and date (e.g., typescript.2025-10-10) Each edition includes all of the improvements made up to and including the date in its identifier.

The editions we use for your projects are definied in your Stainless config. The top-level edition is specified in the top-level edition property, and language-specific editions are specified inside specific language targets:

# Top-level edition
edition: 2025-10-08
# ...
targets:
typescript:
# Language-specific edition
edition: typescript.2025-10-10
# ...

When no edition property is present, the oldest available edition will be used. This applies to both the top-level edition property and the edition properties inside language targets. Also note that the top-level edition doesn’t cascade down into language targets. If you have a top-level edition set but a language target doesn’t have an edition property, for example, that language will use the oldest edition, not the one set at the top-level.

The top-level and language-specific editions in your config don’t need to match, and language-specific editions also don’t have to match each other. This gives you the flexibility to incrementally adopt new editions one language at a time without introducting breaking changes across multiple targets at once. Note that we may release language-specific editions without a corresponding top-level edition, making it impossible to have the same top-level and language-specific versions.

Below are all available editions and what was changed.

The first top-level edition for our original base functionality. This will be the default edition used if the top-level edition property is not present.

The package_manager has been changed from yarn to pnpm. To revert to yarn, use this config:

targets:
typescript:
edition: typescript.2025-10-10
options:
package_manager: yarn

The first language-specific edition for TypeScript. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Node. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Python. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Go. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Java. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Kotlin. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Ruby. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for Terraform. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for CLI. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for PHP. This will be the default edition used if this language-specific edition property is not present.

The first language-specific edition for C#. This will be the default edition used if this language-specific edition property is not present.