Back to the archive

The encyclopedia · Software & IT · Technical decision · 2016

An 11-line JavaScript package was deleted and broke builds across the internet

In 2016 a developer unpublished his tiny npm package 'left-pad' after a dispute. Thousands of projects depended on it, and builds broke across the internet.

npm · 2016-03-22

What happened

On March 22, 2016, an independent programmer named Azer Koçulu unpublished all 273 of the packages he had published to npm, the default package manager for JavaScript and Node.js. Among them was a tiny package called left-pad — just 11 lines of code that pads the start of a string with characters. It was trivial, but it had been downloaded more than 15 million times, because thousands of other projects used it as a dependency.

The deletion was the climax of a petty but revealing dispute. Koçulu had published a package called 'kik'; the company behind the Kik Messenger app asked him to give up the name, and when he refused, npm itself transferred the package to the company. Frustrated, Koçulu asked npm's CEO how to delete all his packages — and was given the command to do it. He ran it, removing left-pad along with everything else.

The effect was immediate and outsized. Because so many popular tools depended on left-pad — directly or indirectly, including the Babel transpiler, the Webpack bundler and the React framework — builds and installs started failing across the JavaScript ecosystem, with 404 errors rippling through companies from Facebook and Netflix to PayPal and Spotify. npm restored the package within hours and later changed its rules so that widely-used packages couldn't be removed so easily. For a few hours, an 11-line function had broken a large part of the internet.

Why it happened

  • Modern JavaScript projects depend on vast trees of tiny third-party packages, so removing one small package can cascade through thousands of builds.
  • left-pad was used (often indirectly) by hugely popular tools like Babel, Webpack and React, so its removal broke projects that had never heard of it.
  • npm initially let a single author unpublish a widely-depended-on package at will, with no safeguard for downstream users.
  • The whole episode was triggered by a governance dispute over a package name, showing how much critical infrastructure rested on informal, individual control.
What it costhours of broken builds across the webembarrassing

The lesson

A codebase built on thousands of tiny packages can break when one is removed. left-pad was 11 lines, yet much of the JavaScript world depended on it. Know your dependencies and pin the critical ones.

Aftermath

npm restored left-pad within hours and changed its policy so that packages older than 24 hours with dependents can't be unpublished. The incident became a landmark case in software supply-chain fragility, highlighting how much of the modern internet rests on a thin layer of tiny, often-unmaintained open-source packages controlled by individuals — a theme later echoed in other supply-chain incidents and attacks. For developers, the lessons are to audit your dependency tree, pin and vendor the packages you can't live without, and not assume 'free and popular' means 'reliable and permanent.'

Sources

spotted an error? The club wants to know.

Comments · 0

    Sign in to join the comments.

    More like this

    Somewhere, someone solved the problem this company failed at. 2nd Opinion →