Releases: axios/axios
v1.16.0
v1.16.0 — May 2, 2026
This release adds support for the QUERY HTTP method and a new ECONNREFUSED error constant, lands a substantial wave of HTTP, fetch, and XHR adapter bug fixes around redirects, aborts, headers, and timeouts, and welcomes 23 new contributors.
⚠️ Notable Changes
A handful of fixes in this release are either security-adjacent or change observable behaviour. Please review before upgrading:
- Fetch adapter now enforces
maxBodyLengthandmaxContentLength. These limits were silently ignored on the fetch adapter prior to 1.16.0 — anyone relying on them as a safety net (DoS protection, accidental large uploads) had no protection. (#10795) - Proxy requests now preserve user-supplied
Hostheaders. Previously, the proxy path could overwrite a customHost. Virtual-host-style routing through a proxy will now behave correctly. (#10822) - Basic auth credentials embedded in URLs are now URL-decoded. If you have percent-encoded credentials in a URL (e.g.
https://user:p%40ss@host), the decoded value is what now goes on the wire. (#10825) parseProtocolnow strictly requires a colon in the protocol separator. Strings that loosely parsed as protocols before may no longer match. (#10729)- Deprecated
unescape()replaced with modern UTF-8 encoding. Non-ASCII URL handling is now spec-correct; consumers depending on legacyunescape()quirks may see different output bytes. (#7378) transformRequestinput typing change was reverted. The typing change introduced in #10745 was reverted in #10810 after follow-up review — net behavior is unchanged from 1.15.2. (#10745, #10810)
🚀 New Features
- QUERY HTTP Method: Added support for the QUERY HTTP method across adapters and type definitions. (#10802)
- ECONNREFUSED Error Constant: Exposed
ECONNREFUSEDas a constant onAxiosErrorso callers can match connection-refused failures without comparing string literals (closes #6485). (#10680) - Encode Helper Export: Exported the internal
encodehelper frombuildURLso userland param serializers can reuse the same encoding logic that axios uses internally. (#6897)
🐛 Bug Fixes
- HTTP Adapter — Redirects & Headers: Cleared stale headers when a redirect targets a no-proxy host, fixed the redirect listener chain so listeners no longer stack across hops, restored the missing
requestDetailsargument onbeforeRedirect, preserved user-suppliedHostheaders when forwarding through a proxy, and properly URL-decoded basic auth credentials. (#10794, #10800, #6241, #10822, #10825) - HTTP Adapter — Streams & Timeouts: Preserved the partial response object on
AxiosErrorwhen a stream is aborted after headers arrive, honoured thetimeoutoption during the connect phase when redirects are disabled, and resolved an unsettled-promise hang when an aborted request was combined with compression andmaxRedirects: 0. (#10708, #10819, #7149) - Fetch Adapter: Enforced
maxBodyLength/maxContentLengthin the fetch adapter, set theUser-Agentheader to match the HTTP adapter, preserved the original abort reason instead of replacing it with a generic error, and deferred global access so importing the module no longer throws aTypeErrorin restricted environments. (#10795, #10772, #10806, #7260) - XHR Adapter: Unsubscribed the
cancelTokenandAbortSignallisteners on the error, timeout, and abort code paths to prevent leaked subscriptions. (#10787) - Error Handling: Attached the parsed response to
AxiosErrorwhenJSON.parsefails insidedispatchRequest, preventedsettlefrom emittingundefinederror codes, and tightened theparseProtocolregex to require a colon in the protocol separator. (#10724, #7276, #10729) - Types & Exports: Aligned the CommonJS
CancelTokentypings with the ESM build, fixed a compiler error caused byRawAxiosHeaders, and re-exportedcreatefrom the package index. (#7414, #6389, #6460) - UTF-8 Encoding: Replaced the deprecated
unescape()call with a modern UTF-8 encoding implementation. (#7378) - Misc Cleanup: Resolved a batch of small inconsistencies and gadget-level issues across the codebase. (#10833)
🔧 Maintenance & Chores
- Refactor — ES6 Modernisation: Modernised the
utilsmodule and XHR adapter to use ES6 features, and tidied the multipart boundary error message. (#10588, #7419) - Tests: Hardened the HTTP test server lifecycle to fix flaky
FormDataEPIPE failures, fixed Win32 platform support for the pipe tests, and corrected an incorrect test assumption. (#10820, #10791, #10796) - Docs: Documented
paramsSerializer.encodefor strict RFC 3986 query encoding, updated theparseReviverTypeScript definitions and configuration docs for ES2023, added timeout guidance to the README's first async example, and expanded notes around the recent type changes. (#10821, #10782, #10759, #10804) - Reverted: Reverted the
transformRequestinput typing change from #10745 after follow-up review. (#10745, #10810) - Dependencies: Bumped
actions/setup-node, thegithub-actionsgroup, andpostcss(in/docs) to their latest versions. (#10785, #10813, #10814) - Release: Updated changelog and packages, and prepared the 1.16.0 release. (#10790, #10834)
🌟 New Contributors
We are thrilled to welcome our new contributors. Thank you for helping improve axios:
- @singhankit001 (#10588)
- @cuiweixie (#7419)
- @iruizsalinas (#10787)
- @MarcosNocetti (#10680)
- @deepview-autofix (#10729)
- @atharvasingh7007 (#10745)
- @OfekDanny (#10772)
- @mnahkies (#7414)
- @tboyila (#10759)
- @Kingo64 (#6897)
- @ramram1048 (#6389)
- @FLNacif (#6460)
- @zozo123 (#10806)
- @pierluigilenoci (#10802)
- @afurm (#10708)
- @karan-lrn (#7378)
- @ebeigarts (#7149)
- @Raymondo97 (#10782)
- @mixelburg (#10821)
- @ashishkr96 (#10822)
- @cyphercodes (#10819)
- @Jye10032 (#7260)
- @VeerShah41 (#7276)
v1.15.2
This release delivers prototype-pollution hardening for the Node HTTP adapter, adds an opt-in allowedSocketPaths allowlist to mitigate SSRF via Unix domain sockets, fixes a keep-alive socket memory leak, and ships supply-chain hardening across CI and security docs.
🔒 Security Fixes
- Prototype Pollution Hardening (HTTP Adapter): Hardened the Node HTTP adapter and
resolveConfig/mergeConfig/validator paths to read only own properties and use null-prototype config objects, preventing pollutedauth,baseURL,socketPath,beforeRedirect, andinsecureHTTPParserfrom influencing requests. (#10779) - SSRF via
socketPath: Rejects non-stringsocketPathvalues and adds an opt-inallowedSocketPathsconfig option to restrict permitted Unix domain socket paths, returningAxiosErrorERR_BAD_OPTION_VALUEon mismatch. (#10777) - Supply-chain Hardening: Added
.npmrcwithignore-scripts=true, lockfile lint CI, non-blocking reproducible build diff, scoped CODEOWNERS, expandedSECURITY.md/THREATMODEL.mdwith provenance verification (npm audit signatures), 60-day resolution policy, and maintainer incident-response runbook. (#10776)
🚀 New Features
allowedSocketPathsConfig Option: New request config option (and TypeScript types) to allowlist Unix domain socket paths used by the Node http adapter; backwards compatible when unset. (#10777)
🐛 Bug Fixes
- Keep-alive Socket Memory Leak: Installs a single per-socket
errorlistener tracking the active request viakAxiosSocketListener/kAxiosCurrentReq, eliminating per-request listener accumulation,MaxListenersExceededWarning, and linear heap growth under concurrent or long-running keep-alive workloads (fixes #10780). (#10788)
🔧 Maintenance & Chores
- Changelog: Updated
CHANGELOG.mdwith v1.15.1 release notes. (#10781)
v1.15.1
This release ships a coordinated set of security hardening fixes across headers, body/redirect limits, multipart handling, and XSRF/prototype-pollution vectors, alongside a broad sweep of bug fixes, test migrations, and threat-model documentation updates.
🔒 Security Fixes
- Header Injection Hardening: Tightened validation and sanitisation across request header construction to close the header-injection attack surface. (#10749)
- CRLF Stripping in Multipart Headers: Correctly strips CR/LF from multipart header values to prevent injection via field names and filenames. (#10758)
- Prototype Pollution / Auth Bypass: Replaced unsafe
inchecks withhasOwnPropertyto prevent authentication bypass via prototype pollution on config objects, with additional regression tests. (#10761, #10760) withXSRFTokenTruthy Bypass: Short-circuits on any truthy non-boolean value, so an ambiguous config no longer silently leaks the XSRF token cross-origin. (#10762)maxBodyLengthWith Zero Redirects: EnforcesmaxBodyLengtheven whenmaxRedirectsis set to0, closing a bypass path for oversized request bodies. (#10753)- Streamed Response
maxContentLengthBypass: AppliesmaxContentLengthto streamed responses that previously bypassed the cap. (#10754) - Follow-up CVE Completion: Completes an earlier incomplete CVE fix to fully close the regression window. (#10755)
🚀 New Features
- AI-Based Docs Translations: Initial scaffold for AI-assisted translations of the documentation site. (#10705)
LocationRequest Header Type: AddsLocationtoCommonRequestHeadersListfor accurate typing of redirect-aware requests. (#7528)
🐛 Bug Fixes
- FormData Handling: Removes
Content-Typewhen no boundary is present onFormDatafetch requests, supports multi-select fields, cancelsrequest.bodyinstead of the source stream on fetch abort, and fixes a recursion bug in form-data serialisation. (#7314, #10676, #10702, #10726) - HTTP Adapter: Handles socket-only request errors without leaking keep-alive listeners. (#10576)
- Progress Events: Clamps
loadedtototalfor computable upload/download progress events. (#7458) - Types: Aligns
runWhentype with the runtime behaviour inInterceptorManagerand makes response header keys case-insensitive. (#7529, #10677) buildFullPath: Uses strict equality in the base/relative URL check. (#7252)AxiosURLSearchParamsRegex: Improves the regex used for param serialisation to avoid edge-case mismatches. (#10736)- Resilient Value Parsing: Parses out header/config values instead of throwing on malformed input. (#10687)
- Docs Artefact Cleanup: Removes the docs content that was incorrectly committed. (#10727)
🔧 Maintenance & Chores
- Threat Model & Security Docs: Ongoing refinement of
THREATMODEL.md, including Hopper security update, TLS and tag-replay wording, mitigation descriptions, decompression-bomb guidance, and further cleanup. (#10672, #10715, #10718, #10722, #10763, #10765) - Test Coverage & Migration: Expanded
shouldBypassProxycoverage for wildcard/IPv6/edge cases, documented and testedAxiosError.status, and migratedprogressEventReducertests to Vitest. (#10723, #10725, #10741) - Type Refactor: Uses TypeScript utility types to deduplicate literal unions. (#7520)
- Repo & CI: Adds
CODEOWNERS, switches v1.x releases to an ephemeral release branch, and removes orphaned Bower support. (#10739, #10738, #10746) - Changelog Backfill: Added missing version entries to the changelog. (#10704)
- Dependencies: Bumped
follow-redirects(1.15.11→1.16.0) in root and docs,axios(1.14.0→1.15.0) in docs, and a group of 5 development dependencies. (#10717, #10716, #10684, #10709)
🌟 New Contributors
We are thrilled to welcome our new contributors. Thank you for helping improve axios:
v0.31.1
This release backports a broad set of security hardenings from the v1 line — covering prototype-pollution defences, stream size enforcement, XSRF handling, URL null-byte encoding, and bounded FormData recursion — and drops committed dist/ artefacts along with Bower support.
⚠️ Breaking Changes & Deprecations
- Bower & Committed
dist/Removed:dist/bundles are no longer committed to the repo, andbower.jsonplus the Gruntpackage2bowertask have been removed. CI still builds bundles before publish, so npm/yarn/pnpm consumers are unaffected; installs via Bower or directly from the git tree must migrate to npm or a CDN. (#10747)
🔒 Security Fixes
- Prototype Pollution in Header Merge (GHSA-6chq-wfr3-2hj9): Tightened
isFormDatato reject plain/null-prototype objects and requireappend, and guarded the Node HTTP adapter sodata.getHeaders()is only merged when it is not inherited fromObject.prototype. Blocks injected headers via pollutedgetHeaders. (#10750) - Prototype Pollution in Config Merging (GHSA-pf86-5x62-jrwf):
mergeConfig, defaults resolution, and the HTTP adapter now uses own-property checks fortransport,env,Blob,formSerializer, and transforms arrays, and merged configs are returned as null-prototype objects. Prevents hijacking of the request flow through polluted prototypes. (#10752) - FormData / Params Recursion DoS: Added a configurable
maxDepth(default100,Infinitydisables) totoFormDataand params serialisation, throwingAxiosErrorwith codeERR_FORM_DATA_DEPTH_EXCEEDEDwhen exceeded. Circular-reference detection is preserved. (#10728) - Null-Byte Injection in Query Strings: Removed the unsafe
%00→ null-byte substitution fromAxiosURLSearchParams.encodeso%00is preserved as-is. Other encoding behaviour (including%20→+) unchanged. (#10737) - Consolidated v1 Security Backport: Rolls up remaining v1 hardenings into
v0.x:maxContentLengthenforcement forresponseType: 'stream'via a guarded transform with deferred piping,maxBodyLengthenforcement for streamed uploads on nativehttp/httpswithmaxRedirects: 0, and stricterwithXSRFTokenhandling so only own booleantrueenables cross-origin XSRF headers. (#10764)
🔧 Maintenance & Chores
- CODEOWNERS: Added
.github/CODEOWNERSwith* @jasonsaaymanto set a default reviewer for all paths. (#10740)
v0.31.0
This release backports security fixes from v1.x, hardens the CI/CD supply chain with OIDC publishing and zizmor scanning, resolves TypeScript typing issues in AxiosInstance, and fixes a performance regression in isEmptyObject().
🔒 Security Fixes
-
Header Injection & Proxy Bypass: Backports v1 security hardening — sanitizes outgoing header values to strip invalid bytes, CRLF sequences, and boundary whitespace (including array values); adds proper
NO_PROXY/no_proxyenforcement covering wildcards, explicit ports, loopback aliases (localhost,127.0.0.1,::1), bracketed IPv6, and trailing-dot hostnames. Proxy bypass is now checked before the proxy URL is parsed, andparsed.hostis used for correct port and IPv6 handling. (#10688) -
CI Security: SHA-pins all actions and disables credential persistence in v0.x CI, introduces
zizmorsecurity scanning with SARIF upload to code scanning, adds an OIDC Trusted Publishing workflow with npm provenance attestations, and gates all publishes behind a requirednpm-publishGitHub Environment with configurable reviewer protections. (#10638, #10639, #10667)
🐛 Bug Fixes
-
TypeScript —
AxiosInstanceReturn Types: Fixes return types inAxiosInstancemethods to correctly resolve toPromise<R>(matchingAxiosPromise<T>semantics), and corrects the generic call signature so TypeScript properly enforces the response data type. TypeScript-only changes; no runtime impact. (#6253, #7328) -
Performance: Fixes a performance regression in
isEmptyObject()that caused excessive computation when the argument was a large string. (#6484)
🔧 Maintenance & Chores
- Versioning & CI Workflow: Adds an automated versioning flow for v0.x, renames the CI workflow for consistency with the v1.x naming convention, and corrects the branch name reference in CI config. (#10690, #10691, #10692)
🌟 New Contributors
We are thrilled to welcome our new contributors. Thank you for helping improve axios:
v1.15.0
This release delivers two critical security patches, adds runtime support for Deno and Bun, and includes significant CI hardening, documentation improvements, and routine dependency updates.
⚠️ Important Changes
- Deprecation:
url.parse()usage has been replaced to address Node.js deprecation warnings. If you are on a recent version of Node.js, this resolves console warnings you may have been seeing. (#10625)
🔒 Security Fixes
- Proxy Handling: Fixed a
no_proxyhostname normalisation bypass that could lead to Server-Side Request Forgery (SSRF). (#10661) - Header Injection: Fixed an unrestricted cloud metadata exfiltration vulnerability via a header injection chain. (#10660)
🚀 New Features
- Runtime Support: Added compatibility checks and documentation for Deno and Bun environments. (#10652, #10653)
🔧 Maintenance & Chores
- CI Security: Hardened workflow permissions to least privilege, added the
zizmorsecurity scanner, pinned action versions, and gated npm publishing with OIDC and environment protection. (#10618, #10619, #10627, #10637, #10666) - Dependencies: Bumped
serialize-javascript,handlebars,picomatch,vite, anddenoland/setup-denoto latest versions. Added a 7-day Dependabot cooldown period. (#10574, #10572, #10568, #10663, #10664, #10665, #10669, #10670, #10616) - Documentation: Unified docs, improved
beforeRedirectcredential leakage example, clarifiedwithCredentials/withXSRFTokenbehaviour, HTTP/2 support notes, async/await timeout error handling, header case preservation, and various typo fixes. (#10649, #10624, #7452, #7471, #10654, #10644, #10589) - Housekeeping: Removed stale files, regenerated lockfile, and updated sponsor scripts and blocks. (#10584, #10650, #10582, #10640, #10659, #10668)
- Tests: Added regression coverage for urlencoded
Content-Typecasing. (#10573)
🌟 New Contributors
We are thrilled to welcome our new contributors. Thank you for helping improve Axios:
v1.14.0
This release focuses on compatibility fixes, adapter stability improvements, and test/tooling modernisation.
⚠️ Important Changes
- Breaking Changes: None identified in this release.
- Action Required: If you rely on env-based proxy behaviour or CJS resolution edge-cases, validate your integration after upgrade (notably
proxy-from-envv2 alignment andmainentry compatibility fix).
🚀 New Features
- Runtime Features: No new end-user features were introduced in this release.
- Test Coverage Expansion: Added broader smoke/module test coverage for CJS and ESM package usage. (#7510)
🐛 Bug Fixes
- Headers: Trim trailing CRLF in normalised header values. (#7456)
- HTTP/2: Close detached HTTP/2 sessions on timeout to avoid lingering sessions. (#7457)
- Fetch Adapter: Cancel
ReadableStreamcreated during request-stream capability probing to prevent async resource leaks. (#7515) - Proxy Handling: Fixed env proxy behavior with
proxy-from-envv2 usage. (#7499) - CommonJS Compatibility: Fixed package
mainentry regression affecting CJS consumers. (#7532)
🔧 Maintenance & Chores
- Security/Dependencies: Updated
formidableand refreshed package set to newer versions. (#7533, #10556) - Tooling: Continued migration to Vitest and modernised CI/test harnesses. (#7484, #7489, #7498)
- Build/Lint Stack: Rollup, ESLint, TypeScript, and related dev-dependency updates. (#7508, #7509, #7522)
- Documentation: Clarified JSON parsing and adapter-related docs/comments. (#7398, #7460, #7478)
🌟 New Contributors
We are thrilled to welcome our new contributors. Thank you for helping improve Axios:
- @aviu16 (#7456)
- @NETIZEN-11 (#7460)
- @fedotov (#7457)
- @nthbotast (#7478)
- @veeceey (#7398)
- @penkzhou (#7515)
Full Changelog: v1.13.6...v1.14.0
v1.13.6
This release focuses on platform compatibility, error handling improvements, and code quality maintenance.
⚠️ Important Changes
- Breaking Changes: None identified in this release.
- Action Required: Users targeting React Native should verify their integration, particularly if relying on specific Blob or FormData behaviours, as improvements have been made to support these objects.
🚀 New Features
- React Native Blob Support: Axios now includes support for React Native Blob objects. Thanks to @moh3n9595 for the initial implementation. (#5764)
- Code Quality: Implemented prettier across the codebase and resolved associated formatting issues. (#7385)
🐛 Bug Fixes
-
Environment Compatibility:
-
Error Handling:
🔧 Maintenance & Chores
- Dependencies: Updated the development_dependencies group (5 updates). (#7432)
- Infrastructure: Migrated @rollup/plugin-babel from v5.3.1 to v6.1.0. (#7424)
- Documentation: Added missing JSDoc comments to utilities. (#7427)
🌟 New Contributors
We are thrilled to welcome our new contributors! Thank you for helping improve the project:
- @Gudahtt (#7386)
- @ybbus (#7392)
- @Shiwaangee (#7324)
- @skrtheboss (#7403)
- @Janaka66 (#7427)
- @moh3n9595 (#5764)
- @digital-wizard48 (#7424)
Full Changelog: v1.13.5...v1.13.6
Release notes - v0.30.3
This is a critical security maintenance release for the v0.x branch. It addresses a high-priority vulnerability involving prototype pollution that could lead to a Denial of Service (DoS).
Recommendation: All users currently on the 0.x release line should upgrade to this version immediately to ensure environment stability.
🛡️ Security Fixes
- Backport: Fix DoS via proto key in merge config
⚙️ Maintenance & CI
- CI Infrastructure Update
- Updated Continuous Integration workflows for the v0.x branch to maintain long-term support and build reliability. - by @jasonsaayman in PR #7407
⚠️ Breaking Changes
Configuration Merging Behavior:
As part of the security fix, Axios now restricts the merging of the proto key within configuration objects. If your codebase relies on unconventional deep-merging patterns that target the object prototype via Axios config, those operations will now be blocked. This is a necessary change to prevent prototype pollution.
Full Changelog: v0.30.2...v0.30.3
v1.13.5
Release 1.13.5
Highlights
- Security: Fixed a potential Denial of Service issue involving the
__proto__key inmergeConfig. (PR #7369) - Bug fix: Resolved an issue where
AxiosErrorcould be missing thestatusfield on and after v1.13.3. (PR #7368)
Changes
Security
- Fix Denial of Service via
__proto__key inmergeConfig. (PR #7369)
Fixes
Features / Improvements
Documentation
- Clarify object-check comment. (PR #7323)
- Fix deprecated
Bufferconstructor usage and README formatting. (PR #7371)
CI / Maintenance
- Chore: fix issues with YAML. (PR #7355)
- CI: update workflow YAMLs. (PR #7372)
- CI: fix run condition. (PR #7373)
- Dev deps: bump
karma-sourcemap-loaderfrom 0.3.8 to 0.4.0. (PR #7360) - Chore(release): prepare release 1.13.5. (PR #7379)
New Contributors
- @sachin11063 (first contribution — PR #7323)
- @asmitha-16 (first contribution — PR #7326)
Full Changelog: v1.13.4...v1.13.5