verkit is a fast, zero-dependency SemVer library for ESM and TypeScript with functional, tree-shakeable APIs.

Stars

100

7-day growth

+12

Forks

1

Open issues

1

License

MIT

Last updated

2026-07-28

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It benchmarks faster than node-semver in all tested operations and reduces bundle size by up to 60%, making it ideal for modern JavaScript projects.

Who it is for

  • ESM and TypeScript developers
  • npm package maintainers
  • developers building monorepo tooling
  • performance-conscious JavaScript engineers

Use cases

  • Parsing, comparing, and incrementing semantic versions in package managers or CLI tools
  • Validating and satisfying version ranges in dependency resolvers
  • Coercing version strings from mixed input in CI/CD scripts
  • Building immutable or mutable SemVer operations in Node.js/Deno/Bun applications

Strengths

  • Zero runtime dependencies
  • Up to 2.26× faster than node-semver in common operations according to benchmarks
  • 26% smaller CDN bundle and 60% smaller tree-shaken imports
  • First-class TypeScript declarations with pure ESM

Considerations

  • ESM-only; no CommonJS or CLI support, which may limit compatibility with older Node.js or CJS-only environments
  • Requires migrating from node-semver with several API renames and behavioral differences
  • Does not support NODE_DEBUG output or all error messages from node-semver

README quick start

verkit

[![Open on npmx][npmx-version-src]][npmx-href] [![npm downloads][npmx-downloads-src]][npmx-href] [![Unit Test][unit-test-src]][unit-test-href]

Fast, zero-dependency SemVer for ESM and TypeScript, with functional, tree-shakeable APIs.

Features

  • ✅ Complete SemVer version and range toolkit.
  • 🚀 Faster than [node-semver] across tested operations.
  • 📦 Pure ESM with zero runtime dependencies.
  • 💙 First-class TypeScript declarations.
  • 🌳 Functional, tree-shakeable named exports.
  • 🔁 Mutable SemVer and SemVerRange records.
  • ⚡ 26.0% smaller for full CDN imports.
  • 🪶 60.1% smaller with common bundled imports.
  • 🛡️ Immutable collection operations.

Install

npm add verkit

Versions

import {
  coerce,
  increment,
  normalize,
  normalizeFull,
  parse,
  truncate,
} from 'verkit'

const version = parse('1.2.3-rc.1+sha.abc')
version.patch = 4

normalizeFull(version) // '1.2.4-rc.1+sha.abc'
normalize(version) // '1.2.4-rc.1'
increment(version, 'minor') // '1.3.0'
truncate(version, 'patch') // '1.2.4'
coerce('release 42.6.7.9', { rtl: true }) // '6.7.9'

Version APIs accept strings or mutable SemVer objects returned by parse. normalizeFull keeps build metadata; normalized, incremented, and truncated versions omit it.

Comparison

import { compare, compareBuild, sortReversed } from 'verkit'

compare('1.0.0+one', '1.0.0+two') // 0
compareBuild('1.0.0+one', '1.0.0+two') // -1
sortReversed(['1.0.0', '2.0.0']) // ['2.0.0', '1.0.0']

compare ignores build metadata; compareBuild uses it as a tie-breaker.

Ranges

import {
  findMaxSatisfying,
  normalizeRange,
  parseRange,
  satisfies,
} from 'verkit'

const range = parseRange('^1.2.3')

normalizeRange(range) // '>=1.2.3 
  
    
  


## License

[MIT](./LICENSE) © 2026-PRESENT [Kevin Deng](https://github.com/sxzz).

Parts of the implementation and test fixtures are derived from [node-semver]
under the ISC license; see [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md).



[npmx-version-src]: https://npmx.dev/api/registry/badge/version/verkit
[npmx-downloads-src]: https://npmx.dev/api/registry/badge/downloads-month/verkit
[npmx-href]: https://npmx.dev/verkit
[node-semver]: https://github.com/npm/node-semver
[unit-test-src]: https://github.com/sxzz/verkit/actions/workflows/unit-test.yml/badge.svg
[unit-test-href]: https://github.com/sxzz/ver

Description

Fast, zero-dependency SemVer for ESM and TypeScript, with functional, tree-shakeable APIs.

Related repositories

Similar projects matched by category, topics, and programming language.

MADEVAL
Featured
MADEVAL GitHub avatar

ReadSightJS

A zero-dependency Node.js library that measures text readability across 86 languages using 17 different formulas, including language-specific coefficients and TeX hyphenation for syllable counting.

AI & Machine LearningLarge Language Models
25
TanStack
Featured
TanStack GitHub avatar

router

TanStack Router is a type-safe, data-driven React router with built-in caching, prefetching, and nested layouts, while TanStack Start extends it into a full-stack SSR framework.

Web DevelopmentFrontend Frameworks
14,861
makecindy
Featured
makecindy GitHub avatar

cindy

Cindy is an open-source AI agent that runs locally on your machine, integrates multiple AI harnesses and models, and provides memory, skills, and automation to perform real work in your projects and apps.

AI & Machine LearningLarge Language Models
958