mrkeyoor.com_
Tue 01 Sept 17:21 UTC
Webevaluationupdated 01 Sept 2026

axios review

Axios is an HTTP client for JavaScript and TypeScript that uses one request API in browsers and server-side runtimes. It handles common work around requests, including interceptors, cancellation, progress events, forms, errors, proxies, and response conversion.

trackingstars / 7d
Verdict

Our Axios build finished in 17 seconds, but 8 of 1,062 tests failed after 135 seconds, so contributors should reproduce the timeout failures before changing this commit. Axios remains a good default for teams that genuinely need one mature client across browsers and Node, especially when interceptors, progress, and form handling save application code. Prefer Fetch or a narrower Node client when those features are absent, and set timeouts plus body limits before production use.

We ran it

Lab card: what happened when we ran axiosScreenshot of axios (axios-http.com)
Install✓ · 20s626 packages · 199 MB
Build✓ · 17s
Tests✗ · 135s1054 passed · 8 failed of 1062 (vitest)
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo466 files~41,264 lines of source · 3.6 MB · 8 CI workflows · tests dir

Answers from our run

Does axios build from source?

Dependencies installed in 20 seconds (626 packages), and the build succeeded in 17 seconds. We cloned commit fede1d1 into a clean Debian container with 3 CPUs and no project-specific setup.

Do axios's tests pass?

Not all of them: 1054 of 1062 passed and 8 failed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Does axios have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use axios?

Small modern applications that only need a few JSON requests: the platform Fetch API avoids Axios's adapter, config-merging, and interceptor semantics.

What are the alternatives to axios?

Ky, Got, Undici. Our Axios build finished in 17 seconds, but 8 of 1,062 tests failed after 135 seconds, so contributors should reproduce the timeout failures before changing this commit.

Setup4/520-second install and 17-second build; 8 timeout failures remain
Docs5/5Adapters, errors, security defaults, forms, and types are documented
Community5/5109,195 stars with active issue and pull request handling
Maturity4/5Stable v1 API, with current Node agent and proxy reports to watch

Who it’s for

Browser and Node.js teams that want the same request configuration and error model on both sides of an application.
Applications that use interceptors for authentication, tracing, refresh logic, or shared response handling.
Clients that need upload or download progress, automatic form serialization, request cancellation, or configurable adapters.
Maintainers supporting a mature Axios codebase who value stable v1 behavior and detailed migration notes.

Who it’s NOT for

Small modern applications that only need a few JSON requests: the platform Fetch API avoids Axios's adapter, config-merging, and interceptor semantics.
Browser products that must support Internet Explorer or other old engines without their own compatibility work: the README lists only current Chrome, Firefox, Safari, Opera, and Edge.
Node.js services that routinely serialize AxiosError objects containing shared HTTP agents: open issue 11145 reports toJSON() exhausting the heap under concurrent failures.
Corporate proxy deployments that cannot regression-test custom CA handling across upgrades: open issue 11176 reports that the CA from httpsAgent was dropped through an HTTP proxy tunnel in versions 1.17.0 and 1.18.0.

Setup reality

Our source checkout at commit fede1d1 installed 626 packages in 20 seconds and used 199 MB. The build passed in 17 seconds. Tests failed with exit 1 after 135 seconds: Vitest reported 1,054 passed and 8 failed out of 1,062, with the log tail showing repeated 5,000 ms timeouts.

Using Axios in an application needs no account, API key, daemon, or database beyond the service you call. Contributors should notice the repository's .npmrc: dependency lifecycle scripts are disabled, so Husky hooks need a documented manual rebuild after the first checkout.

Runtime behavior varies by XHR, Fetch, and Node HTTP adapters. The README supports current browsers, calls HTTP/2 experimental, and says HTTP/2 redirects are unsupported. Production clients should set a timeout and explicit content limits because both defaults are unlimited or disabled.

Axios v1.20.0 earns its place when one client must span runtimes

Axios v1.20.0 gives browser and server code one Promise-based request API across XHR, Fetch, and Node HTTP adapters. Instances carry a base URL, defaults, and shared headers; interceptors can add authentication or inspect responses; AbortController cancels work. Axios also serializes JSON, URL-encoded bodies, and multipart forms, reports transfer progress, and includes TypeScript definitions. That is more machinery than a basic fetch() call, yet it can remove a fair amount of repeated glue from an application that uses several of those features.

The source is smaller than its API surface suggests. Our checkout contained 466 files, about 41,264 lines of source, and occupied 3.6 MB before dependencies. Axios has no server process and stores no application data. Your code imports a library and sends requests to services you choose. The operational burden therefore sits in configuration: define instances by trust domain, keep authorization headers scoped to the right host, choose an adapter intentionally when behavior matters, and make cancellation and error handling part of each call path.

Axios v1.20.0 leaves timeout and response caps to the caller

Axios v1.20.0 defaults the request timeout to 0, which means a stalled request can wait indefinitely. The README tells production users to set one. Its Node and Fetch content limits also default to unlimited values, and the security notice warns that a small compressed response can expand until the process runs out of memory. These choices preserve compatibility and avoid surprising limits on legitimate transfers. They also mean a shared client instance should carry timeouts, response caps, request-size caps, redirect rules, and secret-header policy before feature teams start using it.

Repository setup was direct in our clean container: npm installed 626 packages in 20 seconds and used 199 MB on disk. The build then passed in 17 seconds. Those are contributor-checkout figures, not the dependency cost of adding the published Axios package to an application. The checkout's .npmrc disables lifecycle scripts from every dependency as a supply-chain measure. That also suppresses Axios's own prepare hook, so contributors must run the documented Husky rebuild once if they want local Git hooks.

What happened when we ran it

Our run at commit fede1d1 completed installation in 20 seconds and the build in 17 seconds. Npm audit found 0 known vulnerabilities at every listed severity. The source scan found 8 CI workflow files and a tests directory, with no Dockerfile. Our measurement setup was a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets. The repository mechanics therefore worked through compilation, while the full test result needs a narrower reading.

Tests ended with exit 1 after 135 seconds. Vitest reported 1,054 passed and 8 failed out of 1,062, across 56 passing test files and 2 failing files. The log tail repeatedly says a test exceeded 5,000 ms. It does not identify an application bug, a missing system package, or a single shared cause for all 8 failures. The defensible finding is that the suite did not pass in our stated sandbox. Maintainers should rerun the named files and preserve the complete failure output before deciding what to change.

Interceptor order and adapter choice can change request behavior

Axios v1.20.0 runs request interceptors in reverse registration order and response interceptors in registration order. A synchronous request interceptor that throws calls its paired rejection handler; if that handler returns normally, Axios may continue with the last valid config. The README advises throwing or returning a rejected Promise when validation must block a request. These details matter in authentication and policy code. A tidy interceptor chain can become unsafe when its order is assumed rather than tested, especially after several packages register their own handlers.

Adapter differences deserve the same attention. The Fetch adapter arrived in v1.7.0, custom Fetch support in v1.12.0, and Node HTTP/2 support in v1.13.0. The README still labels HTTP/2 experimental and says redirects are unsupported there. Our 135-second test run covered 1,062 cases overall, but 8 failures prevent treating the checkout as clean. Test the adapter your deployment selects, including proxy, redirects, progress, cancellation, compression limits, and any custom Request or Response constructors.

Open Node reports concern agents, proxies, and error serialization

Open issue 11145 reports that 25 requests failed concurrently and exhausted the Node heap when AxiosError.toJSON() serialized config containing shared http.Agent and https.Agent objects. The reporter says versions from 1.2.0 through the then-current v1.x code were affected. Open issue 11176 describes a different production concern: custom CA options from httpsAgent were reportedly lost while tunneling through a plain HTTP proxy in versions 1.17.0 and 1.18.0. Both reports are specific enough to turn into upgrade checks.

Maintenance activity is current. GitHub recorded 109,195 stars, 88 combined issues and pull requests, and a last push on September 1, 2026. Release v1.20.0 was published on August 24 with runtime-option hardening, Node socket-memory work, XHR fixes, and tooling updates. Our audit found 0 known vulnerabilities in the 626-package source checkout, but that result does not close behavior reports. Axios is mature and well documented; its wide runtime surface rewards teams that pin versions and test the paths they actually use.

Alternatives

ProjectWhat it isPick it when
KyA small Fetch-based client with hooks, retries, timeouts, and JSON helpers.pick this instead when modern Fetch environments cover every target and a smaller API is preferable.
GotA Node.js HTTP client with retries, hooks, streams, pagination, and detailed timing data.pick this instead when the application is Node-only and transport controls matter more than browser parity.
UndiciNode's HTTP/1.1 client and Fetch implementation, with pooling and lower-level dispatch APIs.pick this instead when you want the Node platform's Fetch stack or direct control over connection pools.

What people are saying

  1. [github-trending] axios/axios

Sources

  1. Axios README and request configuration reference
  2. Axios v1.20.0 release
  3. Axios repository activity and metadata
  4. AxiosError toJSON heap exhaustion report
  5. Custom CA proxy tunnel report
  6. Null URL behavior report

More web reviews

super-productivity · Graphite · fastify · tabler · go-zero · ruffle · the whole board →