npmpulse

Where the record begins

npm's downloads API answers for every day from 2015-01-10, and reports zero for all of them until 2015-02-27, when its real records start. 40 of the packages npmpulse tracks begin on exactly that day, because they already existed when npm began counting.

The other 39 begin later, and how they begin is the interesting part. A package that is genuinely new starts at nothing much and climbs. A package whose record begins at hundreds of thousands of downloads a day already existed, and what is missing is npm's history rather than its usage. npm names also get reused, so a record can begin years before the package anyone means by that name.

The first day of each record, and what it was worth
PackageFirst dayDownloads that day
yup2015-02-2810
remix2015-02-288
redux2015-02-281
react-dom2015-02-281
astro2015-03-011
cypress2015-03-011
lit2015-03-024
playwright2015-03-021
tslib2015-03-021
rollup2015-05-1424
ajv2015-05-2961
tsx2015-08-2016
rxjs2015-09-021
preact2015-09-1118
cross-env2015-10-0125
mobx2016-02-1918
prisma2016-06-03146
styled-components2016-08-1623
fastify2016-10-0719
immer2016-10-0717
nuxt2016-10-2618
svelte2016-11-1714
prettier2017-01-10863
luxon2017-05-2417
nanoid2017-08-0644
tailwindcss2017-10-0616
esbuild2017-11-2617
dayjs2018-04-1029
solid-js2018-04-2522
undici2018-07-2621
clsx2018-12-2420
zustand2019-04-0942
alpinejs2019-12-1820
zod2020-03-0717
vite2020-04-21192
jotai2020-08-1140
drizzle-orm2021-09-0925
express2021-10-012.9M
vitest2021-12-03208

1 of those 39 begin with more than ten thousand downloads in a day, which no package does on the day it launches. The rest begin quietly, and the figure on its own cannot say whether that was a launch nobody noticed or a name with an earlier life — which is why the pages state the number and leave the conclusion to you.

The 40 packages that begin on 2015-02-27 are the ones the rest of this site leans on: they are the only records that cover npm's whole measured history. See how they compare with today.

Where these numbers come from

Download counts are npm's own, published through its downloads API. They count installs rather than people, so they include CI, mirrors and repeated installs, and a package pulled in as a dependency counts for that package too.

npm's API returns at most 549 days for a single package and 365 when several are compared, and truncates an over-long range rather than refusing it. npmpulse asks for the whole span in 365-day chunks and stitches the answers together, which is what makes a chart that starts in 2015 possible at all.

npm reports 0 for every package from 2015-01-10 until 2015-02-27, when its real records begin; those leading zeros are trimmed rather than charted. Individual days it lost entirely are interpolated, and the most recent day or two, which it has not finalised, is dropped. The monthly figures here are complete calendar months, so a package that started mid-month begins with the following one.

A handful of months are inflated in npm's own figures. svelte's 2022-11-23 records 5.0M downloads against a norm nearer 80K, and November 2022 is a spike in several packages at once; they are left alone here, because they are what the source says, but a one-month jump is treated as a spike rather than as a change of fortune. That is why the comparisons below only call a lead change a lead change when it held for a second month.

A package's record can also begin before the package did: npm names get reused. Where a first day is a handful of downloads, that is what you are looking at — the earlier life of the name rather than a slow launch. Where it is hundreds of thousands, the opposite is true, and what is missing is upstream history rather than usage.

Snapshot of 2026-10-13. Figures run through 2026-10-11.