NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1 most downloaded on npm
The semantic version parser used by npm.
Last release 3 months ago
19 Jun 2026
Ships fairly regularly
a new release about every 3 months
Most releases are documented
notes for 39 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
16 years old
119 releases · first in 2011
9c8692a #878 include prereleases in tilde range lower bound with includePrerelease ( #878 ) ( @chatman-media )
9c8692a #878 include prereleases in tilde range lower bound with includePrerelease (#878) (@chatman-media)e583226 #874 reject numeric segments after x-ranges ( @pupuking723 )
One column per quarter.
046da7f #872 align caret includePrerelease lower bounds ( #872 ) ( @wayyoungboy )
046da7f #872 align caret includePrerelease lower bounds (#872) (@wayyoungboy)3485dda #866 bump @npmcli/eslint-config from 6.0.1 to 7.0.0 (#866) (@dependabot[bot])bea6028 #870 increment dotted prerelease identifiers ( #870 ) ( @liuzemei , @SheldonNeo )
17aa702 #869 strip build metadata before comparator trimming ( #869 ) ( @owlstronaut )
17aa702 #869 strip build metadata before comparator trimming (#869) (@owlstronaut)5f3ca13 #867 handle prerelease bounds in subset (#867) (@puneetdixit200, Puneet Dixit)0d0a0a2 #855 Add truncate function ( #855 ) ( @pjohnmeyer , @owlstronaut )
0d0a0a2 #855 Add truncate function (#855) (@pjohnmeyer, @owlstronaut)3905343 #859 Warn when defaulting to --inc=patch in CLI (@pjohnmeyer)c368af6 #853 fix typos in documentation (#853) (@ankitkumar572005)37776c3 #846 fix BNF grammar to distinguish prerelease from build identifiers (#846) (@abhu85, @claude)9542e09 #860 template-oss-apply (@owlstronaut)937bc2c #860 template-oss-apply@5.0.0 (@owlstronaut)6946fef #852 bump @npmcli/template-oss from 4.29.0 to 4.30.0 (#852) (@dependabot[bot], @npm-cli-bot)a29faa5 #835 cli: pass options to semver.valid() for loose version validation ( #835 ) ( @mldangelo )
a29faa5 #835 cli: pass options to semver.valid() for loose version validation (#835) (@mldangelo)1d28d5e #836 fix typos and update -n CLI option documentation (#836) (@mldangelo)44d7130 #824 bump @npmcli/eslint-config from 5.1.0 to 6.0.0 (#824) (@dependabot[bot])7073576 #820 reorder parameters in invalid-versions.js test (#820) (@reggi)5816d4c #829 bump @npmcli/template-oss from 4.28.0 to 4.28.1 (#829) (@dependabot[bot], @npm-cli-bot)e37e0ca #813 faster paths for compare ( #813 ) ( @H4ad )
fcafb61 #780 add missing 'use strict' directives ( #780 ) ( @Fdawgs )
fcafb61 #780 add missing 'use strict' directives (#780) (@Fdawgs)c99f336 #781 prerelease identifier starting with digits (#781) (@mbtools)c760403 #784 template-oss-apply for workflow permissions (#784) (@wraithgar)2677f2a #778 bump @npmcli/template-oss from 4.23.6 to 4.24.3 (#778) (@dependabot[bot], @npm-cli-bot)af761c0 #764 inc: fully capture prerelease identifier ( #764 ) ( @wraithgar )
af761c0 #764 inc: fully capture prerelease identifier (#764) (@wraithgar)`0864b3c` #753 add "release" inc type (#753) (@mbtools)
d588e37 #755 diff: fix prerelease to stable version diff logic (#755) (@eminberkayd, berkay.daglar)8a34bde #754 add identifier validation to inc() (#754) (@mbtools)67e5478 #756 readme: added missing period for consistency (#756) (@shaymolcho)868d4bb #749 clarify comment about obsolete prefixes (#749) (@mbtools, @ljharb)`6466ba9` #713 lru: use map.delete() directly (#713) (@negezor, @lukekarrys)
`c570a34` #704 linting: no-unused-vars (@wraithgar)
c570a34 #704 linting: no-unused-vars (@wraithgar)ad8ff11 #704 use internal cache implementation (@mbtools)ac9b357 #682 typo in compareBuild debug message (#682) (@mbtools)dd09b60 #705 bump @npmcli/template-oss to 4.22.0 (@lukekarrys)ec49cdc #701 chore: chore: postinstall for dependabot template-oss PR (@lukekarrys)b236c3d #696 add benchmarks (#696) (@H4ad)692451b #688 various improvements to README (#688) (@mbtools)5feeb7f #705 postinstall for dependabot template-oss PR (@lukekarrys)074156f #701 bump @npmcli/template-oss from 4.21.3 to 4.21.4 (@dependabot[bot])`a7ab13a` #671 preserve pre-release and build parts of a version on coerce (#671) (@madtisa, madtisa, @wraithgar)
a7ab13a #671 preserve pre-release and build parts of a version on coerce (#671) (@madtisa, madtisa, @wraithgar)816c7b2 #667 postinstall for dependabot template-oss PR (@lukekarrys)0bd24d9 #667 bump @npmcli/template-oss from 4.21.1 to 4.21.3 (@dependabot[bot])e521932 #652 postinstall for dependabot template-oss PR (@lukekarrys)8873991 #652 chore: chore: postinstall for dependabot template-oss PR (@lukekarrys)f317dc8 #652 bump @npmcli/template-oss from 4.19.0 to 4.21.0 (@dependabot[bot])7303db1 #658 add clean() test for build metadata (#658) (@jethrodaniel)6240d75 #656 add missing quotes in README.md (#656) (@zyxkad)14d263f #625 postinstall for dependabot template-oss PR (@lukekarrys)7c34e1a #625 bump @npmcli/template-oss from 4.18.1 to 4.19.0 (@dependabot[bot])123e0b0 #622 postinstall for dependabot template-oss PR (@lukekarrys)737d5e1 #622 bump @npmcli/template-oss from 4.18.0 to 4.18.1 (@dependabot[bot])cce6180 #598 postinstall for dependabot template-oss PR (@lukekarrys)b914a3d #598 bump @npmcli/template-oss from 4.17.0 to 4.18.0 (@dependabot[bot])`abdd93d` #571 set max lengths in regex for numeric and build identifiers (#571) (@lukekarrys)
`58c791f` #566 diff when detecting major change from prerelease (#566) (@lukekarrys)
`d30d25a` #559 show type on invalid semver error (#559) (@tjenkinson)
`503a4e5` #548 allow identifierBase to be false (#548) (@lsvalina)
`113f513` #532 identifierBase parameter for .inc (#532) (@wraithgar, @b-bly)
113f513 #532 identifierBase parameter for .inc (#532) (@wraithgar, @b-bly)48d8f8f #530 export new RELEASE_TYPES constant (@hcharley)940723d #538 intersects with v0.0.0 and v0.0.0-0 (#538) (@wraithgar)aa516b5 #535 faster parse options (#535) (@H4ad)61e6ea1 #536 faster cache key factory for range (#536) (@H4ad)f8b8b61 #541 optimistic parse (#541) (@H4ad)796cbe2 #533 semver.diff prerelease to release recognition (#533) (@wraithgar, @dominique-blockchain)3f222b1 #537 reuse comparators on subset (#537) (@H4ad)f66cc45 #539 faster diff (#539) (@H4ad)`d8ef32c` #383 add support for node.js esm auto exports (#383) (@MylesBorins)
GTE0 regexes (#432) (11494f1)bin: get correct value from arg separated by equals (#449) (4ceca76), closes #431
replace deprecated String.prototype.substr()
GTE0 regexes (#432) (11494f1)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add subset(r1, r2) method to determine if r1 range is entirely contained by r2 range.
subset(r1, r2) method to determine if r1 range is entirely
contained by r2 range.Fix handling of includePrelease mode where version ranges like 1.0.0 - 2.0.0 would include 3.0.0-pre and not 1.0.0-pre.
includePrelease mode where version ranges like 1.0.0 - 2.0.0 would include 3.0.0-pre and not 1.0.0-pre.Fix bug where 2.0.0-pre would be included in ^1.0.0 if includePrerelease was set to true.
2.0.0-pre would be included in ^1.0.0 if
includePrerelease was set to true.Nothing published for this version
Add simplifyRange method to attempt to generate a more human-readable range expression that is equivalent to a supplied range, for a given set of vers
simplifyRange method to attempt to generate a more human-readable
range expression that is equivalent to a supplied range, for a given set
of versions.Nothing published for this version
Remove fancy lazy-loading logic, as it was causing problems for webpack users.
Nothing published for this version
Add require('semver/preload') to load the entire module without using lazy getter methods.
require('semver/preload') to load the entire module without using
lazy getter methods.Refactor module into separate files for better tree-shaking
=> functions,
and classes.`928e56d` #591 better handling of whitespace (#591) (@lukekarrys, @joaomoreno, @nicolo-ribaudo)
Expose the token enum on the exports
Coerce numbers to strings when passed to semver.coerce()
rtl option to coerce from right to leftHandle X-ranges properly in includePrerelease mode
Do not throw when testing invalid version strings
Add options support for semver.coerce()
Add semver.compareBuild function
* in semver.intersectsNothing published for this version
`2f8fd41` #585 better handling of whitespace (#585) (@joaomoreno, @lukekarrys)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →