You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Streaming uploads — RequestBuilder::body_stream and Error::NonReplayableBody when retry cannot replay the body.
Tower dual stack — ClientBuilder::transport_stack wires separate buffered and streaming transports; use this when middleware must apply to send_stream().
Strict JSON Schema (feature schema-validate) — optional validation of request/response JSON, query, and path params when the registry is strict; stream responses validate on collect().
Garde validation (feature validate) — json_validated, query_validated, with_headers_validated on builders.
Typed endpoint macros — #[derive(Endpoint)] with #[param], #[query_field], #[query], #[endpoint(register)], and NeedsBody for POST bodies.
SSE — incremental SseDecoder and StreamingResponse::sse_events().
API helpers — into_api_result / send_api, ResponseBodyKind, RecordingBackend for tests, better_fetch::prelude, RequestBuilder::base_url.
Features — full, miette (DiagnosticError), otel (OpenTelemetry re-exports for tracing subscribers).
Breaking: typed .query(...) and EndpointQuery::apply_query return Result; serialization errors become Error::QuerySerialize.
Breaking:ClientConfig::hooks is private; use ClientConfig::effective_hooks().
Breaking:EndpointRequestBuilder implements Deref only (no DerefMut); use typed .query(MyQuery)? instead of stringly .query("key", "value") on ready builders.
Breaking:transport_stack takes (buffered, streaming) and returns two boxed services.
Breaking:impl Endpoint requires Body and Headers associated types (often ()).
Breaking:Error::Transport carries an optional source; Error::RetryExhausted::last is Option<Box<Error>>.
Hooks on streams — on_error runs for failed send_stream() responses even without throw_on_error, matching buffered behavior.
http_service / http_service_boxed — documented: Tower layers apply to buffered send() only; streaming still uses reqwest unless you use transport_stack.