Repository navigation
chore(deps): update nest monorepo to v12 - #775
renovate[bot] wants to merge 1 commit into
Conversation
3ffe224 to
bbcb6ca
Compare
bbcb6ca to
918d7de
Compare
| '@nestjs/common': ^12.0.0 | ||
| '@nestjs/core': ^12.0.0 |
There was a problem hiding this comment.
[important · correctness] Complete the companion-package migration to Nest 12
The resulting dependency graph violates the companion packages' declared compatibility: the lockfile retains @nestjs/swagger@11.2.5 (common/core peers ^11.0.1), @nestjs/schedule@6.1.1 and @nestjs/event-emitter@3.0.1 (peers only Nest 10/11), and @nestjs/jwt@11.0.2 (common only through Nest 11), while supplying Nest 12 to them. The SDK also still requires Swagger 11 in its published peers, so its newly advertised Nest 12 support cannot satisfy Swagger's peer contract. Complete the companion migration with releases explicitly supporting Nest 12 instead of leaving this unsupported combination in the lockfile.
Suggested fix
Upgrade Swagger to ^12.0.0, update the other companion packages to releases declaring Nest 12 support, adjust the SDK's companion peer ranges accordingly, and regenerate the lockfile. If those integrations cannot yet be migrated, retain Nest 11 until they can.
Prompt for a coding agent
In pnpm-workspace.yaml at lines 27-28, complete the Nest 12 dependency migration rather than upgrading only common/core: update @nestjs/swagger to ^12.0.0 and select releases of @nestjs/jwt, @nestjs/schedule, and @nestjs/event-emitter whose declared peers include Nest 12. Check the other Nest integrations for the same constraint and regenerate pnpm-lock.yaml. In packages/yucca-sdk/orchestration-api/package.json, update the swagger and schedule peer ranges to match the supported companion versions while retaining the intended Nest 11 compatibility where valid.
| '@nestjs/swagger': ^11.2.5 | ||
| '@nestjs/testing': ^11.1.11 | ||
| '@nestjs/websockets': ^11.1.14 | ||
| '@nestjs/testing': ^12.0.0 |
There was a problem hiding this comment.
[important · reliability] Align the Node pins with the schematics engine requirement
@nestjs/schematics@12.0.6 explicitly requires Node ^22.22.3 || ^24.15.0 || >=26.0.0; Node 25 is excluded. This repository pins Node 25.9.0 in mise and uses node:25 images for the application builds, so the upgraded generators are outside their supported runtime everywhere those pins are used. The upstream migration guide specifically distinguishes this higher schematics requirement from the framework's lower runtime requirement.
Suggested fix
Coordinate this bump with a move of the mise Node pin and Node Docker images to a supported line, or defer the schematics bump.
Prompt for a coding agent
For the @nestjs/schematics upgrade at pnpm-workspace.yaml line 36, reconcile its Node requirement with .mise/config.toml's node 25.9.0 pin and the node:25 Docker images under packages. Move the development and image runtimes to a supported Node line satisfying ^22.22.3 || ^24.15.0 || >=26.0.0, or defer the schematics upgrade until the runtime migration is ready.
| '@nestjs/swagger': ^11.2.5 | ||
| '@nestjs/testing': ^11.1.11 | ||
| '@nestjs/websockets': ^11.1.14 | ||
| '@nestjs/testing': ^12.0.0 |
There was a problem hiding this comment.
[important · correctness] Upgrade the compiler alongside the v12 schematics
The locked schematics release declares a required typescript: >=6.0.0 peer, but the shared catalog still specifies typescript: ^5.9.3, including in the orchestration API that directly depends on schematics. This leaves the tooling upgrade with an unsatisfied required compiler contract. Nest's v12 upgrade schematic explicitly upgrades TypeScript to v6 for this reason; the dependency bump needs that accompanying migration too.
Suggested fix
Upgrade the TypeScript catalog to a v6-compatible range, apply the necessary tsconfig migrations, and regenerate the lockfile.
Prompt for a coding agent
In pnpm-workspace.yaml, reconcile the @nestjs/schematics v12 change at line 36 with the typescript catalog entry at line 129. Upgrade the shared TypeScript catalog to a v6-compatible range, regenerate pnpm-lock.yaml, and apply any required tsconfig migrations across its consumers rather than continuing to supply TypeScript 5.9 to schematics.
This PR contains the following updates:
^11.0.14→^12.0.0^11.1.13→^12.0.0^11.0.0→^11.0.0 || ^12.0.0^11.1.11→^12.0.0^11.0.0→^11.0.0 || ^12.0.0^11.0.1→^12.0.0^11.1.14→^12.0.0^11.0.0→^11.0.0 || ^12.0.0^11.0.9→^12.0.0^11.1.11→^12.0.0^11.1.14→^12.0.0^11.0.0→^11.0.0 || ^12.0.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
nestjs/nest-cli (@nestjs/cli)
v12.0.8Compare Source
What's Changed
Full Changelog: nestjs/nest-cli@12.0.7...12.0.8
v12.0.7Compare Source
What's Changed
New Contributors
Full Changelog: nestjs/nest-cli@12.0.6...12.0.7
v12.0.6Compare Source
What's Changed
New Contributors
Full Changelog: nestjs/nest-cli@12.0.5...12.0.6
v12.0.5Compare Source
What's Changed
New Contributors
Full Changelog: nestjs/nest-cli@12.0.4...12.0.5
v12.0.4Compare Source
v12.0.3Compare Source
f194021)v12.0.2Compare Source
3a2773d)v12.0.1Compare Source
What's Changed
New Contributors
Full Changelog: nestjs/nest-cli@12.0.0...12.0.1
v12.0.0Compare Source
What's Changed
@nestjs/cliis now a native ES module, and the major version is aligned with the Nest 12 release line. Alongside the ESM move, the CLI no longer bundles webpack: every bundler-related package is an optional peer dependency now, so a default install is substantially smaller and you pull in only the builder you actually use. There are also two new commands —nest upgradeandnest deploy.ESM migration
The package is published as pure ESM (
"type": "module", compiled with NodeNext). All internal imports carry explicit.jsextensions and the build output is ESM-only.For the common case this is invisible —
nestis a binary, and it keeps running your CJS and ESM projects alike. It matters if you import the CLI's internals programmatically (custom builders, plugin harnesses, scripts that drive@nestjs/cli/lib/...): those imports now resolve to ESM.webpack is no longer a dependency
webpack,fork-ts-checker-webpack-plugin,tsconfig-paths-webpack-plugin, andwebpack-node-externalsmoved from dependencies to optional peer dependencies, joining@swc/cliand@swc/core.If you build with
tsc(the default) or with SWC, nothing changes. If you use--builder webpack(or"webpack": trueinnest-cli.json), install the bundler yourself:When a builder's peer dependency is missing, the CLI now reports the actual missing package name instead of surfacing the raw resolution error.
Rspack support
@rspack/coreis supported as an optional peer dependency (^1.7.7 || ^2.1.10) and is the builder thatnest newscaffolds intonest-cli.jsonfor new projects.--builder rspackonnest buildandnest start--rspackPath [path]to point at a custom Rspack config, mirroring--webpackPathNew:
nest upgradeA new command (aliased
nest update) that runs theupgradeschematic to migrate a Nest v11 project to v12 — dependency bumps,tsconfigandnest-cli.jsonmigrations, and codemods for@nestjs/config, GraphQL, and NATS. See the@nestjs/schematicsrelease notes for what the migration itself does.Options:
-d, --dry-run,-s, --skip-install,-t, --tag [tag](use a dist-tag such asnextinstead of the default version ranges),-c, --collection [name], and--observe/--no-observeto answer the@nestjs/observeprompt up front.New:
nest deployDeploy an application to the cloud, powered by Mau. Every option is forwarded verbatim to
mau deploy, so the command claims no flags of its own.Path confinement for build output
Build output and clean-up paths are now confined to the project directory by default. Symlinks are resolved before writing, so a
distthat is itself a symlink pointing outside the project no longer lets a write escape.Monorepo layouts that legitimately emit outside the project root can opt back out:
{ "compilerOptions": { "allowOutsidePaths": true } }Monorepo and asset handling
nest build --all --parallel [concurrency]builds monorepo projects concurrently, with an optional concurrency limit.compilerOptions.includeLibraryAssetspulls assets from libraries into an application build.rootDir.Compiler internals
globis gone. It is replaced by an internalfs-based helper built onminimatch, which is now a direct dependency. Symlink traversal depth matches the previous behaviour.fswatcher replaces chokidar in the SWC watch path.tsconfigexcludes — excluded files are skipped both on build and in watch mode, and newly added files no longer inherit watch mode when transpiled.--emit-declarationsemits.d.tsfiles under the SWC builder;--no-type-checkoverrides the config-level setting.--silentsuppresses informational compiler logs.Other improvements
bun.lock/bun.lockb.nest new --skip-testsscaffolds a project without testing files, and--observe/--no-observeanswers the@nestjs/observeprompt.nest generate --formatformats generated files with Prettier; theresourceschematic accepts--type <rest|graphql|microservice>and--crud [value].--builder, a readable error for malformednest-cli.json, a--parallelvalue that is validated instead of looping forever, and an explicit message fromnest infowhen no@nestjs/*dependencies are declared.nest infoand terminal-width detection preferprocess.stdout.columnsover shelling out totput..jsextensions on dynamic imports undernodenextresolution..tsbuildinfois removed whendeleteOutDiris set.Toolchain
TypeScript 6 (
~6.0.2),@angular-devkit/*22,commander15,@inquirer/prompts8,ora9,node-emoji2, andchokidar5. Internally the CLI moved from Jest to Vitest and from ESLint to oxlint.engines.nodestays at>= 20.11.See the migration guide for the full picture.
v11.0.24Compare Source
3c6b4ac)1697b7f)75b57c4)54b08ae)v11.0.23Compare Source
0dd0e3e)728f80c)v11.0.22Compare Source
9e502bd)c4342b2)4c0e2ca)b19856a)v11.0.21Compare Source
255a559)v11.0.20Compare Source
705bb7d)8496c76)2181947)a3890cb)c46ddd7)v11.0.19Compare Source
What's Changed
Full Changelog: nestjs/nest-cli@11.0.18...11.0.19
v11.0.18Compare Source
What's Changed
New Contributors
Full Changelog: nestjs/nest-cli@11.0.17...11.0.18
v11.0.17Compare Source
What's Changed
Full Changelog: nestjs/nest-cli@11.0.16...11.0.17
v11.0.16Compare Source
a93d919)a335950)v11.0.15Compare Source
What's Changed
New Contributors
Full Changelog: nestjs/nest-cli@11.0.14...11.0.15
nestjs/nest (@nestjs/common)
v12.1.2Compare Source
v12.1.1Compare Source
v12.1.1 (2026-09-28)
Bug fixes
common,core,microservices,testingmicroservicescommoncoreplatform-fastifycore,testingEnhancements
commonmicroservicesCommitters: 13
v12.1.0Compare Source
v12.1.0 (2026-09-23)
Bug fixes
coremicroservicesEnhancements
corecommon,coreplatform-fastifycommonplatform-fastify,testingcommon,core,platform-fastifyCommitters: 9
v12.0.4Compare Source
v12.0.4 (2026-09-21)
Bug fixes
microservicescoreEnhancements
platform-expresslimitskey-by-key instead of overriding it wholesale (@mdrezuanislamridoy)commonDependencies
commonplatform-fastifyCommitters: 10
v12.0.3Compare Source
v12.0.3 (2026-09-15)
Bug fixes
microservicescommonDependencies
platform-expresscommonCommitters: 4
v12.0.2Compare Source
v12.0.2 (2026-09-14)
Bug fixes
platform-socket.io,platform-wsmicroservicescommonnormalizePath(@Asadshah7950)corestatusCodeas http errors (@Asadshah7950)platform-fastifyEnhancements
microservicesDependencies
platform-fastifyCommitters: 16
v12.0.1Compare Source
v12.0.0Compare Source
NestJS v12.0.0
NestJS 12 is centered around ESM-ready packages, first-class Standard Schema support for validation and serialization, a rebuilt CLI, and native observability through the new
@nestjs/observeSDK.Existing CommonJS applications keep working — migrating your own code to ESM is entirely optional.
📖 Full migration guide
Upgrading
Upgrade the CLI first, since the upgrade command ships with it:
Then, from the root of your project:
nest upgrademoves every@nestjs/*package to its v12-compatible major at once and applies the mechanical parts of the migration for you —nest-cli.jsonwebpack options, the GraphQLplayground→graphiqlrename and subscriptions transport swap, the NATS package replacement,@nestjs/configvalidation options, Jest and Joi bumps — then prints a report of everything it changed and everything you still need to review by hand. Run it with--dry-runfirst to see that report without touching your files.It deliberately does not migrate your project to ESM, Vitest, or oxlint. Those are the defaults for newly generated projects; existing projects adopt them on their own schedule.
Node.js: v12 requires Node.js v20.19+ or v22.12+. Both
require(esm)and the ESM packages depend on it; the upgrade command refuses to run on older releases (including the 21.x line). The latest active LTS is recommended.Highlights
ESM packages
All core Nest packages now ship as ESM. Thanks to
require(esm)in modern Node.js, most existing CommonJS applications continue to work without a rewrite. Review custom bootstrapping scripts, build tooling, and test runners if they assume CommonJS-only packages.nest newnow asks whether to scaffold a CommonJS or an ESM project.Standard Schema validation
Route parameter decorators —
@Body(),@Query(),@Param(),@RawBody()— accept a newschemaoption, designed for Standard Schema compatible libraries such as Zod, Valibot, and ArkType:The decorator only attaches metadata; register the new
StandardSchemaValidationPipeto validate against it:The same schemas feed OpenAPI generation. The decorator-based
class-validatorworkflow remains fully supported, with no plan to remove it.Standard Schema serialization
StandardSchemaSerializerInterceptorvalidates and transforms outgoing responses with the same ecosystem:Pick per use case:
ValidationPipe/ClassSerializerInterceptorfor class-based DTOs, the Standard Schema variants when your schemas already exist.Native observability —
@nestjs/observeThe official NestJS Observe SDK plugs into Nest's own request lifecycle through the
instrumentapplication option, rather than patching the HTTP server like a generic APM agent. Requests, jobs, errors, and traces are reported in terms of your controllers, providers, resolvers, and queue consumers:Auto-instrumentation covers HTTP, GraphQL, gRPC, and microservice transports, plus queue consumers and cron runs — no manual span wiring and no collector to run. Opt-in and new; nothing to migrate.
nest newandnest upgradecan wire it up for you (--observe). See the Observability chapter.Config module on Standard Schema
@nestjs/configmoves from Joi-specific validation to Standard Schema.validationSchemanow accepts any compatible schema:Existing Joi schemas still work with two caveats: upgrade to Joi v18+ (the first release implementing Standard Schema), and move library-specific settings under
validationOptions.libraryOptions.Route conflict diagnostics
Routes are registered in declaration order, so on order-sensitive adapters
@Get(':id')can silently shadow a@Get('me')declared after it. Two opt-in options surface this:Both default to the previous behavior, so nothing changes unless you set them.
Machine-readable error codes
HttpExceptionOptionsaccepts anerrorCodethat is serialized into the response body, so clients branch on a stable identifier instead of parsing message strings:Structured logging params
ConsoleLoggernow treats plain objects passed after the message as structured params of the same log entry instead of separate records:In JSON mode they nest under
params, or spread into the root withflattenParams. On by default; setstructuredParams: falseto restore the old behavior.CLI (
@nestjs/cliv12)The CLI was rebuilt in nestjs/nest-cli#3280: the entire source migrated to ESM, tests moved from Jest to Vitest, e2e tests were added for every command, and command classes were refactored to take typed context objects instead of untyped inputs and option arrays.
New commands
nest upgrade(aliasupdate) — upgrades a v11 project to v12 and applies the migration steps described above.nest deploy— deploys your application to the cloud via Mau, installing@nestjs/mauon first use and forwarding every argument straight through.Defaults and tooling
--webpack/--webpackPathflags (and theirwebpack/webpackConfigPathcounterparts innest-cli.json) are deprecated in favor of--builder rspack.decoratorschematic generates decorators using the preferred `Reflector.createDeConfiguration
📅 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 these updates again.
This PR was generated by Mend Renovate. View the repository job log.