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

On this page
1.20.0
- 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 - 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 - 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
1.19.0
- 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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
And 40 more in this version.
1.18.1
- 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 - Signature changed
AxiosStatic.Cancel
Was Cancel: CancelStatic; now Cancel: typeof CanceledError. npmjs.com
1.18.0
- 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 - 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
1.17.0
- 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 - 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 - 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 - 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 - 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 - Signature changed
AxiosRequestHeaders.toJSON
Was toJSON(asStrings?: boolean): RawAxiosHeaders; now toJSON(asStrings: true): Record<string, string>. npmjs.com - Signature changed
AxiosResponseHeaders.toJSON
Was toJSON(asStrings?: boolean): RawAxiosHeaders; now toJSON(asStrings: true): Record<string, string>. npmjs.com - 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
1.16.1
- 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 - 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 - 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
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The 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.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp