An abandoned npm package is more dangerous than a vulnerable-but-maintained one. A maintained package with a CVE today is a fixed package next week. An abandoned package with no CVE today is a future critical CVE that nobody will patch. Reviewers know this. Your dependency report should know it too.

Why abandonment matters more than current CVE count

Take two packages, both used at depth 2 in your tree:

Today they look identical to a basic CVE scanner. In practice, the second is a ticking time bomb: any future vulnerability discovered in it will sit unpatched, and you will have to fork, patch, or migrate under emergency pressure.

The signals that mark a package as abandoned

No single signal is conclusive. The combination is.

SignalThreshold (warn)Threshold (red)
Last commit on main branch> 12 months> 24 months
Last npm publish> 12 months> 24 months
Open issues never triaged (oldest)> 18 months> 36 months
Active maintainers in last 12 months< 20
Explicit deprecation noticeany
Repository archived on GitHubany

A "no recent commits" alone isn't damning. Some libraries (e.g. small utilities, polyfills) are finished. Cross-check with maintainer count and explicit deprecation before flagging.

Free signals you can pull yourself

What auditors do with this information

For each abandoned package in your tree, an auditor will want:

  1. Confirmation of the abandonment status (last commit, maintainer count)
  2. Your replacement plan (fork, swap, remove) with a deadline
  3. If you cannot replace it before ship: a documented compensating control (sandboxing, input validation, restricted code path)

See every abandoned package in your tree

DepTriage flags last-commit-age and maintainer count for every dependency in your lockfile.

Run a scan →

FAQ

Is a "frozen" package always abandoned?

No. Some libraries are deliberately stable — small utilities, well-defined polyfills. Combine the signals; do not flag on commit-age alone.

What's the cheapest action when I find an abandoned dependency?

If you only call one or two functions of it, copy those functions into your code and remove the dependency. This is faster than forking and ends the future risk entirely.

Does npm deprecate remove the package?

No — it adds a warning that appears on install. Deprecated packages remain installable. You still need to act on them.

Keep reading