Skip to content

build(deps): bump the nestjs group across 1 directory with 11 updates - #104

Open
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/npm_and_yarn/dev/nestjs-47e435ffb3
Open

build(deps): bump the nestjs group across 1 directory with 11 updates#104
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/npm_and_yarn/dev/nestjs-47e435ffb3

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 3, 2026

Copy link
Copy Markdown

Bumps the nestjs group with 11 updates in the / directory:

Package From To
@nestjs/common 11.1.28 12.0.1
@nestjs/config 4.0.4 12.0.0
@nestjs/core 11.1.28 12.0.1
@nestjs/jwt 11.0.2 12.0.1
@nestjs/passport 11.0.5 12.0.0
@nestjs/platform-express 11.1.28 12.0.1
@nestjs/swagger 11.4.6 12.0.1
@nestjs/typeorm 11.0.2 12.0.1
@nestjs/cli 11.0.24 12.0.0
@nestjs/schematics 11.1.0 12.0.0
@nestjs/testing 11.1.28 12.0.1

Updates @nestjs/common from 11.1.28 to 12.0.1

Release notes

Sourced from @​nestjs/common's releases.

v12.0.0

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/observe SDK.

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:

npm i -g @nestjs/cli@latest

Then, from the root of your project:

nest upgrade

nest upgrade moves every @nestjs/* package to its v12-compatible major at once and applies the mechanical parts of the migration for you — nest-cli.json webpack options, the GraphQL playgroundgraphiql rename and subscriptions transport swap, the NATS package replacement, @nestjs/config validation 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-run first 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 new now asks whether to scaffold a CommonJS or an ESM project.

Standard Schema validation

Route parameter decorators — @Body(), @Query(), @Param(), @RawBody() — accept a new schema option, designed for Standard Schema compatible libraries such as Zod, Valibot, and ArkType:

@Post()
create(@Body({ schema: createUserSchema }) body: CreateUserDto) {
  return this.usersService.create(body);
}
</tr></table> 

... (truncated)

Commits
  • 4c751c5 chore(release): publish v12.0.1 release
  • 6494a6c chore(release): publish v12.0.0 release
  • e306724 fix(deps): update dependency file-type to v22
  • edb0034 Merge branch 'master' into v12.0.0
  • 4535f43 chore(release): publish v11.2.1 release
  • e255755 chore: resolve conflicts, minor fixes
  • 5d1b19b Merge branch 'master' into v12.0.0
  • f2a7e4b chore(release): publish v11.2.0 release
  • b2e7fb5 Merge pull request #17469 from nestjs/feat/sse-signal
  • 6498f11 feat: signal should finalize in every case
  • Additional commits viewable in compare view

Updates @nestjs/config from 4.0.4 to 12.0.0

Release notes

Sourced from @​nestjs/config's releases.

12.0.0

What's Changed

@nestjs/config is now a native ES module, environment validation is built on Standard Schema instead of Joi-specific code, and the major version is aligned with the Nest 12 release line (there is no 5.x4.0.4 goes straight to 12.0.0).

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext) behind a proper exports map. The legacy root index.js / index.d.ts shims are gone, and deep imports into build internals are no longer resolvable — import from the package root.

// ✅
import { ConfigModule, ConfigService } from '@nestjs/config';
// ❌ no longer resolvable
import { ConfigService } from '@​nestjs/config/dist/config.service';

require(esm) — CommonJS still works

You do not need to convert your app to ESM. Thanks to Node's require(esm) support (Node 20.19+ / 22.12+), a CommonJS app can keep using require('@nestjs/config') unchanged.

Validation is now Standard Schema based

validationSchema accepts any schema implementing the Standard Schema spec — Zod (v3, v4, v4-mini), Valibot, ArkType, Joi 18+, and anything else that adopts it. There is no longer any Joi-specific code path in the module, and Joi is no longer implied as the validation library.

ConfigModule.forRoot({
  validationSchema: z.object({
    PORT: z.coerce.number().default(3000),
    DATABASE_NAME: z.string(),
  }),
});

Joi keeps working — it implements Standard Schema as of v18 — and the historical abortEarly: false / allowUnknown: true defaults are still applied automatically for Joi schemas, so existing Joi setups behave as before.

Breaking: validationOptions shape

Options are now the Standard Schema Options object, and library-specific settings move under libraryOptions:

// Before (4.x)
validationOptions: { allowUnknown: false, abortEarly: true }
// Now (12.x)
validationOptions: { libraryOptions: { allowUnknown: false, abortEarly: true } }

The generic parameter changed accordingly: ConfigModuleOptions<ValidationOptions extends StandardSchemaV1.Options>, and validationSchema is typed as StandardSchemaV1 rather than any — a schema that does not implement the spec is now a compile-time error instead of a runtime one.

... (truncated)

Commits
  • 269312f chore(): release v12.0.0
  • 5748c1f chore: upgrade to v12
  • d833a6a chore(deps): update dependency oxlint to v1.80.0 (#2408)
  • 4555cbc chore(deps): update nest monorepo to v11.2.3 (#2407)
  • 4561739 chore(deps): update dependency vite to v8.2.2 (#2406)
  • 0fc13bb chore(deps): update dependency joi to v18.2.5 (#2405)
  • 22642b8 chore(deps): update dependency oxlint to v1.79.0 (#2404)
  • d3a7dd5 chore(deps): update dependency vitest to v4.1.11 (#2403)
  • 8c87973 chore(deps): update dependency zod to v4.4.3 (#2402)
  • 949dc88 Merge pull request #2356 from nestjs/renovate/cimg-node-24.x
  • Additional commits viewable in compare view

Updates @nestjs/core from 11.1.28 to 12.0.1

Release notes

Sourced from @​nestjs/core's releases.

v12.0.0

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/observe SDK.

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:

npm i -g @nestjs/cli@latest

Then, from the root of your project:

nest upgrade

nest upgrade moves every @nestjs/* package to its v12-compatible major at once and applies the mechanical parts of the migration for you — nest-cli.json webpack options, the GraphQL playgroundgraphiql rename and subscriptions transport swap, the NATS package replacement, @nestjs/config validation 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-run first 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 new now asks whether to scaffold a CommonJS or an ESM project.

Standard Schema validation

Route parameter decorators — @Body(), @Query(), @Param(), @RawBody() — accept a new schema option, designed for Standard Schema compatible libraries such as Zod, Valibot, and ArkType:

@Post()
create(@Body({ schema: createUserSchema }) body: CreateUserDto) {
  return this.usersService.create(body);
}
</tr></table> 

... (truncated)

Commits
  • 4c751c5 chore(release): publish v12.0.1 release
  • 3c25112 chore: update peer deps
  • 6494a6c chore(release): publish v12.0.0 release
  • c9d59f2 chore: expose missing internals
  • 45485b5 fix(core): circular durable providers issue #17562
  • f94e9eb fix(core): preserve middleware arity and harden instance decorator
  • 1dcbc25 fix(core): instrument midldeware issue #17554
  • f5bf4dd docs(core): update Mercure SSE header comment to current path
  • edb0034 Merge branch 'master' into v12.0.0
  • 4535f43 chore(release): publish v11.2.1 release
  • Additional commits viewable in compare view

Updates @nestjs/jwt from 11.0.2 to 12.0.1

Release notes

Sourced from @​nestjs/jwt's releases.

Release 12.0.1

  • fix: jsonwebtoken esm imports (05d0075)

Release 12.0.0

What's Changed

@nestjs/jwt is now a native ES module, and the major version is aligned with the Nest 12 release line

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext) behind a proper exports map. The legacy root index.js / index.d.ts / index.ts shims are gone, and deep imports into build internals are no longer resolvable — import from the package root.

// ✅
import { JwtModule, JwtService } from '@nestjs/jwt';
// ❌ no longer resolvable
import { JwtService } from '@​nestjs/jwt/dist/jwt.service';

require(esm) — CommonJS still works

You do not need to convert your app to ESM. Thanks to Node's require(esm) support (Node 20.19+, 22.12+, and all of 24.x), a CommonJS Nest application can keep requiring the package exactly as before:

const { JwtModule, JwtService } = require('@nestjs/jwt');

TypeScript users compiling to CommonJS are unaffected as long as their runtime is on a supported Node version. On older Node releases, require() of this package will throw ERR_REQUIRE_ESM — upgrade Node, or switch the consuming code to import.

jsonwebtoken re-exports

The error classes re-exported from jsonwebtoken (TokenExpiredError, NotBeforeError, JsonWebTokenError) are now re-exported explicitly by name instead of via a star export, so they resolve correctly under ESM interop with the CJS jsonwebtoken package. No import changes are needed on your side:

import { TokenExpiredError } from '@nestjs/jwt';

Upgrading

npm install @nestjs/jwt@12

For most applications this is a drop-in upgrade. Action is only required if you were relying on deep imports into dist/, or are running a Node version older than 20.19 with a CommonJS app.

Commits
  • 6c75fa6 chore(): release v12.0.1
  • 05d0075 fix: jsonwebtoken esm imports
  • 8853ee8 chore(): release v12.0.0
  • b8455f2 chore: upgrade to v12
  • 542e29e chore(deps): update dependency oxlint to v1.80.0 (#2260)
  • ae0d0d7 chore(deps): update nest monorepo to v11.2.3 (#2259)
  • af3ad43 chore(deps): update dependency oxlint to v1.79.0 (#2258)
  • 53c8fee chore(deps): update dependency vitest to v4.1.11 (#2257)
  • 7014c3a Merge pull request #2205 from nestjs/renovate/cimg-node-24.x
  • 54a4c5c Merge pull request #2186 from nestjs/chore/esm-migration
  • Additional commits viewable in compare view

Updates @nestjs/passport from 11.0.5 to 12.0.0

Release notes

Sourced from @​nestjs/passport's releases.

Release 12.0.0

What's Changed

@nestjs/passport is now a native ES module, and the major version is aligned with the Nest 12 release line.

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext) behind a proper exports map. The legacy root index.js / index.d.ts / index.ts shims are gone, and deep imports into build internals (e.g. @nestjs/passport/dist/auth.guard) are no longer resolvable — import from the package root:

import { AuthGuard, PassportModule, PassportStrategy } from '@nestjs/passport';

require(esm) — CommonJS still works

You do not need to convert your app to ESM. Thanks to Node's require(esm) support, a CommonJS app can keep doing:

const { AuthGuard, PassportModule } = require('@nestjs/passport');

This requires Node.js 20.19+ or 22.12+ (where require(esm) is enabled by default). On older Node versions you must either upgrade Node or move your app to ESM.

AuthGuard no longer forwards module options to passport.authenticate()

defaultStrategy and property — options that belong to PassportModule.register(), not to Passport itself — were being passed straight through to passport.authenticate(), where they could collide with strategy-level options. They are now stripped before the call, so a strategy only ever receives real AuthenticateOptions.

The signature of getAuthenticateOptions() changed accordingly:

// before
getAuthenticateOptions(
  context: ExecutionContext,
): Promise<IAuthModuleOptions> | IAuthModuleOptions | undefined;
// after
getAuthenticateOptions(
context: ExecutionContext,
):
| Promise<AuthGuardAuthenticateOptions>
| AuthGuardAuthenticateOptions
| undefined;

AuthGuardAuthenticateOptions is exported from the package root and is passport.AuthenticateOptions with defaultStrategy explicitly disallowed. If you override getAuthenticateOptions() and return defaultStrategy, TypeScript will now flag it — remove it and set it via PassportModule.register({ defaultStrategy: '...' }) instead.

Peer dependencies

"peerDependencies": {
</tr></table> 

... (truncated)

Commits
  • 0f15350 chore(): release v12.0.0
  • c6af6f6 chore: upgrade to v12
  • d05c93e chore(deps): update dependency oxlint to v1.80.0 (#2309)
  • 8d06e0c chore(deps): update nest monorepo to v11.2.3 (#2308)
  • 875fddc chore(deps): update dependency oxlint to v1.79.0 (#2307)
  • dd63061 chore(deps): update vitest monorepo to v4.1.11 (#2306)
  • 28e6701 Merge pull request #2300 from GiHoon1123/fix-947-authenticate-options
  • 849d11c Merge master into fix-947-authenticate-options, resolve conflicts
  • de02b20 Merge pull request #2250 from nestjs/renovate/cimg-node-24.x
  • e27a9c8 Merge pull request #2230 from nestjs/chore/esm-migration
  • Additional commits viewable in compare view

Updates @nestjs/platform-express from 11.1.28 to 12.0.1

Release notes

Sourced from @​nestjs/platform-express's releases.

v12.0.0

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/observe SDK.

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:

npm i -g @nestjs/cli@latest

Then, from the root of your project:

nest upgrade

nest upgrade moves every @nestjs/* package to its v12-compatible major at once and applies the mechanical parts of the migration for you — nest-cli.json webpack options, the GraphQL playgroundgraphiql rename and subscriptions transport swap, the NATS package replacement, @nestjs/config validation 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-run first 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 new now asks whether to scaffold a CommonJS or an ESM project.

Standard Schema validation

Route parameter decorators — @Body(), @Query(), @Param(), @RawBody() — accept a new schema option, designed for Standard Schema compatible libraries such as Zod, Valibot, and ArkType:

@Post()
create(@Body({ schema: createUserSchema }) body: CreateUserDto) {
  return this.usersService.create(body);
}
</tr></table> 

... (truncated)

Commits
  • 4c751c5 chore(release): publish v12.0.1 release
  • 3c25112 chore: update peer deps
  • 6494a6c chore(release): publish v12.0.0 release
  • e03cf5c fix(express,fastify): apply falsy status codes in reply()
  • edb0034 Merge branch 'master' into v12.0.0
  • 4535f43 chore(release): publish v11.2.1 release
  • e255755 chore: resolve conflicts, minor fixes
  • 5d1b19b Merge branch 'master' into v12.0.0
  • f2a7e4b chore(release): publish v11.2.0 release
  • 03587a1 chore(release): publish v11.1.29 release
  • Additional commits viewable in compare view

Updates @nestjs/swagger from 11.4.6 to 12.0.1

Release notes

Sourced from @​nestjs/swagger's releases.

Release 12.0.1

12.0.1 (2026-08-28)

Bug fixes

Dependencies

Committers: 1

Release 12.0.0

What's Changed

@nestjs/swagger is now a native ES module, requires Nest 12, and changes how nullable schemas are spelled in the generated document.

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext) behind a proper exports map. The legacy root index.ts / plugin.js / plugin.ts shims are gone, and deep imports into build internals are no longer resolvable — import from the package root (@nestjs/swagger) or from @nestjs/swagger/plugin.

require(esm) — CommonJS still works

You do not need to convert your app to ESM. Thanks to Node's require(esm) support, a CommonJS app can keep doing const { SwaggerModule } = require('@nestjs/swagger'). The CLI plugin entry (@nestjs/swagger/plugin) also keeps a require condition so nest-cli.json setups load it unchanged.

This is why the package now declares "engines": { "node": "^20.19.0 || >=22.12.0" } — those are the Node versions where require(esm) is available without a flag.

Nest 12 peer dependencies

@nestjs/common and @nestjs/core peers are now ^12.0.0. @nestjs/mapped-types moves to 12.0.0 (itself ESM, with its major aligned to the Nest 12 line), so PartialType, PickType, OmitType and IntersectionType come from an ESM build too.

Standard Schema support

Schemas passed to Nest 12's route decorators (for example @Body({ schema: z.object({ ... }) })) can now be reflected into the OpenAPI document. Supply an adapter via the new standardSchemaConverter document option:

import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import type { SwaggerDocumentOptions } from '@nestjs/swagger';
import { createSchema } from 'zod-openapi';
import type { ZodType } from 'zod';
// Standard Schema exposes the producing library under ~standard.vendor,
// which is how you narrow the raw value to a library-specific type.
function isZodSchema(schema: unknown): schema is ZodType {
return (
!!schema &&
typeof schema === 'object' &&
(schema as { '~standard'?: { vendor?: string } })['~standard']?.vendor ===
'zod'
);
</tr></table>

... (truncated)

Commits
  • 4274e7c chore(): release v12.0.1
  • 325d009 Merge pull request #4082 from nestjs/fix/esm-hoist-static-imports
  • 8980a54 fix: esm hoist static imports
  • 31b0bf4 chore(deps): update dependency lint-staged to v17.4.1 (#4078)
  • b71a812 Merge pull request #4077 from nestjs/renovate/swagger-ui-dist-5.x-lockfile
  • ec18a13 chore(deps): update dependency swagger-ui-dist to v5.32.14
  • 0f85b4c Merge pull request #4072 from nestjs/renovate/js-yaml-5.x
  • 7d8b38e Merge pull request #4076 from nestjs/renovate/vite-8.x-lockfile
  • ebc4cb8 Merge pull request #4069 from nestjs/renovate/zod-openapi-6.x
  • 71e1769 Merge pull request #4068 from nestjs/renovate/swagger-ui-dist-5.x
  • Additional commits viewable in compare view

Updates @nestjs/typeorm from 11.0.2 to 12.0.1

Release notes

Sourced from @​nestjs/typeorm's releases.

Release 12.0.1

  • fix: add default condition to exports so CJS can resolve the package (01874dc)

Release 12.0.0

What's Changed

@nestjs/typeorm is now a native ES module, and the major version is aligned with the Nest 12 release line (11.0.312.0.0).

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext) behind a proper exports map. The legacy root index.js / index.d.ts shims are gone, and deep imports into build internals are no longer resolvable — import from the package root.

The minimum supported Node version is now >=20.19.0.

require(esm) — CommonJS still works

You do not need to convert your app to ESM. Thanks to Node's require(esm) support, CJS apps still work.

Release 11.0.3

  • chore: warn instead of throwing error, partially revert #2584 (4fbe9a7)
Commits

Updates @nestjs/cli from 11.0.24 to 12.0.0

Release notes

Sourced from @​nestjs/cli's releases.

Release 12.0.0

What's Changed

@nestjs/cli is 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 upgrade and nest deploy.

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext). All internal imports carry explicit .js extensions and the build output is ESM-only.

For the common case this is invisible — nest is 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, and webpack-node-externals moved from dependencies to optional peer dependencies, joining @swc/cli and @swc/core.

If you build with tsc (the default) or with SWC, nothing changes. If you use --builder webpack (or "webpack": true in nest-cli.json), install the bundler yourself:

npm i -D webpack webpack-node-externals fork-ts-checker-webpack-plugin tsconfig-paths-webpack-plugin

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/core is supported as an optional peer dependency (^1.7.7 || ^2.1.10) and is the builder that nest new scaffolds into nest-cli.json for new projects.

  • --builder rspack on nest build and nest start
  • --rspackPath [path] to point at a custom Rspack config, mirroring --webpackPath
  • Source maps are enabled in the Rspack defaults

New: nest upgrade

A new command (aliased nest update) that runs the upgrade schematic to migrate a Nest v11 project to v12 — dependency bumps, tsconfig and nest-cli.json migrations, and codemods for @nestjs/config, GraphQL, and NATS. See the @nestjs/schematics release notes for what the migration itself does.

nest upgrade

Options: -d, --dry-run, -s, --skip-install, -t, --tag [tag] (use a dist-tag such as next instead of the default version ranges), -c, --collection [name], and --observe / --no-observe to answer the @nestjs/observe prompt up front.

New: nest deploy

Deploy 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.

nest deploy

Path confinement for build output

... (truncated)

Commits
  • f4bcf48 chore(): release v12.0.0
  • 6a24117 chore: resolve conflicts
  • a05c24c chore: upgrade to v12
  • a3ee7ba Merge pull request #3527 from nestjs/renovate/cimg-node-24.x
  • 4f4f81f Merge pull request #3528 from nestjs/renovate/inquirer-prompts-8.x
  • 1a07a85 fix(deps): update dependency @​inquirer/prompts to v8.7.0
  • ede1547 chore(deps): update node.js to v24.20.0
  • 82d99b3 chore(deps): update dependency @​rspack/core to v2.2.0 (#3525)
  • 71859d0 chore(deps): update dependency oxlint to v1.80.0 (#3524)
  • 3707956 test: fix flaky test in ci attempt nan +1
  • Additional commits viewable in compare view
Install script changes

This version modifies prepare script that runs during installation. Review the package contents before updating.


Updates @nestjs/schematics from 11.1.0 to 12.0.0

Release notes

Sourced from @​nestjs/schematics's releases.

Release 12.0.0

What's Changed

@nestjs/schematics is now a native ES module, and the major version is aligned with the Nest 12 release line. Beyond the package itself going ESM, the bigger change is what it generates: nest new now scaffolds ESM applications by default, and a brand-new nest upgrade schematic migrates existing v11 projects to v12.

ESM migration

The package is published as pure ESM ("type": "module", compiled with NodeNext). All internal imports carry explicit .js extensions and the build output is ESM-only.

The package now requires Node.js >= 22.12.0 and declares a typescript >= 6.0.0 peer dependency. prettier ^3 remains an optional peer, used only when --format is passed.

require(esm) — CommonJS still works

You do not need to convert your tooling to ESM. Thanks to Node's require(esm) support, CommonJS consumers can still require('@nestjs/schematics') on the supported Node versions, so custom collections and CJS scripts that drive the schematics programmatically keep working unchanged.

nest new generates ESM by default

The application schematic gained a type option (esm | cjs) that defaults to esm:

Which module system would you like to use?
> ESM (ES Modules)         [ with vitest ]
  CJS (CommonJS)           [ with jest ]
  • ESM projects get "type": "module", Vitest as the test runner (vitest.config.ts / vitest.config.e2e.ts), and "types": ["vitest/globals", "node"].
  • CJS projects keep Jest, but the Jest configuration has moved out of package.json into a dedicated jest.config.ts.

Pass --type cjs (or answer the prompt) to keep the classic CommonJS layout.

Generated project defaults

  • TypeScript 6, with module/moduleResolution set to nodenext, resolvePackageJsonExports: true, isolatedModules: true, and target: ES2023.
  • oxlint replaces ESLint. New projects ship an oxlint.json and a "lint": "oxlint src/ test/" script instead of the ESLint config and its plugin chain.
  • Rspack replaces webpack as the default builder in nest-cli.json.
  • Nest dependencies are pinned to the v12 line (@nestjs/common, @nestjs/core, @nestjs/platform-express, @nestjs/testing).

ESM-aware generators

Every element generator (module, controller, service, resource, middleware, pipe, …) now detects whether the target project is ESM and appends .js to generated relative imports accordingly — including the imports it injects into an existing @Module() when wiring up a newly generated element. CJS projects are unaffected.

New: nest upgrade

A new schematic (aliased nest update) migrates a Nest v11 project to v12. It refuses to run on anything that isn't v11, then applies the migration in steps and prints a report of every change, every follow-up action, and every warning.

Dependencies — bumps all known @nestjs/* packages to ^12.0.0 (GraphQL packages to ^14.0.0), raises typescript to ^6.0.0 and engines.node to >=20.19.0, and reports any @nestjs/* package whose v12-compatible release it doesn't know about.

tsconfig — flags module: commonjs with legacy module resolution and any moduleResolution that TypeScript 6 dropped, and points out a missing rootDir in tsconfig.build.json (TS6 error TS5011).

@nestjs/config — moves library-specific validationOptions (Joi's allowUnknown, abortEarly, …) under validationOptions.libraryOptions, and raises joi to ^18 for its Standard Schema support.

... (truncated)

Commits

Updates @nestjs/testing from 11.1.28 to 12.0.1

Release notes

Sourced from @​nestjs/testing's releases.

v12.0.0

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/observe SDK.

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:

npm i -g @nestjs/cli@latest

Then, from the root of your project:

nest upgrade

nest upgrade moves every @nestjs/* package to its v12-compatible major at once and applies the mechanical parts of the migration for you — nest-cli.json webpack options, the GraphQL playgroundgraphiql rename and subscriptions transport swap, the NATS package replacement, @nestjs/config validation 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-run first 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 new now asks whether to scaffold a CommonJS or an ESM project.

Standard Schema validation

Route parameter decorators — @Body(), @Query(), @Param(), @RawBody() — accept a new schema option, designed for Standard Schema compatible libraries such as Zod, Valibot, and ArkType:

@Post()
create(@Body({ schema: createUserSchema }) body: CreateUserDto) {
  return this.usersService.create(body);
}
</tr></table> 

... (truncated)

Commits
  • 4c751c5 chore(release): publish v12.0.1 release
  • 3c25112 chore: update peer deps
  • 6494a6c chore(release): publish v12.0.0 release
  • edb0034 Merge branch 'master' into v12.0.0
  • 4535f43 chore(release): publish v11.2.1 release
  • e255755 chore: resolve conflicts, minor fixes
  • 5d1b19b Merge branch 'master' into v12.0.0
  • f2a7e4b chore(release): publish v11.2.0 release
  • 03587a1 chore(release): publish v11.1.29 release
  • 92bc05d chore: update readme
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the nestjs group with 11 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@nestjs/common](https://github.com/nestjs/nest/tree/HEAD/packages/common) | `11.1.28` | `12.0.1` |
| [@nestjs/config](https://github.com/nestjs/config) | `4.0.4` | `12.0.0` |
| [@nestjs/core](https://github.com/nestjs/nest/tree/HEAD/packages/core) | `11.1.28` | `12.0.1` |
| [@nestjs/jwt](https://github.com/nestjs/jwt) | `11.0.2` | `12.0.1` |
| [@nestjs/passport](https://github.com/nestjs/passport) | `11.0.5` | `12.0.0` |
| [@nestjs/platform-express](https://github.com/nestjs/nest/tree/HEAD/packages/platform-express) | `11.1.28` | `12.0.1` |
| [@nestjs/swagger](https://github.com/nestjs/swagger) | `11.4.6` | `12.0.1` |
| [@nestjs/typeorm](https://github.com/nestjs/typeorm) | `11.0.2` | `12.0.1` |
| [@nestjs/cli](https://github.com/nestjs/nest-cli) | `11.0.24` | `12.0.0` |
| [@nestjs/schematics](https://github.com/nestjs/schematics) | `11.1.0` | `12.0.0` |
| [@nestjs/testing](https://github.com/nestjs/nest/tree/HEAD/packages/testing) | `11.1.28` | `12.0.1` |



Updates `@nestjs/common` from 11.1.28 to 12.0.1
- [Release notes](https://github.com/nestjs/nest/releases)
- [Commits](https://github.com/nestjs/nest/commits/v12.0.1/packages/common)

Updates `@nestjs/config` from 4.0.4 to 12.0.0
- [Release notes](https://github.com/nestjs/config/releases)
- [Commits](nestjs/config@4.0.4...12.0.0)

Updates `@nestjs/core` from 11.1.28 to 12.0.1
- [Release notes](https://github.com/nestjs/nest/releases)
- [Commits](https://github.com/nestjs/nest/commits/v12.0.1/packages/core)

Updates `@nestjs/jwt` from 11.0.2 to 12.0.1
- [Release notes](https://github.com/nestjs/jwt/releases)
- [Commits](nestjs/jwt@11.0.2...12.0.1)

Updates `@nestjs/passport` from 11.0.5 to 12.0.0
- [Release notes](https://github.com/nestjs/passport/releases)
- [Commits](nestjs/passport@11.0.5...12.0.0)

Updates `@nestjs/platform-express` from 11.1.28 to 12.0.1
- [Release notes](https://github.com/nestjs/nest/releases)
- [Commits](https://github.com/nestjs/nest/commits/v12.0.1/packages/platform-express)

Updates `@nestjs/swagger` from 11.4.6 to 12.0.1
- [Release notes](https://github.com/nestjs/swagger/releases)
- [Commits](nestjs/swagger@11.4.6...12.0.1)

Updates `@nestjs/typeorm` from 11.0.2 to 12.0.1
- [Release notes](https://github.com/nestjs/typeorm/releases)
- [Commits](nestjs/typeorm@11.0.2...12.0.1)

Updates `@nestjs/cli` from 11.0.24 to 12.0.0
- [Release notes](https://github.com/nestjs/nest-cli/releases)
- [Commits](nestjs/nest-cli@11.0.24...12.0.0)

Updates `@nestjs/schematics` from 11.1.0 to 12.0.0
- [Release notes](https://github.com/nestjs/schematics/releases)
- [Commits](nestjs/schematics@11.1.0...12.0.0)

Updates `@nestjs/testing` from 11.1.28 to 12.0.1
- [Release notes](https://github.com/nestjs/nest/releases)
- [Commits](https://github.com/nestjs/nest/commits/v12.0.1/packages/testing)

---
updated-dependencies:
- dependency-name: "@nestjs/common"
  dependency-version: 12.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/config"
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/core"
  dependency-version: 12.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/jwt"
  dependency-version: 12.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/passport"
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/platform-express"
  dependency-version: 12.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/swagger"
  dependency-version: 12.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/typeorm"
  dependency-version: 12.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/cli"
  dependency-version: 12.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/schematics"
  dependency-version: 12.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: nestjs
- dependency-name: "@nestjs/testing"
  dependency-version: 12.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: nestjs
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Sep 3, 2026

Copy link
Copy Markdown
Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants