actix-web
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust
4.15.0
78M downloads/mo
#927 most downloaded on crates.io
actix/actix-web
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Release timing varies
gaps range from 1 weeks to 7 months
Some releases are documented
notes for 48 of 105 stable releases
3 versions withdrawn
withdrawn after publishing
9 years old
158 releases · first in 2017
6 releases in the last 12 months
see the full history below
Release timeline
158 releases · Oct 2017 to Aug 2026
2018
2019
2020
2021
2022
2023
2024
2025
2026
Releases
latest 60 of 158-
4.15.021 Aug 2026Release notes
Open source →- Add
Error::add_response_mapper()to allow middleware to modify error-generated responses before they are sent. - Remove the experimental
experimental-io-uringcrate feature.
Release notes
Open source →- Add
Error::add_response_mapper()to allow middleware to modify error-generated responses before they are sent. - Remove the experimental
experimental-io-uringcrate feature.
- Add
-
4.14.109 Aug 2026Release notes
Open source →- Close idle HTTP/1 keep-alive connections during graceful shutdown and let active connections finish only their current request before closing.
Release notes
Open source →- Close idle HTTP/1 keep-alive connections during graceful shutdown and let active connections finish only their current request before closing.
-
4.14.021 Jun 2026Release notes
Open source →4.14.0
- Add
HttpRequest::{cookies_raw,cookie_raw}andServiceRequest::{cookies_raw,cookie_raw}for reading request cookies without percent-decoding names and values. #3542 - Enable dual-stack IPv6 sockets on Windows when possible so that Actix-created listeners bound to
[::]also accept IPv4 connections. - Panic when calling
Route::to()orRoute::service()afterRoute::wrap()to prevent silently dropping route middleware. #3944 - Fix
HttpRequest::{match_pattern,match_name}reporting path-only matches when route guards disambiguate overlapping resources. #3346 - Fix
Readlineshandling of lines split across payload chunks so combined line limits are enforced and complete lines are yielded. - Fix app data being retained after graceful shutdown with in-flight slow request bodies. #3100
- Update
foldhashdependency to0.2. - Update
randdependency to0.10. - Update
impl-moredependency to0.3. - Add
HttpServer::h1_write_buffer_size().
Release notes
Open source →- Add
HttpRequest::{cookies_raw,cookie_raw}andServiceRequest::{cookies_raw,cookie_raw}for reading request cookies without percent-decoding names and values. #3542 - Enable dual-stack IPv6 sockets on Windows when possible so that Actix-created listeners bound to
[::]also accept IPv4 connections. - Panic when calling
Route::to()orRoute::service()afterRoute::wrap()to prevent silently dropping route middleware. #3944 - Fix
HttpRequest::{match_pattern,match_name}reporting path-only matches when route guards disambiguate overlapping resources. #3346 - Fix
Readlineshandling of lines split across payload chunks so combined line limits are enforced and complete lines are yielded. - Fix app data being retained after graceful shutdown with in-flight slow request bodies. #3100
- Update
foldhashdependency to0.2. - Update
randdependency to0.10. - Update
impl-moredependency to0.3. - Add
HttpServer::h1_write_buffer_size().
- Add
-
4.13.018 Feb 2026Release notes
Open source →- Minimum supported Rust version (MSRV) is now 1.88.
- Improve HTTP/2 upload throughput by increasing default flow control window sizes. #3638
- Add
HttpServer::{h2_initial_window_size, h2_initial_connection_window_size}methods for tuning. #3638 - Add
HttpRequest::url_for_mapandHttpRequest::url_for_itermethods for named URL parameters. #3895 - Ignore unparsable cookies in
Cookierequest header. - Add
experimental-introspectionfeature to report configured routes #3594 - Add config/method for
TCP_NODELAY. #3918 - Fix panic when
NormalizePathrewrites a scoped dynamic path before extraction (e.g.,scope("{tail:.*}")+Path<String>). #3562 - Do not compress 206 Partial Content responses. #3191
-
4.12.126 Nov 2025 -
4.12.016 Nov 2025Release notes
Open source →actix_web::response::builder::HttpResponseBuilder::streaming()now setsContent-Typetoapplication/octet-streamifContent-Typedoes not exist.actix_web::response::builder::HttpResponseBuilder::streaming()now callsactix_web::response::builder::HttpResponseBuilder::no_chunking()and returnsSizedStreamifContent-Lengthis set by user.- Add
wscrate feature (on-by-default) which forwards toactix-httpand guards some of itsResponseErrorimpls. - Add public export for
EitherExtractErrorinerrormodule.
-
4.11.012 May 2025Release notes
Open source →- Add
Logger::log_level()method. - Improve handling of non-UTF-8 header values in
Loggermiddleware. - Add
HttpServer::shutdown_signal()method. - Mark
HttpServeras#[must_use]. - Allow SVG images to be compressed by the
Compressmiddleware. - Ignore
Hostheader inHostguard when connection protocol is HTTP/2. - Re-export
mimedependency. - Update
brotlidependency to8.
- Add
-
4.10.210 Mar 2025 -
4.10.110 Mar 2025 -
4.10.010 Mar 2025Release notes
Open source →Added
- Implement
ResponderforResult<(), E: Into<Error>>. ReturningOk(())responds with HTTP 204 No Content.
Changed
- On Windows, an error is now returned from
HttpServer::bind()(or TLS variants) when binding to a socket that's already in use. - Update
brotlidependency to7. - Minimum supported Rust version (MSRV) is now 1.75.
- Implement
-
4.9.010 Aug 2024 -
4.8.020 Jun 2024Release notes
Open source →Added
- Add
web::Htmlresponder. - Add
HttpRequest::full_url()method to get the complete URL of the request.
Fixed
- Always remove port from return value of
ConnectionInfo::realip_remote_addr()when handling IPv6 addresses. from theForwardedheader. - The
UrlencodedError::ContentTypevariant (relevant to theFormextractor) now uses the 415 (Media Type Unsupported) status code in it'sResponseErrorimplementation. - Apply
HttpServer::max_connection_rate()setting when using rustls v0.22 or v0.23.
- Add
-
4.7.008 Jun 2024Release notes
Open source →Added
- Add
#[scope]macro. - Add
middleware::Identitytype. - Add
CustomizeResponder::add_cookie()method. - Add
guard::GuardContext::app_data()method. - Add
compat-routing-macros-force-pubcrate feature which (on-by-default) which, when disabled, causes handlers to inherit their attached function's visibility. - Add
compatcrate feature group (on-by-default) which, when disabled, helps with transitioning to some planned v5.0 breaking changes, starting only withcompat-routing-macros-force-pub. - Implement
From<Box<dyn ResponseError>>forError.
- Add
-
4.6.019 May 2024Release notes
Open source →Added
- Add
unicodecrate feature (on-by-default) to switch betweenregexandregex-liteas a trade-off between full unicode support and binary size. - Add
rustls-0_23crate feature. - Add
HttpServer::{bind_rustls_0_23, listen_rustls_0_23}()builder methods. - Add
HttpServer::tls_handshake_timeout()builder method forrustls-0_22andrustls-0_23.
Changed
- Update
brotlidependency to6. - Minimum supported Rust version (MSRV) is now 1.72.
Fixed
- Avoid type confusion with
rustlsin some circumstances.
- Add
-
4.5.104 Feb 2024 -
4.5.004 Feb 2024Release notes
Open source →Added
- Add
rustls-0_22crate feature. - Add
HttpServer::{bind_rustls_0_22, listen_rustls_0_22}()builder methods.
- Add
-
4.4.124 Dec 2023Release notes
Open source →Changed
- Updated
zstddependency to0.13. - Compression middleware now prefers brotli over zstd over gzip.
Fixed
- Fix validation of
Jsonextractor whenJsonConfig::validate_content_type()is set to false.
- Updated
-
4.4.029 Aug 2023Release notes
Open source →Added
- Add
HttpServer::{bind, listen}_auto_h2c()methods behind newhttp2crate feature. - Add
HttpServer::{bind, listen}_rustls_021()methods for Rustls v0.21 support behind newrustls-0_21crate feature. - Add
Resource::{get, post, etc...}methods for more concisely adding routes that don't need additional guards. - Add
web::Payload::to_bytes[_limited]()helper methods. - Add missing constructors on
HttpResponsefor several status codes. - Add
http::header::ContentLengthtyped header. - Implement
Defaultforweb::Data. - Implement
serde::Deserializeforweb::Data. - Add
rustls-0_20crate feature, which the existingrustlsfeature now aliases.
Changed
- Handler functions can now receive up to 16 extractor parameters.
- The
Compressmiddleware no longer compresses image or video content. - Hide sensitive header values in
HttpRequest'sDebugoutput. - Minimum supported Rust version (MSRV) is now 1.68 due to transitive
timedependency.
- Add
-
4.3.126 Feb 2023 -
4.3.021 Jan 2023Release notes
Open source →Added
- Add
ContentDisposition::attachment()constructor. #2867 - Add
ErrorHandlers::default_handler()(as well asdefault_handler_{server, client}()) to make registering handlers for groups of response statuses easier. #2784 - Add
Logger::custom_response_replace(). #2631 - Add rudimentary redirection service at
web::redirect()/web::Redirect. #1961 - Add
guard::Acceptablefor matching againstAcceptheader MIME types. #2265 - Add fallible versions of
testhelpers:try_call_service(),try_call_and_read_body_json(),try_read_body(), andtry_read_body_json(). #2961
Fixed
- Add
Allowheader toResource's default responses when no routes are matched. #2949
- Add
-
4.2.112 Sep 2022Release notes
Open source →Fixed
- Bump minimum version of
actix-httpdependency to fix compatibility issue. #2871
- Bump minimum version of
-
4.2.011 Sep 2022Release notes
Open source →Added
- Add
#[routes]macro to support multiple paths for one handler. #2718 - Add
ServiceRequest::{parts, request}()getter methods. #2786 - Add configuration options for TLS handshake timeout via
HttpServer::{rustls, openssl}_with_configmethods. #2752
Changed
- Minimum supported Rust version (MSRV) is now 1.59 due to transitive
timedependency.
- Add
-
4.1.011 Jun 2022Release notes
Open source →Added
- Add
ServiceRequest::extract()to make it easier to use extractors when writing middlewares. #2647 - Add
Route::wrap()to allow individual routes to use middleware. #2725 - Add
ServiceConfig::default_service(). #2338 #2743 - Implement
ResponseErrorforstd::convert::Infallible
Changed
- Minimum supported Rust version (MSRV) is now 1.56 due to transitive
hashbrowndependency.
Fixed
- Clear connection-level data on
HttpRequestdrop. #2742
- Add
-
4.0.125 Feb 2022 -
4.0.025 Feb 2022Release notes
Open source →Dependencies
- Updated
actix-*to Tokio v1-based versions. #1813 - Updated
actix-web-codegento4.0.0. - Updated
cookieto0.16. #2555 - Updated
language-tagsto0.3. - Updated
randto0.8. - Updated
rustlsto0.20. #2414 - Updated
tokioto1.
Added
- Crate Features:
- Types:
CustomizeResponderfor customizing response. #2510dev::ServerHandlere-export fromactix-server. #2442dev::ServiceFactoryre-export fromactix-service. #2325guard::GuardContextfor use with theGuardtrait. #2552http::header::AcceptEncodingtyped header. #2482http::header::Rangetyped header. #2485http::KeepAlivere-export fromactix-http. #2625middleware::Compatthat boxes middleware types likeLoggerandCompressto be used with constrained type bounds. #1865web::Headerextractor for extracting typed HTTP headers in handlers. #2094
- Methods:
dev::ServiceRequest::guard_ctx()for obtaining a guard context. #2552dev::ServiceRequest::parts_mut(). #2177dev::ServiceResponse::map_into_{left,right}_body()andHttpResponse::map_into_boxed_body(). #2468Either<web::Json<T>, web::Form<T>>::into_inner()which returns the inner type for whichever variant was created. Also works forEither<web::Form<T>, web::Json<T>>. #1894http::header::AcceptLanguage::{ranked, preference}(). #2480HttpResponse::add_removal_cookie(). #2586HttpResponse::map_into_{left,right}_body()andHttpResponse::map_into_boxed_body(). #2468HttpServer::worker_max_blocking_threadsfor setting block thread pool. #2200middleware::Logger::log_target()to allow customize. #2594Responder::customize()trait method that wraps responder inCustomizeResponder. #2510Route::service()for using hand-written services as handlers. #2262ServiceResponse::into_parts(). #2499TestServer::client_headers()method. #2097web::ServiceConfig::configure()to allow easy nesting of configuration functions. #1988
- Trait Implementations:
- Misc:
#[actix_web::test]macro for setting up tests with a runtime. #2409- Enable registering a vec of services of the same type to
App#1933 - Add
services!macro for helping register multiple services toApp. #1933 - Option to allow
Jsonextractor to work without aContent-Typeheader present. #2362 - Connection data set through the
HttpServer::on_connectcallback is now accessible only from the newHttpRequest::conn_data()andServiceRequest::conn_data()methods. #2491
Changed
- Functions:
guard::fn_guardfunctions now receives a&GuardContext. #2552guard::Notis now generic over the type of guard it wraps. #2552test::{call_service, read_response, read_response_json, send_request}()now receive a&Service. #1905- Some guard functions now return
impl Guardand their concrete types are made private:guard::Headerand all the method guards. #2552 - Rename
test::{default_service => status_service}(). Old name is deprecated. #2518 - Rename
test::{read_response_json => call_and_read_body_json}(). Old name is deprecated. #2518 - Rename
test::{read_response => call_and_read_body}(). Old name is deprecated. #2518
- Traits:
- Types:
App'sB(body) type parameter been removed. As a result,Apps can be returned from functions now. #2493Compressmiddleware's response type is nowEitherBody<Encoder<B>>. #2448error::BlockingErroris now a unit struct. It's now only triggered when blocking thread pool has shutdown. #1957ErrorHandlerResponse's response variants now useServiceResponse<EitherBody<B>>. #2515ErrorHandlersmiddleware's response types now useServiceResponse<EitherBody<B>>. #2515http::header::Encodingnow only representsContent-Encodingtypes. #2501middleware::Conditiongained a broader middleware compatibility. #2635Resourceno longer require service body type to be boxed. #2526Scopeno longer require service body type to be boxed. #2523web::Paths inner field is now private. #1894web::Payload's inner field is now private. #2384- Error enums are now marked
#[non_exhaustive]. #2148
- Enum Variants:
- Methods:
App::data()is deprecated;App::app_data()should be preferred. #2271dev::JsonBody::new()returns a default limit of 32kB to be consistent withJsonConfigand the default behaviour of theweb::Json<T>extractor. #2010dev::ServiceRequest::{into_parts, from_parts}()can no longer fail. #1893dev::ServiceRequest::from_requestcan no longer fail. #1893dev::ServiceResponse::error_response()now uses body type ofBoxBody. #2201dev::ServiceResponse::map_body()closure receives and returnsBinstead ofResponseBody<B>. #2201http::header::ContentType::html()now producestext/html; charset=utf-8instead oftext/html. #2423HttpRequest::url_for's constructed URLs no longer contain query or fragment. #2430HttpResponseBuilder::json()can now receive data by value and reference. #1903HttpServer::{listen_rustls, bind_rustls}()now honor the ALPN protocols in the configuration parameter. [#2226]middleware::NormalizePath()now will not try to normalize URIs with no valid path #2246test::TestRequest::param()now accepts more than just static strings. #2172web::Data::into_inner()andData::get_ref()no longer requireT: Sized. #2403- Rename
HttpServer::{client_timeout => client_request_timeout}(). #2611 - Rename
HttpServer::{client_shutdown => client_disconnect_timeout}(). #2611 - Rename
http::header::Accept::{mime_precedence => ranked}(). #2480 - Rename
http::header::Accept::{mime_preference => preference}(). #2480 - Rename
middleware::DefaultHeaders::{content_type => add_content_type}(). #1875 - Rename
dev::ConnectionInfo::{remote_addr => peer_addr}, deprecating the old name. #2554
- Trait Implementations:
HttpResponsecan now be used as aResponderwith any body type. #2567
- Misc:
- Maximum number of handler extractors has increased to 12. #2582
- The default
TrailingSlashbehavior is nowTrim, in line with existing documentation. See migration guide for implications. #1875 Resultextractor wrapper can now convert error types. #2581- Compress middleware will return
406 Not Acceptablewhen no content encoding is acceptable to the client. #2344 - Adjusted default JSON payload limit to 2MB (from 32kb). #2162
- All error trait bounds in server service builders have changed from
Into<Error>toInto<Response<BoxBody>>. #2253 - All error trait bounds in message body and stream impls changed from
Into<Error>toInto<Box<dyn std::error::Error>>. #2253 - Improve spec compliance of
dev::ConnectionInfoextractor. #2282 - Associated types in
FromRequestimplementation forOptionandResulthave changed. #2581 - Reduce the level from
errortodebugfor the log line that is emitted when a500 Internal Server Erroris built usingHttpResponse::from_error. #2201 - Minimum supported Rust version (MSRV) is now 1.54.
Fixed
- Auto-negotiation of content encoding is more fault-tolerant when using the
Compressmiddleware. #2501 - Scope and Resource middleware can access data items set on their own layer. #2288
- Multiple calls to
App::data()with the same type now keeps the latest call's data. #1906 - Typed headers containing lists that require one or more items now enforce this minimum. #2482
dev::ConnectionInfo::peer_addrwill no longer return the port number. #2554dev::ConnectionInfo::realip_remote_addrwill no longer return the port number if sourcing the IP from the peer's socket address. #2554- Accept wildcard
*items inAcceptLanguage. #2480 - Relax
Unpinbound onS(stream) parameter ofHttpResponseBuilder::streaming. #2448 - Fix quality parse error in
http::header::AcceptEncodingtyped header. #2344 - Double ampersand in
middleware::Loggerformat is escaped correctly. #2067 - Added the underlying parse error to
test::read_body_json's panic message. #1812
Security
cookieupgrade addressesRUSTSEC-2020-0071.
Removed
- Crate Features:
compressfeature. #2065
- Functions:
- Traits:
BodyEncoding; signalling content encoding is now only done via theContent-Encodingheader. #2565
- Types:
dev::{BodySize, MessageBody, SizedStream}re-exports; they are exposed through thebodymodule. #2468EitherExtractErrordirect export. #2510rt::{Arbiter, ArbiterHandle}re-exports. #2619test::TestServer; moved to newactix-testcrate. #2112test::TestServerConfig; moved to newactix-testcrate. #2112web::HttpRequestre-export. #2663web::HttpResponsere-export. #2663
- Methods:
AppService::set_service_data; for custom HTTP service factories adding application data, use the layered data model by callingServiceRequest::add_data_containerwhen handling requests instead. #1906dev::ConnectionInfo::get. #2487dev::ServiceResponse::checked_expr. #2401HttpRequestBuilder::del_cookie. #2591HttpResponse::take_bodyand oldHttpResponse::into_bodymethod that casted body type. #2201HttpResponseBuilder::json2(). #1903middleware::Compress::new; restricting compression algorithm is done through feature flags. #2501test::TestRequest::with_header(); usetest::TestRequest::default().insert_header(). #1869
- Trait Implementations:
- Misc:
- The
clientmodule was removed; use theawccrate directly. 871ca5e4 middleware::{normalize, err_handlers}modules; all necessary middleware types are now exposed in themiddlewaremodule.
- The
<details> <summary>4.0.0 Pre-Releases</summary>
- Updated
-
4.0.0-rc.308 Feb 2022 pre-releaseRelease notes
Open source →Changed
middleware::Conditiongained a broader compatibility;Compatis needed in fewer cases. #2635
Added
-
4.0.0-rc.202 Feb 2022 pre-releaseRelease notes
Open source →Added
- On-by-default
macrosfeature flag to enable routing and runtime macros. #2619
Removed
rt::{Arbiter, ArbiterHandle}re-exports. #2619
- On-by-default
-
4.0.0-rc.101 Feb 2022 pre-releaseRelease notes
Open source →Changed
- Rename
HttpServer::{client_timeout => client_request_timeout}. #2611 - Rename
HttpServer::{client_shutdown => client_disconnect_timeout}. #2611
Removed
impl Future for HttpResponse. #2601
- Rename
-
4.0.0-beta.2121 Jan 2022 pre-release -
4.0.0-beta.2014 Jan 2022 pre-releaseRelease notes
Open source →Added
GuardContext::header#2569ServiceConfig::configureto allow easy nesting of configuration functions. #1988
Changed
HttpResponsecan now be used as aResponderwith any body type. #2567Resultextractor wrapper can now convert error types. #2581- Associated types in
FromRequestimpl forOptionandResulthas changed. #2581 - Maximum number of handler extractors has increased to 12. #2582
- Removed bound
<B as MessageBody>::Error: Debugin test utility functions in order to support returning opaque apps. #2584
-
4.0.0-beta.1904 Jan 2022 pre-releaseRelease notes
Open source →Added
Changed
AcceptEncoding::preferencenow returnsOption<Preference<Encoding>>. #2501- Rename methods
BodyEncoding::{encoding => encode_with, get_encoding => preferred_encoding}. #2501 http::header::Encodingnow only representsContent-Encodingtypes. #2501
Fixed
- Auto-negotiation of content encoding is more fault-tolerant when using the
Compressmiddleware. #2501
Removed
-
4.0.0-beta.1829 Dec 2021 pre-releaseRelease notes
Open source →Changed
- Update
cookiedependency (re-exported) to0.16. #2555 - Minimum supported Rust version (MSRV) is now 1.54.
Security
cookieupgrade addressesRUSTSEC-2020-0071.
- Update
-
4.0.0-beta.1729 Dec 2021 pre-releaseRelease notes
Open source →Added
guard::GuardContextfor use with theGuardtrait. #2552ServiceRequest::guard_ctxfor obtaining a guard context. #2552
Changed
Guardtrait now receives a&GuardContext. #2552guard::fn_guardfunctions now receives a&GuardContext. #2552- Some guards now return
impl Guardand their concrete types are made private:guard::Headerand all the method guards. #2552 - The
Notguard is now generic over the type of guard it wraps. #2552
Fixed
-
4.0.0-beta.1627 Dec 2021 pre-release -
4.0.0-beta.1517 Dec 2021 pre-releaseRelease notes
Open source →Added
- Method on
Respondertrait (customize) for customizing responders andCustomizeResponderstruct. #2510 - Implement
DebugforDefaultHeaders. #2510
Changed
- Align
DefaultHeadermethod terminology, deprecating previous methods. #2510 - Response service types in
ErrorHandlersmiddleware now useServiceResponse<EitherBody<B>>to allow changing the body type. #2515 - Both variants in
ErrorHandlerResponsenow useServiceResponse<EitherBody<B>>. #2515 - Rename
test::{default_service => simple_service}. Old name is deprecated. #2518 - Rename
test::{read_response_json => call_and_read_body_json}. Old name is deprecated. #2518 - Rename
test::{read_response => call_and_read_body}. Old name is deprecated. #2518 - Relax body type and error bounds on test utilities. #2518
Removed
- Method on
-
4.0.0-beta.1411 Dec 2021 pre-releaseRelease notes
Open source →Added
- Methods on
AcceptLanguage:rankedandpreference. #2480 AcceptEncodingtyped header. #2482Rangetyped header. #2485HttpResponse::map_into_{left,right}_bodyandHttpResponse::map_into_boxed_body. #2468ServiceResponse::map_into_{left,right}_bodyandHttpResponse::map_into_boxed_body. #2468- Connection data set through the
HttpServer::on_connectcallback is now accessible only from the newHttpRequest::conn_data()andServiceRequest::conn_data()methods. #2491 HttpRequest::{req_data,req_data_mut}. #2487ServiceResponse::into_parts. #2499
Changed
- Rename
Accept::{mime_precedence => ranked}. #2480 - Rename
Accept::{mime_preference => preference}. #2480 - Un-deprecate
App::data_factory. #2484 HttpRequest::url_forno longer constructs URLs with query or fragment components. #2430- Remove
B(body) type parameter onApp. #2493 - Add
B(body) type parameter onScope. #2492 - Request-local data container is no longer part of a
RequestHead. Instead it is a distinct part of aRequest. #2487
Fixed
- Accept wildcard
*items inAcceptLanguage. #2480 - Re-exports
dev::{BodySize, MessageBody, SizedStream}. They are exposed through thebodymodule. #2468 - Typed headers containing lists that require one or more items now enforce this minimum. #2482
Removed
ConnectionInfo::get. #2487
- Methods on
-
4.0.0-beta.1330 Nov 2021 pre-release -
4.0.0-beta.1222 Nov 2021 pre-releaseRelease notes
Open source →Changed
- Compress middleware's response type is now
AnyBody<Encoder<B>>. #2448
Fixed
- Relax
Unpinbound onS(stream) parameter ofHttpResponseBuilder::streaming. #2448
Removed
dev::ResponseBodyre-export; is function is replaced by the newdev::AnyBodyenum. #2446
- Compress middleware's response type is now
-
4.0.0-beta.1115 Nov 2021 pre-release -
4.0.0-beta.1020 Oct 2021 pre-releaseRelease notes
Open source →Added
- Option to allow
Jsonextractor to work without aContent-Typeheader present. #2362 #[actix_web::test]macro for setting up tests with a runtime. #2409
Changed
- Associated type
FromRequest::Configwas removed. #2233 - Inner field made private on
web::Payload. #2384 Data::into_innerandData::get_refno longer requiresT: Sized. #2403- Updated rustls to v0.20. #2414
- Minimum supported Rust version (MSRV) is now 1.52.
Removed
- Useless
ServiceResponse::checked_exprmethod. #2401
- Option to allow
-
4.0.0-beta.909 Sep 2021 pre-releaseRelease notes
Open source →Added
- Re-export actix-service
ServiceFactoryindevmodule. #2325
Changed
- Compress middleware will return 406 Not Acceptable when no content encoding is acceptable to the client. #2344
- Move
BaseHttpResponsetodev::Response. #2379 - Enable
TestRequest::paramto accept more than just static strings. #2172 - Minimum supported Rust version (MSRV) is now 1.51.
Fixed
- Re-export actix-service
-
4.0.0-beta.826 Jun 2021 pre-releaseRelease notes
Open source →Added
- Add
ServiceRequest::parts_mut. #2177 - Add extractors for
UriandMethod. #2263 - Add extractors for
ConnectionInfoandPeerAddr. #2263 - Add
Route::servicefor using hand-written services as handlers. #2262
Changed
- Change compression algorithm features flags. #2250
- Deprecate
App::dataandApp::data_factory. #2271 - Smarter extraction of
ConnectionInfoparts. #2282
Fixed
- Scope and Resource middleware can access data items set on their own layer. #2288
- Add
-
4.0.0-beta.719 Jun 2021 pre-releaseRelease notes
Open source →Added
HttpServer::worker_max_blocking_threadsfor setting block thread pool. #2200
Changed
- Adjusted default JSON payload limit to 2MB (from 32kb) and included size and limits in the
JsonPayloadError::Overflowerror variant. #2162 ServiceResponse::error_responsenow uses body type ofBody. #2201ServiceResponse::checked_exprnow returns aResult. #2201- Update
language-tagsto0.3. ServiceResponse::take_body. #2201ServiceResponse::map_bodyclosure receives and returnsBinstead ofResponseBody<B>types. #2201- All error trait bounds in server service builders have changed from
Into<Error>toInto<Response<AnyBody>>. #2253 - All error trait bounds in message body and stream impls changed from
Into<Error>toInto<Box<dyn std::error::Error>>. #2253 HttpServer::{listen_rustls(), bind_rustls()}now honor the ALPN protocols in the configuration parameter. [#2226]middleware::normalizenow will not try to normalize URIs with no valid path #2246
Removed
HttpResponse::take_bodyand oldHttpResponse::into_bodymethod that casted body type. #2201
-
4.0.0-beta.617 Apr 2021 pre-releaseRelease notes
Open source →Added
HttpResponseandHttpResponseBuildertypes. #2065
Changed
- Most error types are now marked
#[non_exhaustive]. #2148 - Methods on
ContentDispositionthat tookT: AsRef<str>now takeimpl AsRef<str>.
-
4.0.0-beta.502 Apr 2021 pre-releaseRelease notes
Open source →Added
Headerextractor for extracting common HTTP headers in handlers. #2094- Added
TestServer::client_headersmethod. #2097
Changed
CustomResponderwould return error asHttpResponsewhenCustomResponder::with_headerfailed instead of skipping. (Only the first error is kept when multiple error occur) #2093
Fixed
- Double ampersand in Logger format is escaped correctly. #2067
Removed
-
4.0.0-beta.410 Mar 2021 pre-release -
4.0.0-beta.310 Feb 2021 pre-release -
4.0.0-beta.210 Feb 2021 pre-releaseRelease notes
Open source →Added
- The method
Either<web::Json<T>, web::Form<T>>::into_inner()which returns the inner type for whichever variant was created. Also works forEither<web::Form<T>, web::Json<T>>. #1894 - Add
services!macro for helping register multiple services toApp. #1933 - Enable registering a vec of services of the same type to
App#1933
Changed
- Rework
Respondertrait to be sync and returnsResponse/HttpResponsedirectly. Making it simpler and more performant. #1891 ServiceRequest::into_partsandServiceRequest::from_partscan no longer fail. #1893ServiceRequest::from_requestcan no longer fail. #1893- Our
Eithertype now usesLeft/Rightvariants (instead ofA/B) #1894 test::{call_service, read_response, read_response_json, send_request}take&Servicein argument #1905App::wrap_fn,Resource::wrap_fnandScope::wrap_fnprovide&Servicein closure argument. #1905web::blockno longer requires the output is a Result. #1957
Fixed
- Multiple calls to
App::datawith the same type now keeps the latest call's data. #1906
Removed
- Public field of
web::Pathhas been made private. #1894 - Public field of
web::Queryhas been made private. #1894 TestRequest::with_header; useTestRequest::default().insert_header(). #1869AppService::set_service_data; for custom HTTP service factories adding application data, use the layered data model by callingServiceRequest::add_data_containerwhen handling requests instead. #1906
- The method
-
4.0.0-beta.107 Jan 2021 pre-releaseRelease notes
Open source →Added
Compatmiddleware enabling generic response body/error type of middlewares likeLoggerandCompressto be used inmiddleware::ConditionandResource,Scopeservices. #1865
Changed
- Update
actix-*dependencies to tokio1.0based versions. #1813 - Bumped
randto0.8. - Update
rust-tlsto0.19. #1813 - Rename
HandlertoHandlerServiceand renameFactorytoHandler. #1852 - The default
TrailingSlashis nowTrim, in line with existing documentation. See migration guide for implications. #1875 - Rename
DefaultHeaders::{content_type => add_content_type}. #1875 - MSRV is now 1.46.0.
Fixed
- Added the underlying parse error to
test::read_body_json's panic message. #1812
Removed
- Public modules
middleware::{normalize, err_handlers}. All necessary middleware types are now exposed directly by themiddlewaremodule. - Remove
actix-threadpoolas dependency.actix_threadpool::BlockingErrorerror type can be imported fromactix_web::errormodule. #1878
</details>
-
3.3.318 Dec 2021Release notes
Open source →Changed
- Soft-deprecate
NormalizePath::default(), noting upcoming behavior change in v4. #2529
- Soft-deprecate
-
3.3.201 Dec 2020 -
3.3.129 Nov 2020 -
3.3.025 Nov 2020Release notes
Open source → -
3.2.030 Oct 2020Release notes
Open source →Added
- Implement
exclude_regexfor Logger middleware. #1723 - Add request-local data extractor
web::ReqData. #1748 - Add ability to register closure for request middleware logging. #1749
- Add
app_datatoServiceConfig. #1757 - Expose
on_connectfor access to the connection stream before request is handled. #1754
Changed
Release notes
Open source →- Minimum supported Rust version (MSRV) is now 1.68 due to transitive
timedependency.
- Implement
-
3.1.001 Oct 2020Release notes
Open source →Changed
- Add
TrailingSlash::MergeOnlybehaviour toNormalizePath, which allowsNormalizePathto retain any trailing slashes. #1695 - Remove bound
std::marker::Sizedfromweb::Datato support storingArc<dyn Trait>viaweb::Data::from#1710
Fixed
ResourceMapdebug printing is no longer infinitely recursive. #1708
- Add
-
3.0.215 Sep 2020Release notes
Open source →Fixed
NormalizePathwhen used withTrailingSlash::Trimno longer trims the root path "/". #1678
-
3.0.113 Sep 2020Release notes
Open source →Changed
middleware::normalize::TrailingSlashenum is now accessible. #1673
-
3.0.011 Sep 2020Release notes
Open source →TestServer::stopis now async and will wait for the server and system to shutdown. #2442- Added
TestServer::client_headersmethod. #2097 - Update
actix-serverdependency to2. - Update
actix-tlsdependency to3. - Update
bytesto1.0. #1813 - Minimum supported Rust version (MSRV) is now 1.57.
<details> <summary>3.0.0 Pre-Releases</summary>
-
3.0.0-beta.409 Sep 2020 pre-releaseRelease notes
Open source →Added
middleware::NormalizePathnow has configurable behavior for either always having a trailing slash, or as the new addition, always trimming trailing slashes. #1639
Changed
- Update actix-codec and actix-utils dependencies. #1634
FormConfigandJsonConfigconfigurations are now also considered when set usingApp::data. #1641HttpServer::maxconnis renamed to the more expressiveHttpServer::max_connections. #1655HttpServer::maxconnrateis renamed to the more expressiveHttpServer::max_connection_rate. #1655
-
3.0.0-beta.317 Aug 2020 pre-release