fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(deps): update nest monorepo to v12 - #1282

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo
Open

fix(deps): update nest monorepo to v12#1282
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-nest-monorepo

Conversation

@renovate

@renovaterenovateBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

PackageChangeAgeConfidence
@nestjs/common (source)^11.0.16^12.0.0ageconfidence
@nestjs/core (source)^11.0.16^12.0.0ageconfidence
@nestjs/platform-express (source)^11.0.16^12.0.0ageconfidence
@nestjs/schematics11.1.012.0.0ageconfidence
@nestjs/testing (source)^11.0.16^12.0.0ageconfidence

Release Notes

nestjs/nest (@​nestjs/common)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/core)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/nest (@​nestjs/platform-express)

v12.0.1

Compare Source

v12.0.0

Compare Source

nestjs/schematics (@​nestjs/schematics)

v12.0.0

Compare Source

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.

GraphQL — renames the removed playground option to graphiql, and switches subscriptions-transport-ws over to graphql-ws, updating package.json to match.

NATS — rewrites nats imports to the v3 @nats-io packages and warns about the dropped StringCodec/JSONCodec helpers and the new packet serialization (custom deserializers now receive the full NATS message; read it with msg.json()).

Testing — raises jest, @types/jest, and ts-jest to Jest 30, and warns that because the Nest 12 packages are ESM-only, Jest can only require() them on Node.js 24.9+ (older versions fail with ERR_REQUIRE_ASYNC_MODULE).

CLI config — migrates nest-cli.json builders from webpack to Rspack, drops the deprecated webpack: false option, updates affected package.json scripts, and asks you to port any custom webpack config file by hand.

Diagnostics — scans the project and warns about the refined PipeTransform#transform signature and generic ArgumentMetadata, the new ConsoleLogger structured-params behaviour (opt out with structuredParams: false), and the change to lifecycle hook ordering by component hierarchy level.

Options: --observe, --skip-install, --tag <dist-tag>, --format.

@nestjs/observe integration

Both nest new --observe and nest upgrade --observe can preconfigure the application with @nestjs/observe — distributed tracing, auto-correlated logs, metrics, and alarms. The schematic adds the dependency and wires createObserveModule() into the root module, then reminds you to set OBSERVE_APP_KEY and OBSERVE_APP_SECRET. It is opt-in and skipped when the package is already installed.


See the migration guide for the full picture.

nestjs/nest (@​nestjs/testing)

v12.0.1

Compare Source

v12.0.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovateBotforce-pushed the renovate/major-nest-monorepo branch from e71d0b5 to c8c91caCompareAugust 27, 2026 17:31
Sign up for freeto 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