make-fetch-happen
npmv16.0.1Opinionated, caching, retrying fetch client
Adopt with care
make-fetch-happen is usable, with caveats. Pulls in 29 transitive packages, about 3.8 MB installed (at least — some of the tree is still being crawled).
- AAdoption: grade A, Excellent.
43.3M downloads per week and 1 known dependents.
- AMaintenance: grade A, Excellent.
Last published 57 days ago. 13 releases in the last 2 years.
- CWeight: grade C, Fair — worth a look.
Pulls in 29 transitive packages, about 3.8 MB installed (at least — some of the tree is still being crawled).
- ASupply chain: grade A, Excellent.
No install scripts, 4 maintainers, and a contained dependency surface.
- ALicense: grade A, Excellent.
ISC — permissive, with no copyleft found in the dependency tree.
Grades are computed deterministically from registry metadata collected by PackageGraph — downloads, dependents, publish dates, the resolved dependency tree, maintainer count, and declared licenses. No third-party scores are used.
Install cost
What you actually take on by adding make-fetch-happen to a project.
Runtime packages this one declares itself.
Distinct packages in the full runtime tree, deduplicated the way a package manager would.
Unpacked size of this package plus its entire runtime tree.
Longest resolved dependency chain below this package.
Part of this dependency tree has not been crawled yet, so these figures are a lower bound rather than a final total.
Licenses in the dependency tree
Every license you inherit by installing make-fetch-happen, not just its own. Check this before a legal review, not after.
Compatibility
- Node.js
- node ^22.22.2 || ^24.15.0 || >=26.0.0
- Module format
- CommonJS only
- TypeScript
- No bundled types
- Install scripts
- None
Quick start
A usage example from the make-fetch-happen README.
const fetch = require('make-fetch-happen').defaults({
cachePath: './my-cache' // path where cache will be written (and read)
})
fetch('https://registry.npmjs.org/make-fetch-happen').then(res => {
return res.json() // download the body as JSON
}).then(body => {
console.log(`got ${body.name} from web`)
return fetch('https://registry.npmjs.org/make-fetch-happen', {
cache: 'no-cache' // forces a conditional request
})
}).then(res => {
console.log(res.status) // 304! cache validated!
return res.json().then(body => {make-fetch-happen vs the alternatives
Packages solving a similar problem in the npm ecosystem, compared on the signals that drive an adoption decision.
| Package | Weekly downloads | Dependents | License | Last release |
|---|---|---|---|---|
| make-fetch-happenthis page | 43.3M | 1 | ISC | 1 month ago |
| cacache | 0 | 1 | ISC | 4 hours ago |
| @mswjs/interceptors | 0 | 1 | MIT | 4 hours ago |
| node-fetch | 0 | 9 | MIT | 4 hours ago |
| undici | 0 | 15 | MIT | 4 hours ago |
| fresh | 121.2M | 3 | MIT | 4 hours ago |
Dependencies
Declared by make-fetch-happen v16.0.1. Runtime dependencies are installed with the package; dev dependencies are not.
Runtime (12)
Dev (6)
Used by
Popular packages that depend on make-fetch-happen.
Relationship graph
Dependencies (left) and dependents (right) of make-fetch-happen.
Frequently installed together
An AST-based pattern checker for JavaScript.
Native Abstractions for Node.js: C++ header for Node 0.8 -> 26 compatibility
Given a possibly case-variant version of an existing filesystem path, returns the case-exact, normalized version as stored in the filesystem.
Parse sass files and extract a graph of imports
An optionally-asynchronous forEach with an interesting interface.
Lodash modular utilities.
Non-blocking stdout stream
Cross platform child_process#spawn and child_process#spawnSync
the most correct and second fastest glob implementation in JavaScript
A globbing fs.watch wrapper built from the best parts of other fine watch libs.
CLI app helper
Release history
12 releases in the last two years, typically about 30 days apart.
| Version | Published | Size | License |
|---|---|---|---|
| 15.0.6 | 1 month ago | 52 KB | ISC |
| 16.0.1latest | 1 month ago | 52 KB | ISC |
| 16.0.0 | 2 months ago | 52 KB | ISC |
| 15.0.5 | 4 months ago | 52 KB | ISC |
| 15.0.4 | 4 months ago | 52 KB | ISC |
| 15.0.3 | 8 months ago | 52 KB | ISC |
| 15.0.2 | 10 months ago | 52 KB | ISC |
| 15.0.1 | 11 months ago | 52 KB | ISC |
| 15.0.0 | 1 year ago | 52 KB | ISC |
| 14.0.3 | 1 year ago | 52 KB | ISC |
| 14.0.2 | 1 year ago | 52 KB | ISC |
| 14.0.1 | 1 year ago | 52 KB | ISC |
| 14.0.0 | 1 year ago | 52 KB | ISC |
| 13.0.1 | 2 years ago | 52 KB | ISC |
| 13.0.0 | 2 years ago | 51 KB | ISC |
Overview
make-fetch-happen is an npm package that opinionated, caching, retrying fetch client. It is extremely widely used, with about 43.3M downloads per week and 1 known dependents in the graph. The latest version is 16.0.1, released under the ISC license.
Who should use it
Teams working in the npm ecosystem who need opinionated, caching, retrying fetch client and value a battle-tested, widely-adopted solution.
When not to use it
Consider an alternative if you need to minimize your dependency tree, have first-class TypeScript types out of the box, or if a more actively-maintained option better fits your npm stack.
Pros
- Large, well-established user base (43.3M weekly downloads).
- Clear open-source license (ISC).
Cons
- Large dependency tree (18 direct dependencies) increases install size and audit surface.
- No bundled TypeScript types (may require a separate @types package).
Auto-generated from collected registry metadata. No external claims are inferred.
Maintainers
Frequently asked questions
Should I use make-fetch-happen?
make-fetch-happen is usable, with caveats. Pulls in 29 transitive packages, about 3.8 MB installed (at least — some of the tree is still being crawled).
How do I install make-fetch-happen?
Run `npm install make-fetch-happen` to add make-fetch-happen to your npm project.
How many dependencies does make-fetch-happen have?
make-fetch-happen declares 18 direct dependencies and pulls in 29 packages in total once its runtime tree is resolved totalling about 3.8 MB on disk.
What license is make-fetch-happen released under?
make-fetch-happen is distributed under the ISC license. Its dependency tree also includes: BSD-2-Clause, BlueOak-1.0.0, ISC, MIT.
How popular is make-fetch-happen?
make-fetch-happen has approximately 43,273,493 downloads per week and 1 known dependent packages.
Is make-fetch-happen still maintained?
The most recent release of make-fetch-happen (v16.0.1) was published 1 month ago.
Does make-fetch-happen run install scripts?
No. make-fetch-happen does not define preinstall, install, or postinstall scripts, so installing it does not execute publisher-supplied code.