Skip to content

Upgrading ureq 2 to 3

Breaking2.12.1 → 3.5.0Breaking11Security3Platform2New21Changed28Fixed49Other20

BreakingUpgrade verdict

11 breaking changes and 2 platform requirement changes and 3 security fixes.

  • The json feature is no longer turned on automatically; you must enable it yourself if you need it.
  • The library no longer uses the `url` crate, so any code depending on that crate being re-exported or used internally may need changes.
  • Remove many uses of Box::new from Connector chain.
  • Rename hoot -> ureq_proto.
Top 5 of 16 that need code or config changes

Rust requirement changed in 3.3.0: 1.71 → 1.85.

Breaking11
Stops enabling the json feature by default, reverting an unintended default change.
json
Removes the dependency on the url crate.
url
Remove many uses of Box::new from Connector chain.
Rename hoot -> ureq_proto.
hootureq_proto
Remove pub-field config structs in favor of builders.
Rename BodyWithConfig::into_reader -> reader.
Decode proxy URL credentials once; literal percent signs must be escaped as %25.
Retry socket reads interrupted by EINTR when timeout (technically breaking).
EINTR
Seals RequestExt, which is technically breaking for external implementors.
RequestExt
Replaces RequestBuilder Deref with explicit wrappers.
RequestBuilder
Stops passing internal state in Config.
Config
Security3
Prepare 3.5.0 and fix dependency advisories and warnings.
Updates TLS dependencies to pick up security fixes.
Redacts the URI and Location header at debug log level.
Platform2
Bumps the minimum supported Rust version from 1.71 to 1.85 and moves to edition 2024.
MSRV 1.71.1 to follow rustls.