Skip to content

release: v12.0.0 major release (approx. Q3 2026)#16391

Draft
kamilmysliwiec wants to merge 187 commits into
masterfrom
v12.0.0
Draft

release: v12.0.0 major release (approx. Q3 2026)#16391
kamilmysliwiec wants to merge 187 commits into
masterfrom
v12.0.0

Conversation

@kamilmysliwiec
Copy link
Copy Markdown
Member

@kamilmysliwiec kamilmysliwiec commented Feb 19, 2026

PR Checklist

Please check if your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Other... Please describe: v12.0.0 release

Description

Approximate release window: early Q3 2026

Overview

  1. ESM migration

  2. CLI (ESM/CJS)

    • The NestJS CLI will prompt users to choose whether to generate a CJS or ESM project (ESM projects will use vitest + oxlint by default)
    • Webpack -> Rspack ✅ (webpack is now deprecated)
  3. Testing stack changes

  4. Linter

  5. Website redesign

    • A complete redesign of the NestJS websites is coming soon - we're taking them to the next level.
  6. Minor breaking changes

    • There will be a few minor breaking changes across other NestJS packages, but nothing significant.
  7. Schema support in route decorators

    • All route decorators (e.g., @Body, @Query, etc.) will support a new schema option that accepts a Standard Schema–compatible object. https://standardschema.dev/)
    • This enables the use of modern validation libraries such as Zod, Valibot, ArkType, and others, as an alternative to class-validator.
    • The same capability will also be available in the serializer interceptor.

PRs:

Packages will soon (possibly in Q2) be released under the next tag to let everyone play with them before they make it to the official latest tag.

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

glebbash and others added 30 commits March 4, 2025 12:52
feat: standard schema validation pipe, and standard serializer, introduce internal export subpath
sample: migrate all samples to esm and vitest
refactor: migrate from mocha, chai, sinon to vitest
@pasha-vuiko
Copy link
Copy Markdown

pasha-vuiko commented Apr 7, 2026

what minimal Node.js version is planned to be supported in NestJS v12?

…lter

fix(websockets): send WsException errors to native WebSocket clients
@emran-niftyitsolution
Copy link
Copy Markdown

need bun and biome selection option from cli when creating new nestjs project.

@pradelgorithm
Copy link
Copy Markdown

What would be the support for TS 6+7 given the release?

https://devblogs.microsoft.com/typescript/announcing-typescript-7-0-beta/

@kamilmysliwiec
Copy link
Copy Markdown
Member Author

@pradelgorithm AFAIK both v6 and v7 already work with the current version of Nest

@SchroederSteffen
Copy link
Copy Markdown

AFAIK both v6 and v7 already work with the current version of Nest

Maybe, but @nestjs/cli defines a hard dependency to 5.9.3: https://github.com/nestjs/nest-cli/blob/cabbe0b0caa652b04bc172c26a31a3c40d6b1bd3/package.json#L56

It would be great if this could be widened in v11.
v12 in Q3 is still months away.

@kamilmysliwiec
Copy link
Copy Markdown
Member Author

@SchroederSteffen @nestjs/cli always loads the local typescript package (for building), if exists. Just install v6 in your project and the CLI should pick it up automatically

@SchroederSteffen
Copy link
Copy Markdown

@nestjs/cli always loads the local typescript package (for building), if exists. Just install v6 in your project and the CLI should pick it up automatically

Correct, but then we end up with two typescript installations which we would like to avoid.
It also means that we're technically violating the version requirements as stated by NestJS.

@kamilmysliwiec
Copy link
Copy Markdown
Member Author

Correct, but then we end up with two typescript installations which we would like to avoid.

  1. No need for ts in prod with Docker multi-stage builds
  2. Can always use "overrides" to override CLI's version if 2 installations worry you

It also means that we're technically violating the version requirements as stated by NestJS.

No version requirement violations, it's just a local ts copy in case someone doesn't install one in their projects. The core package (and others) doesn't really list TS as a requirement, nor specify any version that should be used.

@imorius
Copy link
Copy Markdown

imorius commented May 7, 2026

I think we should support other build tools besides SWC, such as Bun's built-in build or tsdown (based on Rolldown), for compatibility with Bun.

@gperdomor
Copy link
Copy Markdown
Contributor

Any plans for new alphas? The current ones create a project with v11

@kamilmysliwiec
Copy link
Copy Markdown
Member Author

@imorius AFAIK bun is already supported. you can also use OXC compiler (from vite) with no issues

@kamilmysliwiec
Copy link
Copy Markdown
Member Author

kamilmysliwiec commented May 14, 2026

For those who want to give v12 a shot, all packages have just been released under the next tag on NPM:

  • @nestjs/common: 12.0.0-alpha.4
  • @nestjs/core: 12.0.0-alpha.4
  • @nestjs/microservices: 12.0.0-alpha.4
  • @nestjs/platform-express: 12.0.0-alpha.4
  • @nestjs/platform-fastify: 12.0.0-alpha.4
  • @nestjs/platform-socket.io: 12.0.0-alpha.4
  • @nestjs/platform-ws: 12.0.0-alpha.4
  • @nestjs/testing: 12.0.0-alpha.4
  • @nestjs/websockets: 12.0.0-alpha.4
$ npm i {package_name}@next

if you want to start from scratch, you can also just use npx @nestjs/cli@next new (might need a local @nestjs/schematics@next version installed if you already have a globally installed binary - otherwise it may pick up the old version)

@Alchez Alchez mentioned this pull request May 14, 2026
12 tasks
feat(websockets): request-scoped gateways
@gabroberge
Copy link
Copy Markdown

First of all, thanks for the changes introduced in the upcoming NestJS 12 release. I’ve been testing the new standard schema validation setup and overall the direction looks really promising.

While testing with ArkType in the default setup, I noticed what seems to be a serialization issue when validation fails. The validation itself works correctly, but invalid payloads end up throwing a 500 instead of returning a proper 400 response.

It looks like the ArkType validation error object is propagated directly to the HTTP response layer, where JSON serialization fails (TypeError: e.toJSON is not a function).

I haven’t added any custom ArkType integration code on my side, this happens with the default setup.

Not sure if this is already known given the pre-release state, but I figured it was worth reporting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.