Skip to content

nest

v12.5.0
nestjs/nest

A progressive TypeScript framework for Node.js backends: from a small API in one file to efficient, scalable, enterprise-grade systems 🚀

Version of nestjs/nest you run

CompareView on GitHub

Supported versions

Source: endoflife.date
LineLatestReleasedSecurity fixes
1212.5.0Aug 27, 2026Supported
1111.2.10Jan 20, 2025Supported
1010.4.22Jun 15, 2023Ended
99.4.3Jul 8, 2022Ended
88.4.7Jul 7, 2021Ended
77.6.18Mar 13, 2020Ended

Breaking changes

What to check before upgrading, taken from the notes of the last 30 releases.

  • v12.0.0Aug 27, 2026

    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 playground → graphiql 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.

    ---

    Breaking changes

    | Change | What to do |

    | --- | --- |

    | Packages ship as ESM | Usually nothing — require(esm) keeps CommonJS apps working. Review custom bootstrapping, bundler, and test-runner config. |

    | Node.js v20.19+ / v22.12+ required | Upgrade Node; the 21.x line is not supported. |

    | Lifecycle hooks are now invoked by component hierarchy level | Review ordering assumptions between related providers/modules in init, teardown, and tests. |

    | NATS v3 — the nats package is replaced by @nats-io/transport-node | npm uninstall nats && npm install @nats-io/transport-node; update direct imports. Packets are now serialized as JSON strings and custom deserializers receive the full NATS message — read payloads with msg.json(). |

    | GraphQL subscriptions — subscriptions-transport-ws support removed | Switch to graphql-ws; the protocols are wire-incompatible, so clients must be updated. Review onConnect callbacks. |

    | GraphiQL is the default GraphQL IDE | Replace playground with graphiql; pass an options object to customize. |

    | @nestjs/config validates through Standard Schema | Keep Joi by upgrading to v18+ and moving library settings under validationOptions.libraryOptions. |

    | Pipe transform signatures refined; ArgumentMetadata is now generic | Adjust hand-written custom pipe signatures if the compiler complains. |

    | ConsoleLogger structured params on by default | Set structuredParams: false to restore the previous output. |

    | Webpack CLI workflows deprecated | Migrate to --builder rspack. |

    | angular schematic removed | — |

    Most of these are handled automatically by nest upgrade.

Release history

All releases on GitHub
BadgeLatest version of nestjs/nest[![version](/badge/nestjs/nest)](/p/nestjs/nest)

What's changed

Full release notesCompare with previous