PackageTrack
Sign in Get early access

ureq

Simple, safe HTTP client

3.4.0 184M downloads/mo #535 most downloaded on crates.io algesten/ureq

What this package is like to depend on

Last release 15 days ago

08 Aug 2026

Release timing varies

gaps range from 8 days to 5 months

Some releases are documented

notes for 57 of 105 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

113 releases · first in 2018

8 releases in the last 12 months

see the full history below

Release timeline

113 releases · Jun 2018 to Aug 2026
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 113
  1. 3.4.0 08 Aug 2026
    Release notes
    • Seal RequestExt (technically breaking) #1189
      • Send canonical Basic authentication scheme to CONNECT proxies #1185
      • Establish target TLS through HTTPS CONNECT proxies #1183
      • Update rustls-platform-verifier to 0.7.0 #1174
      • Fix pooled connections never aging out according to max_idle_age #1172
      • Strip brackets from IPv6-literal hosts before TLS SNI/ServerName #1171
      • RequestExt::middleware_config for conf inside middleware #1169
    Open source →
  2. 3.3.0 21 Mar 2026
    Release notes
    • Bump MSRV 1.71 -> 1.85, edition 2024 #1167
    Open source →
  3. 3.2.1 21 Mar 2026
    Release notes
    • Switch archived utf-8 crate for utf8-zero #1163
    Open source →
  4. 3.2.0 05 Feb 2026
    Release notes
    • Strip Content-Encoding/Content-Length headers after decompression #1156
      • Timeout per resolved ip for try_connect #1152
      • Fix body header bug on redirect #1140
      • ureq-proto 0.5.3 to fix unsolicited 100-continue #1139
      • Make socks5:// locally resolve before calling proxy #1138
      • Add socks5h:// which DOESN'T locally resolve before calling proxy #1138
    Open source →
  5. 3.1.4 08 Nov 2025
    Release notes
    • Set content-type with new Multipart form #1133
    Open source →
  6. 3.1.3 08 Nov 2025
    Release notes
    • Fix short read with multi-byte charset #1131
      • Replace rustls-pemfile usage with rustls-pki-types #1122
      • Support for env NO_PROXY and proxy config #1118
      • Experimental multi-part form support #1102
    Open source →
  7. 3.1.2 08 Sep 2025
    Release notes
    • Fix bug when query is after host "example.com?query" #1115
    Open source →
  8. 3.1.1 06 Sep 2025
    Release notes
    • Fix regression in MSRV (hold back native-tls) #1113
      • Fix edge case regression when setting request header Content-Length: 0 #1109
    Open source →
  9. 3.1.0 17 Aug 2025
    Release notes

    DECISION: webpki-roots and webpki-root-certs goes from pre-release (0.26) to stable release (1.0.0). This is potentially a big change for ureq users. We release this as semver minor.

    • Bump all deps to latest #1104
    • Fixes to CONNECT to follow spec #1103
    • Send Content-Length for File #1100
    • native-tls transport capture and surface underlying errors #1093
    • Bump webpki-roots/webpki-root-certs to 1.0.0 #1089
    • Bump rustls-platform-verifier to 0.6.0 #1089
    • Allow the license CDLA-Permissive-2.0 #1089
    Open source →
  10. 3.0.12 16 Jun 2025
    Release notes
    • Chunked transfer handle abrupt close after 0\r\n #1074
      • Fix incorrect DNS resolving when using proxies #1081
      • Use + instead of %20 for url encoded form bodies #1071
      • Fix problem with double-quotes in cookie values #1068
      • Reduce Body size #1065
      • Fix featue flag public_suffix for CookieStore #1063
      • Improve doc for 10MB limit #1061
    Open source →
  11. 3.0.11 15 Apr 2025
    Release notes
    • Fix CONNECT proxy bug #1057
      • Fix bug setting cookies in redirects #1055
      • Annotated example for making a Transport #1054
      • Feature for adding unencoded query parameters #1039
      • Fix bug in not encoding ' in query parameters #1039
      • Fix bug making timeout settings not working #1051
      • Big refactor of ureq-proto #1042
      • Extension trait for http::Request allowing agent config #1011
    Open source →
  12. 3.0.10 17 Mar 2025
    Release notes
    • Bump rustls-platform-verifier to 0.5.0
    Open source →
  13. 3.0.9 13 Mar 2025
    Release notes
    • Bump deps #1031
      • Allow body for all methods when using http-crate API #1035
      • Improved errors and doc for bespoke transports #1032
    Open source →
  14. 3.0.8 28 Feb 2025
    Release notes
    • Fix incorrect parsing bug "missing http version" #1026
    Open source →
  15. 3.0.7 26 Feb 2025
    Release notes
    • Allow non-standard HTTP methods #1018
      • Fix not appending port to host header #1017
    Open source →
  16. 3.0.6 19 Feb 2025
    Release notes
    • Avoid percent encoding some query parameter chars #1004
      • Fix incorrect LargeResponseHeader #1003
      • Stop passing internal state in Config #996
      • Support request level TlsConfig #996
    Open source →
  17. 3.0.5 08 Feb 2025
    Release notes
    • Fix incorrect reading of valid utf8 #992
      • Fix panic when parsing malformed proxy URI #990
      • ureq::Error wrapped as io::Error should pass through body chain #984
      • send_json should set content-length header #983
    Open source →
  18. 3.0.4 03 Feb 2025
    Release notes
    • Manually unroll some macros to regular code #978
      • Fix bug in rustls-no-provider when disabling ring #973
    Open source →
  19. 3.0.3 30 Jan 2025
    Release notes
    • Use the same data in CONNECT and Host header for proxied requests #967
      • Set default scheme in proxy uri #966
      • Redact URI and Location header on debug level #964
      • Downgrade all logging to debug and below #964
    Open source →
  20. 3.0.2 28 Jan 2025
    Release notes
    • Remove dependency on once_cell #959
      • Fix bug parsing partial redirects #958
      • Expose typestate variables #956
    Open source →
  21. 3.0.1 27 Jan 2025
    Release notes
    • Fix excessive stack sizes #950
      • Do not enable json (by default breaking, but it was a mistake) #948
    Open source →
  22. 3.0.0 26 Jan 2025
    Release notes
    • Replace RequestBuilder Deref with explicit wrappers #944
      • Remove dependency on url crate #943
      • Feature Config::save_redirect_history #939
    Open source →
  23. 3.0.0-rc5 07 Jan 2025 pre-release
    Release notes
    • TlsConfig::unversioned_rustls_crypto_provider() #931
      • Feature rustls-no-provider to compile without ring #931
      • Fix CONNECT proxy Host header #936
      • Re-enable CONNECT proxy support #932
      • Body::content_length #927
      • Handle Authorization: Basic from URI #923
      • Remove many uses of Box::new() from Connector chain #919
    Open source →
  24. 3.0.0-rc4 02 Jan 2025 pre-release
    Release notes
    • Default to TooManyRedirects error #916
      • Add ConfigBuilder::max_redirects_will_error() #916
      • Add new SendBody::into_reader() #914
      • Fix completely broken PEM parsing #912
      • Improve ergonomics for AutoHeaderValue #896
    Open source →
  25. 3.0.0-rc3 27 Nov 2024 pre-release
    Release notes
    • Re-export ureq_proto::ArrayVec #891
      • Expose typestate variables, but #[doc(hidden)] #889
      • Clarify versioning and MSRV policy #887
      • Get last used uri via ResponseExt::get_uri() #884
      • Expose more things for 3rd party Transport impls #886
      • Make accessor fn for Config and TlsConfig #886
      • Move Transport and Resolver traits to unversioned #881
      • Upgrade deps #885
      • MSRV 1.71.1 to follow rustls #885
      • Fix bug in chunked overhead calculation #880
      • Make it possible to disable all automatic headers #876
      • Rename hoot -> ureq_proto#872
      • Fix disable_verification for TLS #871
      • vendored feature flag to get vendored native-tls #866
      • Fix incorrect handling of expect-100 #867
    Open source →
  26. 3.0.0-rc2 18 Oct 2024 pre-release
    Release notes
    • Remove pub-field config structs in favor of builders #848
      • BodyBuilder to create a response Body for test/middleware #847
      • RequestBuilder::send_empty() convenience fn #846
      • Rename BodyWithConfig::into_reader -> reader #845
      • Escape hatch to send body for any method #857
      • Reintrodice RequestBuilder::query #843
      • Reintroduce RequestBuilder::query_pairs #856
      • Reintroduce ResponseBuilder::send_form helper #859
      • (internal) Use HeaderName for non-sensitive headers #855
      • Fix broken build with rustls #832
      • Reduce dependency count, platform-verifier feature #833 #818
    Open source →
  27. 3.0.0-rc1 28 Sep 2024 pre-release
    Release notes
    • Ground up rewrite based on the http crate API.
    Open source →
  28. 2.12.1 04 Dec 2024
    Release notes
    • Do not use multi-version deps (>=x.x.x) #907
    Open source →
  29. 2.12.0 03 Dec 2024
    Release notes
    • Bump MSRV 1.67 -> 1.71 because rustls will soon adopt it #905
      • Unpin rustls dep (>=0.23.19) #905
    Open source →
  30. 2.11.0 28 Nov 2024
    Release notes
    • Fixes for changes to cargo-deny #882
      • Pin rustls dep on 0.23.19 to keep MSRV 1.67 #878
      • Bump MSRV 1.63 -> 1.67 due to time crate #878
      • Re-export rustls #813
    Open source →
  31. 2.10.1 08 Aug 2024
    Release notes
    • default ureq Rustls tls config updated to avoid panic for applications that activate the default Rustls aws-lc-rs feature without setting a process-wide crypto provider. ureq will now use *ring* in this circumstance instead of panicking.
    Open source →
  32. 2.10.0 06 Jul 2024
    Release notes
    • Bump MSRV 1.61 -> 1.63 due to rustls #764
      • Update deps only patch versions (in Cargo.lock) #763
      • Refork frewsxcv/rust-chunked-transfer to fix MIT/Apache2.0 license #761
      • Enable http-crate feature for docs #755
      • Update Rustls from 0.22 to 0.23 - this may be a breaking change if your application depends on Rustls 0.22 (e.g. to provide a custom rustls::ClientConfig to ureq). See the Rustls 0.23.0 changelog for a list of breaking API changes #753
      • Rustls dep to default to ring backend. If your project uses the default ureq TLS config, or constructs its own rustls::ClientConfig with rustls::ClientConfig::builder() you must ensure the Rustls aws-lc-rs feature is not activated, or set the process default cryptography provider before constructing any configs. See the Rustls CryptoProvider docs for more information #753
      • Remove direct dep rustls-webpki #752
      • Fix doc Rustls does now support IP address certificates #759 #753
    Open source →
  33. 2.9.7 25 Apr 2024
    Release notes
    • Update deps base64 0.22, rustls to 0.22.4 #747 #748
      • Parse URL after middleware to enable changing it #745
      • Tidy up code and fix compilation #742, 743
    Open source →
  34. 2.9.6 16 Feb 2024
    Release notes

    Fixed

    • hootbin is optional dep. Tests must be run with feature testdeps #729
    • Exclude script files from cargo package #728
    Open source →
  35. 2.9.5 09 Feb 2024
    Release notes

    Fixed

    • Update deps (cookie 0.18, cookie_store 0.21, unpin url). #722
    Open source →
  36. 2.9.4 31 Jan 2024
    Release notes

    Fixed

    • MSRV 1.61 with CI tests
    Open source →
  37. 2.9.3 30 Jan 2024
    Release notes

    Fixed

    • docs.rs docs
    Open source →
  38. 2.9.2 30 Jan 2024
    Release notes

    Added

    • Replace dependency on httpbin.org for tests/doc-tests. #703

    Fixed

    • Remove Header struct that never should have been exported. #696
    • Update deps (rustls 0.22) #690
    Open source →
  39. 2.9.1 24 Nov 2023
    Release notes

    Fixed

    • Unbreak feature http-interop. This feature is version locked to http crate 0.2
    • New feature http-crate. This feature is for http crate 1.0
    • New feature proxy-from-env to detect proxy settings for global Agent (ureq::get)
    Open source →
  40. 2.9.0 20 Nov 2023
    Release notes

    Fixed

    • Broken rustls dep (introduced new function in patch version) #677
    • Doc and test fixes #670 #673 #674

    Added

    • Upgraded http dep to 1.0
    • http_interop to not require utf-8 headers #672
    • http_interop implement conversion for http::request::Parts #669
    Open source →
  41. 2.8.0 30 Sep 2023
    Release notes

    Fixed

    • Fix regression in IPv6 handling #635
    • Read proxy response to \r\n\r\n #620

    Added

    • Auto-detect proxy from env vars (turned off by default) #649
    • Conversion ureq::Response -> http::Response<Vec<u8>> #638
    • cargo-deny CI action to disallow copy-left and duplicate deps #661
    Open source →
  42. 2.7.1 19 Jun 2023
    Release notes

    Fixed

    • Updated serde_json dependency constraint to be >=1.0.97 #630
    Open source →
  43. 2.7.0 15 Jun 2023
    Release notes

    Fixed

    • Pass User-Agent when connecting to proxy #597
    • Proxy: Use CONNECT for HTTPS requests, but not HTTP requests #587
    • Cookie headers are now cleared on redirect #608
    • HTTP/1.0 responses with Content-Length no longer block until server closes the socket. #625

    Added

    • Conversions to and from http::Response and http::request::Builder #591
    • Updated to rustls 0.21 and rustls-webpki, which add support for IP address certificates #601
    • Response::local_addr #605
    Open source →
  44. 2.6.2 16 Jan 2023
    Release notes

    Fixed

    • Non-empty connection pools were never dropped #583
    Open source →
  45. 2.6.1 03 Jan 2023
    Release notes

    Fixed

    • gzip: examine Content-Length header before removing #578
    Open source →
  46. 2.6.0 02 Jan 2023
    Release notes

    Added

    • Response::remote_addr() #489
    • Request::query_pairs() - make query params from an Iterator of pairs #519

    Fixed

    • Gzip responses with chunked encoding now work with connection pooling #560
    • Don't panic when rustls-native-certs errors #564
    • Responses with zero-length body now work with connection pooling #565
    Open source →
  47. 2.5.0 10 Jul 2022
    Release notes
    • Add tcp no_delay option #465
    • Rework public TLS traits
    • Warn if requests aren't sent #490
    • Fixes for returning stream to pool #509
    • Avoid extra syscalls when content is buffered #508
    • Remove dep on sync_wrapper #514 #528
    • Error instead of panic on large deadlines #517
    • Make ReadWrite trait simpler (used in bespoke TLS impls) #530
    • Buffer short response bodies #531
    • Update cookie/cookie_store dep
    Open source →
  48. 2.4.0 23 Dec 2021
    Release notes
    • Enable gzip feature by default #455
    • gzip and brotli feature flags to enable decompression #453 #421
    • Middleware function on agent #448
    • Agent option to preserve Authorization header on redirects #445
    • Deprecate re-exported serde types #446
    • Widen type of send_json to impl Serializable #446
    • native-tls feature provides an alternative TLS backend #449 #391
    Open source →
  49. 2.3.1 14 Nov 2021
    Release notes
    • Don't panic when given an invalid DNS name #436
    • Update to rustls-native-certs v0.6 #432
    Open source →
  50. 2.3.0 21 Oct 2021
    Release notes
    • Upgrade to rustls 0.20 #427
    • Make test mocks of Response more accurate by removing newline #423
    • Redact sensitive headers when logging prelude #414
    Open source →
  51. 2.2.0 23 Aug 2021
    Release notes
    • Update to latest dependencies
    • Add SOCKS4 support #410
    • Downgrade logging on info level to debug #409
    • Bugfix: Clear content-length header on redirect #394 #395
    Open source →
  52. 2.1.1 27 Apr 2021
    Release notes
    • Bugfix: don't reuse conns with bytes pending from server #372. This reduces Transport errors when using an Agent for connection pooling.
    Open source →
  53. 2.1.0 26 Mar 2021
    Release notes
    • Bugfix: allow status lines without a reason phrase #316
    • Example: "cureq" to easier make ad-hoc command line tests #330
    • Override timeout per Request #335
    • Bugfix: handle non-utf8 status and headers #347 and better errors #329
    • Request inspection (method, url, etc) #310 #350
    • Bugfix: stop percent encoding cookies #353
    • Enforce cookie RFC naming/value rules #353
    • Bugfix: reduce error struct size #356
    Open source →
  54. 2.0.2 21 Feb 2021
    Release notes
    • Bugfix: Apply deadline across redirects. #313
    • OrAnyStatus::or_any_status ergonomic helper
    • Allow header lines to end with only LF #321
    Open source →
  55. 2.0.1 10 Jan 2021
    Release notes
    • Fix handling of 308 redirects (port from 1.5.4 branch)
    • Return UnexpectedEof instead of InvalidData on short responses. #293
    • Implement std::error::Error for error::Transport. #299
    Open source →
  56. 2.0.0 03 Jan 2021
    Release notes
    • Methods that formerly returned Response now return Result<Response, Error>. You'll need to change all instances of .call() to .call()? or handle errors using a match statement.
    • Non-2xx responses are considered Error by default. See Error documentation for details on how to get Response bodies for non-2xx.
    • Rewrite Error type. It's now an enum of two types of error: Status and Transport. Status errors (i.e. non-2xx) can be readily turned into a Response using match statements.
    • Errors now include the source error (e.g. errors from DNS or I/O) when appropriate, as well as the URL that caused an error.
    • The "synthetic error" concept is removed.
    • Move more configuration to Agent. Timeouts, TLS config, and proxy config now require building an Agent.
    • Create AgentBuilder to separate the process of building an agent from using the resulting agent. Headers can be set on an AgentBuilder, not the resulting Agent.
    • Agent is cheaply cloneable with an internal Arc. This makes it easy to share a single agent throughout your program.
    • There is now a default timeout_connect of 30 seconds. Read and write timeouts continue to be unset by default.
    • Add ureq::request_url and Agent::request_url, to send requests with already-parsed URLs.
    • Remove native_tls support.
    • Remove convenience methods options(url), trace(url), and patch(url). To send requests with those verbs use request(method, url).
    • Remove Request::build. This was a workaround because some of Request's methods took &mut self instead of mut self, and is no longer needed. You can simply delete any calls to Request::build.
    • Remove Agent::set_cookie.
    • Remove Header from the public API. The type wasn't used by any public methods.
    • Remove basic auth support. The API was incomplete. We may add back something better in the future.
    • Remove into_json_deserialize. Now into_json handles both serde_json::Value and other types that implement serde::Deserialize. If you were using serde_json before, you will probably have to explicitly annotate a type, like: let v: serde_json::Value = response.into_json();.
    • Rewrite README and top-level documentation.
    Open source →
  57. 2.0.0-rc4 19 Dec 2020 pre-release
    Release notes
    • Remove error_on_non_2xx. #272
    • Do more validation on status line. #266
    • (internal) Add history to response objects #275
    Open source →
  58. 2.0.0-rc3 12 Dec 2020 pre-release
    Release notes
    • Refactor Error to use an enum for easier extraction of status code errors.
    • (Internal) Use BufRead::read_line when reading headers.
    Open source →
  59. 2.0.0-rc2 23 Nov 2020 pre-release
    Release notes
    • These changes are mostly already listed under 2.0.0.
    • Remove the "synthetic error" concept. Methods that formerly returned Response now return Result<Response, Error>.
    • Rewrite Error type. Instead of an enum, it's now a struct with an ErrorKind. This allows us to store the source error when appropriate, as well as the URL that caused an error.
    • Move more configuration to Agent. Timeouts, TLS config, and proxy config now require building an Agent.
    • Create AgentBuilder to separate the process of building an agent from using the resulting agent. Headers can be set on an AgentBuilder, not the resulting Agent.
    • Agent is cheaply cloneable with an internal Arc. This makes it easy to share a single agent throughout your program.
    • There is now a default timeout_connect of 30 seconds. Read and write timeouts continue to be unset by default.
    • Add ureq::request_url and Agent::request_url, to send requests with already-parsed URLs.
    • Remove native_tls support.
    • Remove convenience methods options(url), trace(url), and patch(url). To send requests with those verbs use request(method, url).
    • Remove Request::build. This was a workaround because some of Request's methods took &mut self instead of mut self, and is no longer needed. You can simply delete any calls to Request::build.
    • Remove Agent::set_cookie.
    • Remove Header from the public API. The type wasn't used by any public methods.
    • Remove basic auth support. The API was incomplete. We may add back something better in the future.
    • Remove into_json_deserialize. Now into_json handles both serde_json::Value and other types that implement serde::Deserialize. If you were using serde_json before, you will probably have to explicitly annotate a type, like: let v: serde_json::Value = response.into_json();.
    • Rewrite README and top-level documentation.
    Open source →
  60. 1.5.5 27 Apr 2021

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive