# What changed in @nestjs/jwt

> 9 changes in @nestjs/jwt 9 to 12 from its official release notes, upgrade guides and advisories: 3 breaking. Each one cited. Sources checked 2026-10-27. HTML: https://unstale.sh/npm/@nestjs/jwt/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @nestjs/jwt 12

### Breaking changes

- CommonJS applications can require the package on Node 20.19+, 22.12+, and all of 24.x. On older Node releases, require() throws ERR_REQUIRE_ESM. (12.0.0) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.0)
- The package is published as pure ESM with an exports map. Import from the package root; CommonJS consumers can continue using require on supported Node versions. (12.0.0) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.0)
- Deep imports into build internals are no longer resolvable; import from the package root instead. (12.0.0) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.0)

### Fixes and other changes

- Async signing now rejects when the secret provider rejects. (12.0.3) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.3)
- Async provider rejection is suppressed when signing fails because the payload is a string. (12.0.3) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.3)
- Adds type overloads for decode when the complete option is used, including a nullable return type. (12.0.2) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.2)
- Fixes ESM imports of jsonwebtoken. (12.0.1) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.1)
- The jsonwebtoken error classes are explicitly re-exported by name so they resolve correctly under ESM interop. (12.0.0) — [release notes](https://github.com/nestjs/jwt/releases/tag/12.0.0)

## @nestjs/jwt 9

### Fixes and other changes

- Peer dependencies were updated, which may affect package compatibility and installation. (9.0.0) — [release notes](https://github.com/nestjs/jwt/releases/tag/9.0.0)
