Blocks devs from removing their own npm packages

Introduction

The npm (Node Package Manager) registry has implemented significant changes to how package removal works, effectively preventing developers from removing their own published packages in most scenarios. This policy change has far-reaching implications for the JavaScript ecosystem and the millions of projects that depend on npm packages.

Background: The Left-Pad Incident

To understand why npm restricts package removal, we need to look back at the infamous “left-pad” incident of 2016. A developer, frustrated with a trademark dispute, unpublished his packages from npm — including a tiny 11-line package called “left-pad.” This single action broke thousands of builds worldwide, including those of major companies like Facebook, Airbnb, and Netflix.

The incident exposed a fundamental fragility in the JavaScript ecosystem: the dependency chain is only as strong as its weakest link.

Current npm Package Removal Policy

Following the left-pad incident, npm implemented strict rules around package removal:

Within 72 Hours of Publishing

  • You can unpublish a package if no other packages depend on it
  • The package must not have been downloaded more than a certain threshold
  • This provides a grace period for accidental publications

After 72 Hours

  • Packages generally cannot be unpublished
  • You must contact npm support for removal in exceptional cases (security vulnerabilities, legal issues)
  • Even then, the package name may be reserved to prevent typosquatting attacks

Why This Policy Exists

The restriction exists to protect the broader ecosystem:

  • Supply Chain Stability — Millions of projects depend on npm packages. Removing a popular package can cascade into widespread build failures
  • Security — If a popular package name becomes available, malicious actors could publish a compromised version under the same name
  • Reliability — Developers need confidence that their dependencies will remain available

Alternatives to Unpublishing

Instead of removing a package, npm recommends:

  • Deprecation — Mark the package as deprecated with a message explaining why and suggesting alternatives
  • Transfer Ownership — Transfer the package to another maintainer or organization
  • Publish a Final Version — Release a version that warns users and points to alternatives

Implications for Developers

This policy means developers should think carefully before publishing to npm:

  • Use scoped packages (@username/package-name) for private or experimental work
  • Test thoroughly before publishing
  • Consider the long-term maintenance commitment of publishing a public package
  • Be aware that once published and depended upon, your package becomes part of the ecosystem infrastructure

Conclusion

While the restriction on package removal may seem limiting to individual developers, it serves the greater good of the JavaScript ecosystem. The npm registry hosts over 2 million packages that power countless applications worldwide. Ensuring the stability and reliability of this ecosystem benefits everyone — from individual developers to large enterprises. Understanding these policies is essential for anyone publishing packages to npm.

About the Author

You may also like these