NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #133 most downloaded on crates.io
higher level HTTP client library
Last release 29 days ago
08 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
126 releases · first in 2016
Add Error::is_dns() to identify errors caused by DNS resolution failures.
Error::is_dns() to identify errors caused by DNS resolution failures.ClientBuilder::http1_max_headers(usize) to configure the maximum number of headers accepted in an HTTP/1 response (default 100).TlsInfo extension.Ipv6AndIpv4 strategy to prefer IPv6.Referrer and Referrer Policy methods to WASM Request API by @Billy-Sheppard in #3049Error::is_dns() to identify DNS resolution failures by @JoakoI98 in #3057LookupIpStrategy::Ipv6AndIpv4 to actually prefer IPv6 when using hickory-dns by @FalkWoldmann in #3063TlsInfo by @dennisameling in #3067Full Changelog: v0.13.4...v0.13.5
One column per quarter.
Add ClientBuilder::tls_sslkeylogfile(bool) option to allow using the related environment variable.
ClientBuilder::tls_sslkeylogfile(bool) option to allow using the related environment variable.ClientBuilder::http2_keep_alive_* options for the blocking client.native-tls backend.Full Changelog: v0.13.3...v0.13.4
Fix CertificateRevocationList parsing of PEM values.
/etc/resolv.conf fails.STOP_SENDING as not an error.Full Changelog: v0.13.2...v0.13.3
Fix HTTP/2 and native-tls ALPN feature combinations.
RequestBuilder::json() from override previously set content-type.Full Changelog: v0.13.1...v0.13.2
http3: depend on quinn/rustls-aws-lc-rs to avoid ring dependency by @djc in #2917
Full Changelog: v0.13.0...v0.13.1
rustls is now the default TLS backend, instead of native-tls.rustls crypto provider defaults to aws-lc instead of ring. (rustls-no-provider exists if you want a different crypto provider)rustls-tls has been renamed to rustls.rustls-platform-verifier is used by default.
tls_certs_only(your_roots).native-tls now includes ALPN. To disable, use native-tls-no-alpn.query and form are now crate features, disabled by default.trust-dns, which was renamed hickory-dns a while ago).tls_backend_rustls() over use_rustls_tls().Long-deprecated methods and crate features have been removed (such as trust-dns , which was renamed hickory-dns a while ago).
rustls is now the default TLS backend, instead of native-tls.rustls crypto provider defaults to aws-lc instead of ring. (rustls-no-provider exists if you want a different crypto provider)rustls-tls has been renamed to rustls.rustls-platform-verifier is used by default.
tls_certs_only(your_roots).native-tls now includes ALPN. To disable, use native-tls-no-alpn.query and form are now crate features, disabled by default.trust-dns, which was renamed hickory-dns a while ago).tls_backend_rustls() over use_rustls_tls().serde optional by introducing query, form features, and re-working WASM header parsing by @CathalMullan in #2858ClientBuilder::dns_resolver with dns_resolver2 by @seanmonstar in #2898Full Changelog: v0.12.28...v0.13.0
Many TLS-related methods renamed, but previous name left in place with a "soft" deprecated (just documented, no warnings).
👀 Discussion here if you give it try, thanks!
rustls-no-provider exists if you want to enable a different one)tls_certs_only(your_roots).serde optional by introducing query, form features, and re-working WASM header parsing by @CathalMullan in #2858ClientBuilder::dns_resolver with dns_resolver2 by @seanmonstar in #2898Full Changelog: v0.12.28...v0.13.0-rc.1
fix: correctly import TokioIo on Windows by @seanmonstar in #2896
Full Changelog: v0.12.27...v0.12.28
Add ClientBuilder::windows_named_pipe(name) option that will force all requests over that Windows Named Pipe.
ClientBuilder::windows_named_pipe(name) option that will force all requests over that Windows Named Pipe.Full Changelog: v0.12.26...v0.12.27
Fix sending Accept-Encoding header only with values configured with reqwest, regardless of underlying tower-http config.
Accept-Encoding header only with values configured with reqwest, regardless of underlying tower-http config.Full Changelog: v0.12.25...v0.12.26
Add Error::is_upgrade() to determine if the error was from an HTTP upgrade.
Error::is_upgrade() to determine if the error was from an HTTP upgrade.Proxy-Authorization if only username is configured.Proxy-Authorization to HTTPS proxies when the target is HTTP.proxy-authorization even with empty password by @barjin in #2868is_upgrade method to detect protocol upgrade errors by @0x676e67 in #2822Full Changelog: v0.12.24...v0.12.25
Refactor cookie handling to an internal middleware.
Add ClientBuilder::unix_socket(path) option that will force all requests over that Unix Domain Socket.
ClientBuilder::unix_socket(path) option that will force all requests over that Unix Domain Socket.ClientBuilder::retry(policy) and reqwest::retry::Builder to configure automatic retries.ClientBuilder::dns_resolver2() with more ergonomic argument bounds, allowing more resolver implementations.http3_* options to blocking::ClientBuilder.RequestBuilder.Fix socks proxies when resolving IPv6 destinations.
Fix socks proxy to use socks4a:// instead of socks4h://.
socks4a:// instead of socks4h://.Error::is_timeout() to check for hyper and IO timeouts too.Error to again include URLs when possible.Default for Body.Add ClientBuilder::tcp_user_timeout(Duration) option to set TCP_USER_TIMEOUT.
ClientBuilder::tcp_user_timeout(Duration) option to set TCP_USER_TIMEOUT.Error::is_status().Fix redirect that changes the method to GET should remove payload headers.
cookies feature is enabled (by the way, it's a noop feature in wasm).Fix compilation when socks enabled without TLS.
socks enabled without TLS.- Fix compilation on macOS.
Add ClientBuilder::http3_congestion_bbr() to enable BBR congestion control.
ClientBuilder::http3_congestion_bbr() to enable BBR congestion control.ClientBuilder::http3_send_grease() to configure whether to send use QUIC grease.ClientBuilder::http3_max_field_section_size() to configure the maximum response headers.ClientBuilder::tcp_keepalive_interval() to configure TCP probe interval.ClientBuilder::tcp_keepalive_retries() to configure TCP probe count.Proxy::headers() to add extra headers that should be sent to a proxy.redirect::Policy::limit() which had an off-by-1 error, allowing 1 more redirect than specified.Response::bytes_stream().Fix Windows to support both ProxyOverride and NO_PROXY.
ProxyOverride and NO_PROXY.Fix missing fetch_mode_no_cors(), marking as deprecated when not on WASM.
fetch_mode_no_cors(), marking as deprecated when not on WASM.Add Form::into_reader() for blocking multipart forms.
Form::into_reader() for blocking multipart forms.Form::into_stream() for async multipart forms.RequestBuilder::form() from overwriting a previously set Content-Type header, like the other builder methods.blocking::Request.ProxyOverride as a NO_PROXY value.Error::is_timeout() to return true when from a request timeout.(wasm) Fix compilation by not compiler tokio/time on WASM.
tokio/time on WASM.Fix decompression returning an error when HTTP/2 ends with an empty data frame.
Add ClientBuilder::connector_layer() to allow customizing the connector stack.
ClientBuilder::connector_layer() to allow customizing the connector stack.ClientBuilder::http2_max_header_list_size() option.content-length) information when wrapping bodies.Add tls::CertificateRevocationLists support.
tls::CertificateRevocationLists support.connection_verbose() to output read logs.multipart::Part::file() to automatically include content-length.Add support for SOCKS4 proxies.
multipart::Form::file() method for adding files easily.Body::wrap() to wrap any http_body::Body type.Revert adding impl Service > for Client.
impl Service<http::Request<_>> for Client.Add support for danger_accept_invalid_hostnames for rustls.
danger_accept_invalid_hostnames for rustls.impl Service<http::Request<Body>> for Client and &'_ Client.!Sync bodies in Body::wrap_stream().hickory-dns is used.Proxy so that HTTP(S)_PROXY values take precedence over ALL_PROXY.blocking::RequestBuilder::header() from unsetting sensitive on passed header values.Add blocking::ClientBuilder::dns_resolver() method to change DNS resolver in blocking client.
blocking::ClientBuilder::dns_resolver() method to change DNS resolver in blocking client.http3 feature back, still requiring reqwest_unstable.rustls-tls-no-provider Cargo feature to use rustls without a crypto provider.Accept-Encoding header combinations.Add zstd support, enabled with zstd Cargo feature.
zstd support, enabled with zstd Cargo feature.ClientBuilder::read_timeout(Duration), which applies the duration for each read operation. The timeout resets after a successful read.Add ClientBuilder::built_in_webpki_certs(bool) to enable them separately.
FromStr for dns::Name.ClientBuilder::built_in_webpki_certs(bool) to enable them separately.ClientBuilder::built_in_native_certs(bool) to enable them separately.content-length: 0 for GET requests.content_length() to return value when timeout is configured.ClientBuilder::resolve() to use lowercase domain names.Fix missing ALPN when connecting to socks5 proxy with rustls.
Fix ClientBuilder::interface() when no TLS is enabled.
ClientBuilder::interface() when no TLS is enabled.TlsInfo::peer_certificate() being truncated with rustls.http2 feature disabled but TLS negotiated h2 in ALPN.Display for Error to not include its source error.hyper, http, and http-body v1.http::Request and http::Response.http2 optional cargo feature, default on.charset optional cargo feature, default on.macos-system-configuration cargo feature, default on.ClientBuilder::interface(str) to specify the local interface to bind to.http3 feature temporarily.Nothing published for this version
Add hickory-dns feature, deprecating trust-dns.
hickory-dns feature, deprecating trust-dns.Form::text() to not set octet-stream for plain text fields.Revert system-configuration upgrade, which broke MSRV on macOS.
system-configuration upgrade, which broke MSRV on macOS.Fix Certificate::from_pem_bundle() parsing.
Certificate::from_pem_bundle() parsing.Add Certificate::from_pem_bundle() to add a bundle.
Certificate::from_pem_bundle() to add a bundle.http3_prior_knowledge() to blocking client builder.Sync bounds requirement for Body::wrap_stream().REFUSED_STREAM requests.Url to Uri that could panic.Add Proxy::custom_http_auth(val) for setting the raw Proxy-Authorization header when connecting to proxies.
Proxy::custom_http_auth(val) for setting the raw Proxy-Authorization header when connecting to proxies.http:// or https://.nodelay when TLS is enabled but URL is HTTP.ClientBuilder::user_agent(val).multipart::Form::headers(headers).Fix compilation on Windows when trust-dns is enabled.
trust-dns is enabled.Add automatically detecting macOS proxy settings.
ClientBuilder::tls_info(bool), which will put tls::TlsInfo into the response extensions.Fix deflate decompression back to using zlib, as outlined in the spec.
deflate decompression back to using zlib, as outlined in the spec.Add ClientBuilder::http1_ignore_invalid_headers_in_responses() option.
ClientBuilder::http1_ignore_invalid_headers_in_responses() option.ClientBuilder::http1_allow_spaces_after_header_name_in_responses() option.ALL_PROXY environment variable.use_preconfigured_tls when combined with HTTP/3.deflate decompression from using the zlib decoder.Response::{text, text_with_charset}() to strip BOM characters.Fix RequestBuilder::json() method from overriding a previously set content-type header. An existing value will be left in place.
RequestBuilder::json() method from overriding a previously set content-type header. An existing value will be left in place.Upgrade internal dependencies of Experimental HTTP/3 to use quinn v0.9
- Chore: set MSRV in Cargo.toml. - Docs: fix build on docs.rs
Cargo.toml.Add RequestBuilder methods to split and reconstruct from its parts.
RequestBuilder methods to split and reconstruct from its parts.connection_verbose to log write_vectored calls.Adds Proxy::no_proxy(url) that works like the NO_PROXY environment variable.
Proxy::no_proxy(url) that works like the NO_PROXY environment variable.multipart::Part::headers(headers) method to add custom headers.Response::bytes_stream().Add ClientBuilder::dns_resolver() option for custom DNS resolvers.
ClientBuilder::dns_resolver() option for custom DNS resolvers.ClientBuilder::tls_sni(bool) option to enable or disable TLS Server Name Indication.Identity::from_pkcs8_pem() constructor when using native-tls.redirect::Policy::limited(0) from following any redirects.Add ClientBuilder::resolve_to_addrs() which allows a slice of IP addresses to be specified for a single host.
ClientBuilder::resolve_to_addrs() which allows a slice of IP addresses to be specified for a single host.Response::upgrade() to await whether the server agrees to an HTTP upgrade.Add HTTP/2 keep-alive configuration methods on ClientBuilder.
ClientBuilder.ClientBuilder::http1_allow_obsolete_multiline_headers_in_responses().impl Service<Request> for Client and &'_ Client.RequestBuilder::basic_auth().RequestBuilder::header to not override sensitive if user explicitly set on a HeaderValue.Add Error::url() to access the URL of an error.
Error::url() to access the URL of an error.Response::extensions() to access the http::Extensions of a response.rustls-native-certs to log an error instead of panicking when loading an invalid system certificate.Add ClientBuilder::http09_responses(bool) option to allow receiving HTTP/0.9 responses.
ClientBuilder::http09_responses(bool) option to allow receiving HTTP/0.9 responses.Update internal webpki-roots dependency.
Add blocking::ClientBuilder::resolve() option, matching the async builder.
blocking::ClientBuilder::resolve() option, matching the async builder.From<tokio::fs::File> for Body.blocking request-scoped timeout applying to bodies as well.rustls to 0.20.(wasm) Fix request bodies more.
Add ClientBuilder::http1_only() method.
ClientBuilder::http1_only() method.tls::Version type, and ClientBuilder::min_tls_version() and ClientBuilder::max_tls_version() methods.TryFrom<Request> for http::Request.Clone for Identity.NO_PROXYenvironment variable parsing to more closely match curl's. Comma-separated entries are now trimmed for whitespace, and * is allowed to match everything.https_only option.Body::as_bytes() method.JsValue.Add ClientBuilder::resolve() option to override DNS resolution for specific domains.
ClientBuilder::resolve() option to override DNS resolution for specific domains.native-tls-alpn Cargo feature to use ALPN with the native-tls backend.ClientBuilder::deflate() option and deflate Cargo feature to support decoding response bodies using deflate.RequestBuilder::version() to allow setting the HTTP version of a request.rustls-tls backend, when the server uses TLS v1.2 or v1.3.try_clone to Request and RequestBuilderYour coding agent can read these notes before it upgrades. Set up the MCP server →