---
title: "axios Breaking Changes on npm | Since.dev"
description: "What each axios release removed, renamed or changed: 188 breaking changes in 14 versions on npm, each with its source."
canonical_url: https://since.dev/packages/npm/axios
last_updated: 2026-11-04
---

# axios breaking changes

Every breaking API change we have recorded in axios on npm: 188 breaking changes in 14 versions. Below are its newest 6 versions, removals and renames first, each with its source.

Newest change November 4, 2026

## 1.20.0

3 breaking changes, first published August 26, 2026.

- **Behavior changed**  

Behavioral configuration reads, interceptor replacement, Fetch redirects, HTTP/2 DNS and proxy handling, CIDR NO_PROXY matching and malformed data URI rejection changed; check the referenced PR for compatibility effects. [github.com](https://github.com/axios/axios/releases/tag/v1.20.0)
- **Behavior changed**  

Requests canceled by navigation now reject with ECONNABORTED rather than resolving with status 0; code relying on the resolved response must handle the error. [github.com](https://github.com/axios/axios/releases/tag/v1.20.0)
- **Behavior changed**  

Invalid DNS lookup and httpVersion failures now raise AxiosError.ERR_BAD_OPTION_VALUE; code that checks other error codes for these failures must be updated. [github.com](https://github.com/axios/axios/releases/tag/v1.20.0)

## 1.19.0

50 breaking changes, first published July 29, 2026.

- **Behavior changed**  

NO_PROXY matching now canonicalizes IPv4 shorthand, octal and hexadecimal forms and honors \* entries in bypass lists, so some requests may now bypass or use the proxy differently. [github.com](https://github.com/axios/axios/releases/tag/v1.19.0)
- **Behavior changed**  

Requests are now blocked after a synchronous request interceptor fails, unless its paired rejection handler resolves successfully. Code that relied on the request still being sent must handle the failure in the rejection handler. [github.com](https://github.com/axios/axios/releases/tag/v1.19.0)
- **Behavior changed** `AxiosHeaders.getSetCookie`  

AxiosHeaders#getSetCookie() now consistently returns an array for present values. Code that expected a single string must handle an array. [github.com](https://github.com/axios/axios/releases/tag/v1.19.0)
- **Behavior changed** `formDataToJSON`  

formDataToJSON now splits key paths only on dot and bracket notation and keeps other punctuation in keys literally, so output keys may differ from before. [github.com](https://github.com/axios/axios/releases/tag/v1.19.0)
- **Signature changed** `Axios.delete`  

Was delete<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>; now delete<T = any, R = AxiosResponseDefault, D = any, P = any>(url: string, config?: AxiosRequestConfig<D, P>)... [npmjs.com](https://www.npmjs.com/package/axios/v/1.19.0)
- **Signature changed** `Axios.get`  

Was get<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>; now get<T = any, R = AxiosResponseDefault, D = any, P = any>(url: string, config?: AxiosRequestConfig<D, P>)... [npmjs.com](https://www.npmjs.com/package/axios/v/1.19.0)
- **Signature changed** `Axios.head`  

Was head<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>; now head<T = any, R = AxiosResponseDefault, D = any, P = any>(url: string, config?: AxiosRequestConfig<D, P>)... [npmjs.com](https://www.npmjs.com/package/axios/v/1.19.0)
- **Signature changed** `Axios.options`  

Was options<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>; now options<T = any, R = AxiosResponseDefault, D = any, P = any>(url: string, config?: AxiosRequestConfig<D, P>)... [npmjs.com](https://www.npmjs.com/package/axios/v/1.19.0)
- **Signature changed** `Axios.patch`  

Was patch<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>; now patch<T = any, R = AxiosResponseDefault, D = any, P = any>(url: string, data?: D, config?: AxiosRequestConfig<D, P>)... [npmjs.com](https://www.npmjs.com/package/axios/v/1.19.0)
- **Signature changed** `Axios.patchForm`  

Was patchForm<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>; now patchForm<T = any, R = AxiosResponseDefault, D = any, P = any>(url: string, data?: D, config?... [npmjs.com](https://www.npmjs.com/package/axios/v/1.19.0)

And 40 more in this version.

## 1.18.1

2 breaking changes, first published June 22, 2026.

- **Behavior changed** `AxiosError.cause`  

AxiosError#cause no longer appears in enumerable keys or JSON output, which avoids circular serialisation failures. Code that relied on serialising or enumerating the cause must read it directly instead. [github.com](https://github.com/axios/axios/releases/tag/v1.18.1)
- **Signature changed** `AxiosStatic.Cancel`  

Was Cancel: CancelStatic; now Cancel: typeof CanceledError. [npmjs.com](https://www.npmjs.com/package/axios/v/1.18.1)

## 1.18.0

2 breaking changes, first published June 14, 2026.

- **Behavior changed**  

The Node HTTP adapter now removes caller-specified sensitive headers, such as API keys, when a redirect goes to another origin. Code that relies on those headers reaching the redirect target must be changed. [github.com](https://github.com/axios/axios/releases/tag/v1.18.0)
- **Behavior changed**  

URLs using http: or https: that omit // now fail with ERR_INVALID_URL. Code that passed such URLs must supply well-formed URLs. [github.com](https://github.com/axios/axios/releases/tag/v1.18.0)

## 1.17.0

8 breaking changes, first published June 3, 2026.

- **Behavior changed** `params`  

The params option is now read only from own properties, so values inherited through the prototype no longer affect requests. [github.com](https://github.com/axios/axios/releases/tag/v1.17.0)
- **Behavior changed** `paramsSerializer`  

The paramsSerializer option is now read only from own properties, so values inherited through the prototype no longer affect requests. [github.com](https://github.com/axios/axios/releases/tag/v1.17.0)
- **Behavior changed** `resolveConfig`  

resolveConfig was changed from an arrow default export to a named function export. Code that relied on the default import must switch to a named import. [github.com](https://github.com/axios/axios/releases/tag/v1.17.0)
- **Behavior changed** `socketPath`  

The socketPath option is now read only from own properties, so values inherited through the prototype no longer affect requests. [github.com](https://github.com/axios/axios/releases/tag/v1.17.0)
- **Signature changed** `AxiosHeaders.toJSON`  

The TypeScript return type of AxiosHeaders.toJSON() was changed, which can cause type errors in code that depended on the old type. [npmjs.com](https://www.npmjs.com/package/axios/v/1.17.0)
- **Signature changed** `AxiosRequestHeaders.toJSON`  

Was toJSON(asStrings?: boolean): RawAxiosHeaders; now toJSON(asStrings: true): Record<string, string>. [npmjs.com](https://www.npmjs.com/package/axios/v/1.17.0)
- **Signature changed** `AxiosResponseHeaders.toJSON`  

Was toJSON(asStrings?: boolean): RawAxiosHeaders; now toJSON(asStrings: true): Record<string, string>. [npmjs.com](https://www.npmjs.com/package/axios/v/1.17.0)
- **Signature changed** `isCancel`  

The CommonJS isCancel typings now narrow the type to CanceledError<T>, which can cause type errors in code that relied on the broader type. [github.com](https://github.com/axios/axios/releases/tag/v1.17.0)

## 1.16.1

3 breaking changes, first published May 13, 2026.

- **Signature changed** `AxiosDefaults.parseReviver`  

Was parseReviver?: (this: any, key: string, value: any, context?: {source: string}) => any; now parseReviver?: (this: any, key: string, value: any, context?: {source?: string}) => any. [npmjs.com](https://www.npmjs.com/package/axios/v/1.16.1)
- **Signature changed** `AxiosRequestConfig.parseReviver`  

Was parseReviver?: (this: any, key: string, value: any, context?: {source: string}) => any; now parseReviver?: (this: any, key: string, value: any, context?: {source?: string}) => any. [npmjs.com](https://www.npmjs.com/package/axios/v/1.16.1)
- **Signature changed** `CreateAxiosDefaults.parseReviver`  

Was parseReviver?: (this: any, key: string, value: any, context?: {source: string}) => any; now parseReviver?: (this: any, key: string, value: any, context?: {source?: string}) => any. [npmjs.com](https://www.npmjs.com/package/axios/v/1.16.1)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
