Axios

Promise-based HTTP client for the browser and Node.js with interceptors, automatic transforms, and cancellation

Library
npm
v1.20.0
109,305 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
95 /100 Excellent
Development Activity 100
Maintenance 96
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
86 /100 Excellent
Architecture 88
Code Quality 90
Innovation 82
Learning Curve 85

Axios is the most widely used promise-based HTTP client for JavaScript, running unmodified in both browsers (via XHR/fetch) and Node.js (via the http module). It wraps the differences between these environments behind a single consistent API, so a request written once works the same way whether it executes client-side or server-side.

Beyond basic GET/POST calls, Axios provides request and response interceptors, automatic JSON serialization/deserialization, client-side XSRF protection, upload/download progress tracking, request cancellation via AbortController, and configurable instances with their own defaults. Its long history (since 2014), massive adoption (100M+ weekly downloads), and near-universal familiarity make it a default choice for teams that want a battle-tested HTTP layer without hand-rolling fetch boilerplate.

What You Get

  • A single axios instance with .get/.post/.put/.patch/.delete method aliases plus a callable axios(config) form
  • Request and response interceptor chains for adding auth headers, logging, retries, or transforming payloads centrally
  • Automatic JSON request/response transforms and automatic multipart/form-urlencoded serialization
  • Built-in request cancellation via native AbortController (and the deprecated CancelToken for legacy code)
  • Per-instance configuration via axios.create(), so different base URLs/headers/timeouts can coexist in one app
  • First-class TypeScript typings shipped in the package itself (index.d.ts / index.d.cts)
  • Upload/download progress events and client-side CSRF (XSRF) token handling out of the box

Common Use Cases

  • Calling REST/JSON APIs from a frontend SPA where fetch’s verbosity (manual JSON parsing, no built-in timeout) is a pain point
  • Sharing one HTTP client configuration (base URL, auth header, interceptor-based token refresh) across a Node.js backend service
  • Uploading files with progress bars using the onUploadProgress callback and automatic multipart/form-data handling
  • Centralizing error handling and retry logic for all outbound API calls through a single response interceptor
  • Isomorphic code that needs to issue identical HTTP requests in both a Next.js server component and the browser bundle

Under The Hood

Architecture

The library is organized around lib/core/Axios.js, whose _request() method is the heart of the request pipeline: it merges the instance’s defaults with the per-call config (mergeConfig.js), flattens per-method headers into a single AxiosHeaders instance, builds an interceptor chain (InterceptorManager.js) that wraps dispatchRequest.js, and executes that chain as a promise sequence (or synchronously first if all interceptors are marked synchronous, an optimization for hot paths). dispatchRequest.js transforms the outgoing body via transformData.js, resolves the correct transport through lib/adapters/adapters.js (http.js for Node, xhr.js for browsers, fetch.js for the newer Fetch-based adapter), invokes it, and transforms the response body back. lib/axios.js is the composition root: it instantiates a default Axios instance via createInstance(), then bolts on static helpers (isCancel, CancelToken, mergeConfig, AxiosHeaders, HttpStatusCode) and the .create() factory for spinning up independently configured instances.

Tech Stack

Axios is dependency-light for a library this widely used: runtime dependencies are follow-redirects (HTTP redirect handling for the Node adapter), form-data (multipart bodies in Node), https-proxy-agent, and proxy-from-env. The source is plain ES modules ("type": "module" in package.json) with no build-time framework; distribution bundles for CJS, ESM, and browser targets are produced via Rollup (rollup.config.js) and Gulp (gulpfile.js), with Babel used to transpile down for older browser targets. TypeScript typings are hand-maintained (index.d.ts/index.d.cts) rather than generated from source, since the implementation itself is plain JS.

Code Quality

The test suite is substantial and organized by concern: tests/unit/core, tests/unit/adapters, tests/unit/helpers, tests/unit/cancel, and tests/unit/utils hold roughly 98 test files, run through Vitest across both a Node (‘unit’) project and a real-browser (‘browser’/‘browser-headless’) project via @vitest/browser. There’s also a dedicated tests/smoke suite that verifies the published CJS/ESM/Deno/Bun builds actually load correctly post-packaging — a good sign for a package whose main risk is bundler/runtime interop, not core logic. Error handling is deliberate rather than an afterthought: AxiosError.js implements a toJSON()-safe, circular-reference-safe config serializer with an explicit secret-redaction pass (redactConfig), and Axios.js’s request() wrapper carefully preserves and extends stack traces across the async boundary so errors thrown deep in an adapter still point back to the caller’s call site.

API Design The public surface is deliberately small and fetch-adjacent: call axios(url) or axios.get/post/put/patch/delete(url, [data], [config]), get back a promise that resolves to a normalized { data, status, headers, config } response or rejects with a typed AxiosError. Interceptors (axios.interceptors.request.use(...)) are the main extension point and read naturally as middleware. The one wrinkle for newcomers is the historical split between the legacy CancelToken cancellation API (deprecated but still present) and the modern AbortController support — the docs steer users to the latter, but both remain in the API surface for backward compatibility.

Used by 190 apps in this directory

TypeScript
96%
Other

Amplication

AI Code Assistants · Automation · Developer Tools

16,009

Create production-ready backend services with your organization's standards baked in — generating NestJS, Prisma, and GraphQL code that you own and control.

View details
57
Repo Health
84
Technical
60
Dependency
Built with
TypeScript 96%
Updated 4 months ago
Rust
44%
MIT

Anarlog

AI Assistants · Note Taking · Productivity

9,565

Anarlog is an open-source, local-first AI meeting notetaker that records, transcribes, and summarizes meetings entirely on your device — no cloud lock-in, no mandatory account, and every note saved as a plain markdown file you own forever.

View details
86
Repo Health
77
Technical
65
Dependency
Built with
Rust 44%
TypeScript 41%
Updated 5 days ago
Go
61%
Apache 2.0

Apache Answer

Community

15,700

Open-source Q&A platform for communities, help centers, and knowledge bases with AI assistant and plugin extensibility

View details
89
Repo Health
78
Technical
68
Dependency
Built with
Go 61%
TypeScript 36%
Updated 1 weeks ago
TypeScript
68%
Apache 2.0

Appsmith

Automation · Developer Tools · No Code Platforms

41,113

Open-source low-code platform to build admin panels, dashboards, and internal tools connected to any database or API.

View details
94
Repo Health
79
Technical
63
Dependency
Built with
TypeScript 68%
Java 22%
Updated 6 days ago
Python
59%
Apache 2.0

argilla

AI Development · Data Engineering

5,175

Collaborate on high-quality AI training data with a self-hosted annotation platform built for LLMs, NLP, and multimodal models.

View details
65
Repo Health
81
Technical
61
Dependency
Built with
Python 59%
Jupyter Notebook 21%
Updated 1 weeks ago
Go
82%
Apache 2.0

Authelia

Authentication · Security

29,393

OpenID Certified SSO and MFA portal for securing self-hosted web applications behind reverse proxies.

View details
91
Repo Health
81
Technical
72
Dependency
Built with
Go 82%
TypeScript 15%
Updated 5 days ago
Go
58%
Apache 2.0

Authgear

Authentication

2,123

Open-source, self-hostable authentication platform with passkeys, biometric login, SSO, MFA, and GraphQL admin API — a full Auth0/Clerk/Firebase alternative for SaaS and mobile apps.

View details
89
Repo Health
81
Technical
65
Dependency
Built with
Go 58%
HTML 21%
TypeScript 18%
Updated 6 days ago
JavaScript
100%
Other

Automatisch

Automation · No Code Platforms

13,999

Self-hosted, no-code workflow automation that keeps your data on your own servers—a privacy-first alternative to Zapier with 90+ integrations.

View details
45
Repo Health
78
Technical
62
Dependency
Built with
JavaScript 100%
Updated 8 months ago
PHP
74%
MIT

Bagisto

Analytics · Ecommerce

28,271

Open-source Laravel eCommerce platform for building multi-vendor marketplaces, B2B stores, headless commerce, and AI-powered storefronts.

View details
94
Repo Health
75
Technical
65
Dependency
Built with
PHP 74%
Blade 21%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers