NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #433 most downloaded on npm
JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes
Last release 26 days ago
05 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
106 versions withdrawn
withdrawn after publishing
11 years old
245 releases · first in 2015
typescript: ref dom lib via triple-slash to fix some compile issues (175f273), closes #126
### Bug Fixes * botched v3.3.0 release
One column per quarter.
support recognizing proprietary crit header parameters (5163116), closes #123
allow specifying modulusLength when generating RSA Key Pairs (5f7a0e9), closes #121
typescript: refactored how types are published (2937363), closes #119
handle globalThis undefined in legacy browsers
global detection in a browser worker runtime
added "KeyLike to JWK" module (7a8418e), closes #109
build: publish esm submodules (7b6364f), closes #104
typescript: fix compiling by adding .d.ts files for runtime modules
Browser support (using Web Cryptography API)
add a maxOutputLength option to zlib inflate (02a6579), fixes CVE-2024-28176
limit default PBES2 alg's computational expense
defer AES CBC w/ HMAC decryption after tag verification passes (812e03f), fixes CVE-2021-29443
improve base64url encoding when available in Node.js
allow stubbing of the JWT.decode function
esm: include esm files in the published package
allow plugins such as jose-chacha to work in newer node runtime
deprecated method JWK.importKey was removed
JWE.decrypt option algorithms was removed and replaced with contentEncryptionAlgorithms (handles enc allowlist) and keyManagementAlgorithms (handles alg allowlist)JWT.verify profile option was removed, use e.g. JWT.IdToken.verify instead.maxAuthAge JWT.verify option, this option is now only present at the specific JWT profile APIs where the
auth_time property applies.nonce JWT.verify option, this option is now only present at the specific JWT profile APIs where the
nonce property applies.acr, amr, nonce and azp claim value types will only be checked when verifying a specific JWT profile using its dedicated API.process.emitWarningJWT.sign function options no longer accept a nonce property. To create a JWT with a nonce just pass the value to the payload.>=10.13.0 < 13 || >=13.7.0JWK.importKey was removedJWKS.KeyStore.fromJWKS was removedencoding and parse were removedlimit default PBES2 alg's computational expense
defer AES CBC w/ HMAC decryption after tag verification passes (08e1bc5), fixes CVE-2021-29443
support for validating issuer from a list of values
do not mutate unencoded payload when signing for multiple parties (1695423), closes #89
handle private EC keys without public component (#86) (e8ad389), closes #85
allow any JSON numeric value for timestamp values
add opt-in objects to verify using embedded JWS Header public keys
typescript: types of key generate functions without overloads (7e60722), closes #80
Draft specification profiles are updated as minor versions of the library, therefore, since they may have breaking changes, use the ~ semver operator…
at+JWT JWT draft profile - in the draft's Section 2.2 the claims iat and jti are now REQUIRED (was RECOMMENDED).Draft specification profiles are updated as minor versions of the library, therefore, since they may have breaking changes, use the ~ semver operator when using these and pay close attention to changelog and the drafts themselves.
build: don't publish junk files
use native openssl AES Key Wrap 🤦
update JWT Profile for OAuth 2.0 Access Tokens to latest draft
allow importing simpler passphrases as oct keys
oct keys (f86bda3)add JWT.verify "typ" option for checking JWT Type Header parameter
typescript: add optional JWK.Key props and make them readonly (b92079c), closes #67
### Performance Improvements * various codepaths refactored
actually remove the base64url proper encoding check
keystore filtering by JWK Key thumbprint
contactKDF iteration count fixed for key sizes larger than 256 bits
typescript: don't expose non existant classes, fix decode key
add JWTExpired error and JWTClaimInvalid claim and reason props (a0c0c7a), closes #62
exposed shorthands for JWT verification profiles
ensure asn1.js version to remove Buffer deprecation notice
force iat past check when maxTokenAge option is used + JWT refactor
add JWT validation profiles for Access Tokens and Logout Tokens
skip validating iat is in the past when exp is present
properly fail to import unsupported openssh formatted keys
importing a certificate populates x5c and x5t thumbprints (25a7a71), closes #59
handle Unencoded Payload (b64:false) with arbitrary buffer payloads (daabedc), closes #57
allow PBES2 for the correct JWK use values
use values (f0d7194)two official jose plugins/extensions for those living on the edge, closes #56
https://github.com/panva/jose-chacha https://github.com/panva/jose-x25519-ecdh
See the docs of each if you need them.
typescript: export Key Input types
default JWT.sign kid option value is false for HMAC signatures
allow JWKS.KeyStore .all and .get to filter for key curves
return the CEK from JWE.decrypt operation with { complete: true }
Nothing published for this version
add JWS.verify encoding and parsing options
expose crypto.KeyObject instances in supported runtimes
only use secp256k1 keys for signing/verification
throw proper error when runtime doesn't support OKP (0a16efb), closes #48
Package was renamed from @panva/jose to just jose. No further updates will be made under the @panva/jose package name.
Package was renamed from @panva/jose to just jose. No further updates will be made under the @panva/jose package name.
Your coding agent can read these notes before it upgrades. Set up the MCP server →