PRE_RELEASE_DOCS.md
Track documentation updates that should be applied during release preparation.
Do not treat this file as final documentation. Each entry should give enough context for a maintainer or LLM to update README, docs pages, examples, migration guides, and translated docs when the release is prepared.
Do not store raw diffs or line-number-only instructions here; prefer stable section names, target files, required concepts, examples, and release-specific notes.
PRE_RELEASE_CHANGELOG.md Bug Fixes, Runtime configuration hardening.__proto__, constructor, and prototype) are always excluded. Values inherited only from a realm's shared Object.prototype are ignored even if that prototype's constructor is changed, deleted, or replaced by an accessor. An interceptor that returns the writable, already-merged null-prototype config preserves object identity through the adapter and response.config. A frozen, sealed, accessor-based, otherwise restricted, or unsafe-key-bearing null-prototype replacement is materialized into a writable filtered snapshot because dispatch updates fields such as headers, data, and temporary response state and must retain the dangerous-key filtering invariant. An interceptor replacement with a non-terminal application-defined prototype is likewise converted to a null-prototype normalized snapshot: safe inherited fields are materialized as own fields, but the original identity, prototype, instanceof branding, accessor placement, and property descriptor attributes are not preserved. Because a foreign shared Object.prototype is structurally indistinguishable from an application-created terminal null-prototype template once mutable properties are altered, inherited fields on terminal null-prototype ancestors are intentionally excluded as a fail-closed security boundary.Object.create(null) prototype whose inherited behavior fields are ignored.Object.prototype is supported or safe.NO_PROXY and no_proxy.PRE_RELEASE_CHANGELOG.md Features, Proxy bypass CIDR ranges.0.0.0.0/0 bypasses the proxy for every IPv4 destination and ::/0 does the same for IPv6.NO_PROXY=10.0.0.0/8,2001:db8::/32 bypassing matching HTTP destinations and identify /0 as the entire-family form.PRE_RELEASE_CHANGELOG.md Bug Fixes, Fetch adapter consistency and HTTP/2 adapter consistency.fetchOptions, maxRedirects, lookup, httpVersion, and proxy; custom adapter/fetch guidance; translated docs after the English documentation is finalized.Request when Request is supported and continues to receive a second fetchOptions argument containing safe own custom fields; Axios-managed fields such as method, headers, body, signal, duplex, and credentials are represented by the Request and omitted from that second argument. Custom fetch implementations that previously inspected those fields on the second argument must migrate to the Request; identify this as an intentional compatibility change that prevents the second argument from overriding the authoritative request. Explain that maxRedirects: 0 requests manual redirect handling in the Fetch adapter, but response visibility follows the Fetch runtime: Node may expose the 3xx status and Location, while browsers return an opaque redirect with status 0 and inaccessible headers. Custom DNS lookup applies to HTTP/2 connections and participates in session reuse. HTTP/2 ignores process-environment and HTTP/1-agent proxyEnv settings because http2.connect() cannot apply them, proxy: false remains direct, and an explicit Axios proxy object rejects with ERR_NOT_SUPPORT.maxRedirects: 0 and Node httpVersion: 2 plus lookup examples.maxRedirects values enforce a redirect count; only zero maps to the platform's manual redirect mode. Do not present the Node-visible 3xx response as portable browser behavior. Keep the HTTP/2 environment-proxy direct-egress residual prominent for deployments that treat proxying as mandatory policy.PRE_RELEASE_CHANGELOG.md Features, #11082, closes #11066.README.md and docs/pages/advanced/api-reference.md HttpStatusCode guidance; migration or upgrade notes; translated docs after the English documentation is finalized.HttpStatusCode.ContentTooLarge for 413 and HttpStatusCode.UnprocessableContent for 422 as the preferred RFC 9110 names. Explain that PayloadTooLarge and UnprocessableEntity remain available as deprecated aliases throughout v1.x, and that numeric reverse lookups continue returning those legacy names for backward compatibility.HttpStatusCode.ContentTooLarge and HttpStatusCode.UnprocessableContent.loadend.PRE_RELEASE_CHANGELOG.md Bug Fixes, closes #6796.onDownloadProgress; any response streaming examples.event.currentTarget is null per DOM semantics, while event.target still references the request. A final download delivery with the complete transfer state is guaranteed when a completed XHR download reaches its successful loadend handler and is dispatched live. Upload progress, stream-error or abort-reason flushes, and failed XHR downloads retain their prior pending-event behavior.responseText reader that slices new data using progressEvent.event.target inside onDownloadProgress.PRE_RELEASE_CHANGELOG.md Features, #11081, closes #4954.params and paramsSerializer; API reference for request methods, AxiosResponse, AxiosPromise, AxiosError, CanceledError, isCancel, and adapters; cancellation guidance; translated docs after the English documentation is finalized.AxiosRequestConfig<D = any, P = any> uses D for request data and P for query params, and that custom params serializers receive the same P. Cover propagation through RawAxiosRequestConfig, InternalAxiosRequestConfig, defaults, default response shapes, AxiosResponse, AxiosPromise<T, D, P>, AxiosError, CanceledError, the isCancel<T, D, P> type guard, request aliases, request(), callable instances, adapters, and mergeConfig(). State that default request results and explicitly typed AxiosPromise values preserve D and P on response.config.data and response.config.params, including when request methods infer those types from request config. Note that request methods add P as the final generic so the existing T, custom response R, and D positions remain unchanged, and explicitly supplied custom response types continue to control the resolved value.SearchParams interface used with AxiosRequestConfig<RequestBody, SearchParams>, including a serializer callback that receives SearchParams, an invalid params object rejected by TypeScript, and an inferred default response whose response.config.params remains SearchParams. Include an AxiosPromise<ResponseBody, RequestBody, SearchParams> adapter/promise example and cancellation narrowing from unknown with isCancel<ResponseBody, RequestBody, SearchParams>(), demonstrating that both preserve request data and params on the config.any default is documented for backward compatibility; the internal default-response marker remains undocumented.PRE_RELEASE_CHANGELOG.md Bug Fixes, #11071.README.md Interceptors section; interceptor API reference; migration/upgrade notes; translated docs after the English documentation is finalized.onRejected handler and stops running the remaining request interceptors. If the handler returns normally, including returning undefined or a fulfilled Promise, axios treats the error as handled and dispatches with the last valid config; a value returned by the handler does not replace that config. If there is no rejection handler, or the handler throws or returns a rejected Promise, axios does not dispatch the request. Terminal errors continue through response rejection interceptors.Promise.reject(error) to block dispatch, and a logging-only rejection handler that returns normally to preserve the existing request-continuation behavior.AxiosHeaders.parseParameters() parser for normalized HTTP parameter values.PRE_RELEASE_CHANGELOG.md Features, #11051, closes #11050.README.md AxiosHeaders#get section; docs/pages/advanced/api-reference.md and docs/pages/advanced/header-methods.md; translated docs after English docs are finalized.AxiosHeaders.parseParameters to AxiosHeaders#get() to produce a null-prototype map with case-insensitive parameter names, remove surrounding quoted-string delimiters, decode quoted-pair DQUOTE/backslash escapes, keep commas and semicolons inside quoted values, and remove only RFC optional whitespace around unquoted values. Note that unsafe object-materialization keys (__proto__, constructor, and prototype) are omitted. State explicitly that get(name, true) remains the legacy tokenizer and keeps its existing output for backward compatibility.headers.get('content-type', AxiosHeaders.parseParameters) returning { boundary: 'a,b' } for multipart/form-data; boundary="a,b".true tokenizer.http(s): URL rejectionhttp:/https: URLs that omit // after the protocol, and that the error now names the offending URL.PRE_RELEASE_CHANGELOG.md Bug Fixes, #11000 (rejection) and #11008 (improved message).README.md errors / handling-errors section; migration/upgrade notes; docs/pages/advanced/request-config.md url/baseURL description; translated docs after English docs are finalized.url or baseURL of the form https:example.com or https:/example.com (scheme present, // missing) is rejected with an AxiosError whose code is ERR_INVALID_URL, instead of being silently normalized by the browser/Node URL parser. This is a security fix preventing baseURL/allowlist (SSRF) bypasses. Callers must pass a well-formed URL such as https://example.com. The error message now includes the offending URL: Invalid URL "https:example.com": missing "//" after protocol. The reported URL is the control-character-normalized form with userinfo (credentials), query parameter values, and fragment contents redacted (parameter names, host and path are preserved), because AxiosError.message is always serialized by toJSON() and the opt-in config.redact model cannot clean it.PRE_RELEASE_CHANGELOG.md Bug Fixes, #11043, closes #11042.AxiosRequestConfig with a specific symbol key and pass that symbol-keyed option in request config; axios preserves the own enumerable symbol property when merging defaults with request config so request interceptors and adapters can read it from InternalAxiosRequestConfig.export const someFlag = Symbol('some flag used in request interceptor'), declare module 'axios' { interface AxiosRequestConfig { [someFlag]?: boolean } }, and a request interceptor reading config[someFlag].formToJSON/formDataToJSON only split FormData field names on dot notation and bracket notation.PRE_RELEASE_CHANGELOG.md Bug Fixes, #11006, closes #5402.README.md FormData serializer/formToJSON sections; docs/pages/advanced/api-reference.md formToJSON; generated docs pages for multipart/urlencoded form serialization; translated docs after English docs are finalized.., [, and ] are structural path separators when converting FormData back to JSON, while other characters such as -, spaces, +, *, and & remain literal key characters. Mention that foo[bar], foo.bar, and foo[] continue to create nested object/array paths.form.append('user-name', 'johndoe') converting to { 'user-name': 'johndoe' }, and form.append('user.name', 'john') or form.append('user[name]', 'john') converting to { user: { name: 'john' } }.