PackageTrack
Sign in Get early access

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
Release Pre-release Withdrawn

Releases

latest 60 of 158
  1. 4.15.0 21 Aug 2026
    Release notes
    • Add Error::add_response_mapper() to allow middleware to modify error-generated responses before they are sent.
    • Remove the experimental experimental-io-uring crate feature.
    Open source →
    Release notes
    • Add Error::add_response_mapper() to allow middleware to modify error-generated responses before they are sent.
    • Remove the experimental experimental-io-uring crate feature.
    Open source →
  2. 4.14.1 09 Aug 2026
    Release notes
    • Close idle HTTP/1 keep-alive connections during graceful shutdown and let active connections finish only their current request before closing.
    Open source →
    Release notes
    • Close idle HTTP/1 keep-alive connections during graceful shutdown and let active connections finish only their current request before closing.
    Open source →
  3. 4.14.0 21 Jun 2026
    Release notes

    4.14.0

    • Add HttpRequest::{cookies_raw,cookie_raw} and ServiceRequest::{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() or Route::service() after Route::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 Readlines handling 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 foldhash dependency to 0.2.
    • Update rand dependency to 0.10.
    • Update impl-more dependency to 0.3.
    • Add HttpServer::h1_write_buffer_size().
    Open source →
    Release notes
    • Add HttpRequest::{cookies_raw,cookie_raw} and ServiceRequest::{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() or Route::service() after Route::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 Readlines handling 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 foldhash dependency to 0.2.
    • Update rand dependency to 0.10.
    • Update impl-more dependency to 0.3.
    • Add HttpServer::h1_write_buffer_size().
    Open source →
  4. 4.13.0 18 Feb 2026
    Release notes
    • 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_map and HttpRequest::url_for_iter methods for named URL parameters. #3895
    • Ignore unparsable cookies in Cookie request header.
    • Add experimental-introspection feature to report configured routes #3594
    • Add config/method for TCP_NODELAY. #3918
    • Fix panic when NormalizePath rewrites a scoped dynamic path before extraction (e.g., scope("{tail:.*}") + Path<String>). #3562
    • Do not compress 206 Partial Content responses. #3191
    Open source →
  5. 4.12.1 26 Nov 2025
    Release notes
    • Correct actix-http dependency requirement.
    Open source →
  6. 4.12.0 16 Nov 2025
    Release notes
    • actix_web::response::builder::HttpResponseBuilder::streaming() now sets Content-Type to application/octet-stream if Content-Type does not exist.
    • actix_web::response::builder::HttpResponseBuilder::streaming() now calls actix_web::response::builder::HttpResponseBuilder::no_chunking() and returns SizedStream if Content-Length is set by user.
    • Add ws crate feature (on-by-default) which forwards to actix-http and guards some of its ResponseError impls.
    • Add public export for EitherExtractError in error module.
    Open source →
  7. 4.11.0 12 May 2025
    Release notes
    • Add Logger::log_level() method.
    • Improve handling of non-UTF-8 header values in Logger middleware.
    • Add HttpServer::shutdown_signal() method.
    • Mark HttpServer as #[must_use].
    • Allow SVG images to be compressed by the Compress middleware.
    • Ignore Host header in Host guard when connection protocol is HTTP/2.
    • Re-export mime dependency.
    • Update brotli dependency to 8.
    Open source →
  8. 4.10.2 10 Mar 2025
    Release notes
    • No significant changes since 4.10.1.
    Open source →
  9. 4.10.1 10 Mar 2025
    Release notes
    • No significant changes since 4.10.0.
    Open source →
  10. 4.10.0 10 Mar 2025
    Release notes

    Added

    • Implement Responder for Result<(), E: Into<Error>>. Returning Ok(()) 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 brotli dependency to 7.
    • Minimum supported Rust version (MSRV) is now 1.75.
    Open source →
  11. 4.9.0 10 Aug 2024
    Release notes

    Added

    • Add middleware::from_fn() helper.
    • Add web::ThinData extractor.
    Open source →
  12. 4.8.0 20 Jun 2024
    Release notes

    Added

    • Add web::Html responder.
    • 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 the Forwarded header.
    • The UrlencodedError::ContentType variant (relevant to the Form extractor) now uses the 415 (Media Type Unsupported) status code in it's ResponseError implementation.
    • Apply HttpServer::max_connection_rate() setting when using rustls v0.22 or v0.23.
    Open source →
  13. 4.7.0 08 Jun 2024
    Release notes

    Added

    • Add #[scope] macro.
    • Add middleware::Identity type.
    • Add CustomizeResponder::add_cookie() method.
    • Add guard::GuardContext::app_data() method.
    • Add compat-routing-macros-force-pub crate feature which (on-by-default) which, when disabled, causes handlers to inherit their attached function's visibility.
    • Add compat crate feature group (on-by-default) which, when disabled, helps with transitioning to some planned v5.0 breaking changes, starting only with compat-routing-macros-force-pub.
    • Implement From<Box<dyn ResponseError>> for Error.
    Open source →
  14. 4.6.0 19 May 2024
    Release notes

    Added

    • Add unicode crate feature (on-by-default) to switch between regex and regex-lite as a trade-off between full unicode support and binary size.
    • Add rustls-0_23 crate feature.
    • Add HttpServer::{bind_rustls_0_23, listen_rustls_0_23}() builder methods.
    • Add HttpServer::tls_handshake_timeout() builder method for rustls-0_22 and rustls-0_23.

    Changed

    • Update brotli dependency to 6.
    • Minimum supported Rust version (MSRV) is now 1.72.

    Fixed

    • Avoid type confusion with rustls in some circumstances.
    Open source →
  15. 4.5.1 04 Feb 2024
    Release notes

    Fixed

    • Fix missing import when using enabling Rustls v0.22 support.
    Open source →
  16. 4.5.0 04 Feb 2024
    Release notes

    Added

    • Add rustls-0_22 crate feature.
    • Add HttpServer::{bind_rustls_0_22, listen_rustls_0_22}() builder methods.
    Open source →
  17. 4.4.1 24 Dec 2023
    Release notes

    Changed

    • Updated zstd dependency to 0.13.
    • Compression middleware now prefers brotli over zstd over gzip.

    Fixed

    • Fix validation of Json extractor when JsonConfig::validate_content_type() is set to false.
    Open source →
  18. 4.4.0 29 Aug 2023
    Release notes

    Added

    • Add HttpServer::{bind, listen}_auto_h2c() methods behind new http2 crate feature.
    • Add HttpServer::{bind, listen}_rustls_021() methods for Rustls v0.21 support behind new rustls-0_21 crate 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 HttpResponse for several status codes.
    • Add http::header::ContentLength typed header.
    • Implement Default for web::Data.
    • Implement serde::Deserialize for web::Data.
    • Add rustls-0_20 crate feature, which the existing rustls feature now aliases.

    Changed

    • Handler functions can now receive up to 16 extractor parameters.
    • The Compress middleware no longer compresses image or video content.
    • Hide sensitive header values in HttpRequest's Debug output.
    • Minimum supported Rust version (MSRV) is now 1.68 due to transitive time dependency.
    Open source →
  19. 4.3.1 26 Feb 2023
    Release notes

    Added

    • Add support for custom methods with the #[route] macro. #2969
    Open source →
  20. 4.3.0 21 Jan 2023
    Release notes

    Added

    • Add ContentDisposition::attachment() constructor. #2867
    • Add ErrorHandlers::default_handler() (as well as default_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::Acceptable for matching against Accept header MIME types. #2265
    • Add fallible versions of test helpers: try_call_service(), try_call_and_read_body_json(), try_read_body(), and try_read_body_json(). #2961

    Fixed

    • Add Allow header to Resource's default responses when no routes are matched. #2949
    Open source →
  21. 4.2.1 12 Sep 2022
    Release notes

    Fixed

    • Bump minimum version of actix-http dependency to fix compatibility issue. #2871
    Open source →
  22. 4.2.0 11 Sep 2022
    Release notes

    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_config methods. #2752

    Changed

    • Minimum supported Rust version (MSRV) is now 1.59 due to transitive time dependency.
    Open source →
  23. 4.1.0 11 Jun 2022
    Release notes

    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 ResponseError for std::convert::Infallible

    Changed

    • Minimum supported Rust version (MSRV) is now 1.56 due to transitive hashbrown dependency.

    Fixed

    • Clear connection-level data on HttpRequest drop. #2742
    Open source →
  24. 4.0.1 25 Feb 2022
    Release notes

    Fixed

    • Use stable version in readme example.
    Open source →
  25. 4.0.0 25 Feb 2022
    Release notes

    Dependencies

    • Updated actix-* to Tokio v1-based versions. #1813
    • Updated actix-web-codegen to 4.0.0.
    • Updated cookie to 0.16. #2555
    • Updated language-tags to 0.3.
    • Updated rand to 0.8.
    • Updated rustls to 0.20. #2414
    • Updated tokio to 1.

    Added

    • Crate Features:
      • cookies; enabled by default. #2619
      • compress-brotli; enabled by default. [#2618]
      • compress-gzip; enabled by default. [#2618]
      • compress-zstd; enabled by default. [#2618]
      • macros; enables routing and runtime macros, enabled by default. #2619
    • Types:
      • CustomizeResponder for customizing response. #2510
      • dev::ServerHandle re-export from actix-server. #2442
      • dev::ServiceFactory re-export from actix-service. #2325
      • guard::GuardContext for use with the Guard trait. #2552
      • http::header::AcceptEncoding typed header. #2482
      • http::header::Range typed header. #2485
      • http::KeepAlive re-export from actix-http. #2625
      • middleware::Compat that boxes middleware types like Logger and Compress to be used with constrained type bounds. #1865
      • web::Header extractor for extracting typed HTTP headers in handlers. #2094
    • Methods:
      • dev::ServiceRequest::guard_ctx() for obtaining a guard context. #2552
      • dev::ServiceRequest::parts_mut(). #2177
      • dev::ServiceResponse::map_into_{left,right}_body() and HttpResponse::map_into_boxed_body(). #2468
      • Either<web::Json<T>, web::Form<T>>::into_inner() which returns the inner type for whichever variant was created. Also works for Either<web::Form<T>, web::Json<T>>. #1894
      • http::header::AcceptLanguage::{ranked, preference}(). #2480
      • HttpResponse::add_removal_cookie(). #2586
      • HttpResponse::map_into_{left,right}_body() and HttpResponse::map_into_boxed_body(). #2468
      • HttpServer::worker_max_blocking_threads for setting block thread pool. #2200
      • middleware::Logger::log_target() to allow customize. #2594
      • Responder::customize() trait method that wraps responder in CustomizeResponder. #2510
      • Route::service() for using hand-written services as handlers. #2262
      • ServiceResponse::into_parts(). #2499
      • TestServer::client_headers() method. #2097
      • web::ServiceConfig::configure() to allow easy nesting of configuration functions. #1988
    • Trait Implementations:
      • Implement Debug for DefaultHeaders. #2510
      • Implement FromRequest for ConnectionInfo and PeerAddr. #2263
      • Implement FromRequest for Method. #2263
      • Implement FromRequest for Uri. #2263
      • Implement Hash for http::header::Encoding. #2501
      • Implement Responder for Vec<u8>. #2625
    • 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 to App. #1933
      • Option to allow Json extractor to work without a Content-Type header present. #2362
      • Connection data set through the HttpServer::on_connect callback is now accessible only from the new HttpRequest::conn_data() and ServiceRequest::conn_data() methods. #2491

    Changed

    • Functions:
      • guard::fn_guard functions now receives a &GuardContext. #2552
      • guard::Not is now generic over the type of guard it wraps. #2552
      • test::{call_service, read_response, read_response_json, send_request}() now receive a &Service. #1905
      • Some guard functions now return impl Guard and their concrete types are made private: guard::Header and 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:
      • guard::Guard::check now receives a &GuardContext. #2552
      • FromRequest::Config associated type was removed. #2233
      • Responder trait has been reworked and now Response/HttpResponse synchronously, making it simpler and more performant. #1891
      • Rename Factory trait to Handler. #1852
    • Types:
      • App's B (body) type parameter been removed. As a result, Apps can be returned from functions now. #2493
      • Compress middleware's response type is now EitherBody<Encoder<B>>. #2448
      • error::BlockingError is now a unit struct. It's now only triggered when blocking thread pool has shutdown. #1957
      • ErrorHandlerResponse's response variants now use ServiceResponse<EitherBody<B>>. #2515
      • ErrorHandlers middleware's response types now use ServiceResponse<EitherBody<B>>. #2515
      • http::header::Encoding now only represents Content-Encoding types. #2501
      • middleware::Condition gained a broader middleware compatibility. #2635
      • Resource no longer require service body type to be boxed. #2526
      • Scope no longer require service body type to be boxed. #2523
      • web::Paths inner field is now private. #1894
      • web::Payload's inner field is now private. #2384
      • Error enums are now marked #[non_exhaustive]. #2148
    • Enum Variants:
      • Either now uses Left/Right variants (instead of A/B) #1894
      • Include size and limits in JsonPayloadError::Overflow. #2162
    • Methods:
      • App::data() is deprecated; App::app_data() should be preferred. #2271
      • dev::JsonBody::new() returns a default limit of 32kB to be consistent with JsonConfig and the default behaviour of the web::Json<T> extractor. #2010
      • dev::ServiceRequest::{into_parts, from_parts}() can no longer fail. #1893
      • dev::ServiceRequest::from_request can no longer fail. #1893
      • dev::ServiceResponse::error_response() now uses body type of BoxBody. #2201
      • dev::ServiceResponse::map_body() closure receives and returns B instead of ResponseBody<B>. #2201
      • http::header::ContentType::html() now produces text/html; charset=utf-8 instead of text/html. #2423
      • HttpRequest::url_for's constructed URLs no longer contain query or fragment. #2430
      • HttpResponseBuilder::json() can now receive data by value and reference. #1903
      • HttpServer::{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 #2246
      • test::TestRequest::param() now accepts more than just static strings. #2172
      • web::Data::into_inner() and Data::get_ref() no longer require T: 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:
      • HttpResponse can now be used as a Responder with any body type. #2567
    • Misc:
      • Maximum number of handler extractors has increased to 12. #2582
      • The default TrailingSlash behavior is now Trim, in line with existing documentation. See migration guide for implications. #1875
      • Result extractor wrapper can now convert error types. #2581
      • Compress middleware will return 406 Not Acceptable when 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> to Into<Response<BoxBody>>. #2253
      • All error trait bounds in message body and stream impls changed from Into<Error> to Into<Box<dyn std::error::Error>>. #2253
      • Improve spec compliance of dev::ConnectionInfo extractor. #2282
      • Associated types in FromRequest implementation for Option and Result have changed. #2581
      • Reduce the level from error to debug for the log line that is emitted when a 500 Internal Server Error is built using HttpResponse::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 Compress middleware. #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_addr will no longer return the port number. #2554
    • dev::ConnectionInfo::realip_remote_addr will no longer return the port number if sourcing the IP from the peer's socket address. #2554
    • Accept wildcard * items in AcceptLanguage. #2480
    • Relax Unpin bound on S (stream) parameter of HttpResponseBuilder::streaming. #2448
    • Fix quality parse error in http::header::AcceptEncoding typed header. #2344
    • Double ampersand in middleware::Logger format is escaped correctly. #2067
    • Added the underlying parse error to test::read_body_json's panic message. #1812

    Security

    Removed

    • Crate Features:
      • compress feature. #2065
    • Functions:
      • test::load_stream and test::load_body; replace usage with body::to_bytes. #2518
      • test::start_with; moved to new actix-test crate. #2112
      • test::start; moved to new actix-test crate. #2112
      • test::unused_addr; moved to new actix-test crate. #2112
    • Traits:
      • BodyEncoding; signalling content encoding is now only done via the Content-Encoding header. #2565
    • Types:
      • dev::{BodySize, MessageBody, SizedStream} re-exports; they are exposed through the body module. #2468
      • EitherExtractError direct export. #2510
      • rt::{Arbiter, ArbiterHandle} re-exports. #2619
      • test::TestServer; moved to new actix-test crate. #2112
      • test::TestServerConfig; moved to new actix-test crate. #2112
      • web::HttpRequest re-export. #2663
      • web::HttpResponse re-export. #2663
    • Methods:
      • AppService::set_service_data; for custom HTTP service factories adding application data, use the layered data model by calling ServiceRequest::add_data_container when handling requests instead. #1906
      • dev::ConnectionInfo::get. #2487
      • dev::ServiceResponse::checked_expr. #2401
      • HttpRequestBuilder::del_cookie. #2591
      • HttpResponse::take_body and old HttpResponse::into_body method that casted body type. #2201
      • HttpResponseBuilder::json2(). #1903
      • middleware::Compress::new; restricting compression algorithm is done through feature flags. #2501
      • test::TestRequest::with_header(); use test::TestRequest::default().insert_header(). #1869
    • Trait Implementations:
      • Implementation of From<either::Either> for Either crate. #2516
      • Implementation of Future for HttpResponse. #2601
    • Misc:
      • The client module was removed; use the awc crate directly. 871ca5e4
      • middleware::{normalize, err_handlers} modules; all necessary middleware types are now exposed in the middleware module.

    <details> <summary>4.0.0 Pre-Releases</summary>

    Open source →
  26. 4.0.0-rc.3 08 Feb 2022 pre-release
    Release notes

    Changed

    • middleware::Condition gained a broader compatibility; Compat is needed in fewer cases. #2635

    Added

    • Implement Responder for Vec<u8>. #2625
    • Re-export KeepAlive in http mod. #2625
    Open source →
  27. 4.0.0-rc.2 02 Feb 2022 pre-release
    Release notes

    Added

    • On-by-default macros feature flag to enable routing and runtime macros. #2619

    Removed

    • rt::{Arbiter, ArbiterHandle} re-exports. #2619
    Open source →
  28. 4.0.0-rc.1 01 Feb 2022 pre-release
    Release notes

    Changed

    • Rename HttpServer::{client_timeout => client_request_timeout}. #2611
    • Rename HttpServer::{client_shutdown => client_disconnect_timeout}. #2611

    Removed

    • impl Future for HttpResponse. #2601
    Open source →
  29. 4.0.0-beta.21 21 Jan 2022 pre-release
    Release notes

    Added

    • HttpResponse::add_removal_cookie. #2586
    • Logger::log_target. #2594

    Removed

    • HttpRequest::req_data[_mut](); request-local data is still available through .extensions(). #2585
    • HttpRequestBuilder::del_cookie. #2591
    Open source →
  30. 4.0.0-beta.20 14 Jan 2022 pre-release
    Release notes

    Added

    • GuardContext::header #2569
    • ServiceConfig::configure to allow easy nesting of configuration functions. #1988

    Changed

    • HttpResponse can now be used as a Responder with any body type. #2567
    • Result extractor wrapper can now convert error types. #2581
    • Associated types in FromRequest impl for Option and Result has changed. #2581
    • Maximum number of handler extractors has increased to 12. #2582
    • Removed bound <B as MessageBody>::Error: Debug in test utility functions in order to support returning opaque apps. #2584
    Open source →
  31. 4.0.0-beta.19 04 Jan 2022 pre-release
    Release notes

    Added

    • impl Hash for http::header::Encoding. #2501
    • AcceptEncoding::negotiate(). #2501

    Changed

    • AcceptEncoding::preference now returns Option<Preference<Encoding>>. #2501
    • Rename methods BodyEncoding::{encoding => encode_with, get_encoding => preferred_encoding}. #2501
    • http::header::Encoding now only represents Content-Encoding types. #2501

    Fixed

    • Auto-negotiation of content encoding is more fault-tolerant when using the Compress middleware. #2501

    Removed

    • Compress::new; restricting compression algorithm is done through feature flags. #2501
    • BodyEncoding trait; signalling content encoding is now only done via the Content-Encoding header. #2565
    Open source →
  32. 4.0.0-beta.18 29 Dec 2021 pre-release
    Release notes

    Changed

    • Update cookie dependency (re-exported) to 0.16. #2555
    • Minimum supported Rust version (MSRV) is now 1.54.

    Security

    Open source →
  33. 4.0.0-beta.17 29 Dec 2021 pre-release
    Release notes

    Added

    • guard::GuardContext for use with the Guard trait. #2552
    • ServiceRequest::guard_ctx for obtaining a guard context. #2552

    Changed

    • Guard trait now receives a &GuardContext. #2552
    • guard::fn_guard functions now receives a &GuardContext. #2552
    • Some guards now return impl Guard and their concrete types are made private: guard::Header and all the method guards. #2552
    • The Not guard is now generic over the type of guard it wraps. #2552

    Fixed

    • Rename ConnectionInfo::{remote_addr => peer_addr}, deprecating the old name. #2554
    • ConnectionInfo::peer_addr will not return the port number. #2554
    • ConnectionInfo::realip_remote_addr will not return the port number if sourcing the IP from the peer's socket address. #2554
    Open source →
  34. 4.0.0-beta.16 27 Dec 2021 pre-release
    Release notes

    Changed

    • No longer require Scope service body type to be boxed. #2523
    • No longer require Resource service body type to be boxed. #2526
    Open source →
  35. 4.0.0-beta.15 17 Dec 2021 pre-release
    Release notes

    Added

    • Method on Responder trait (customize) for customizing responders and CustomizeResponder struct. #2510
    • Implement Debug for DefaultHeaders. #2510

    Changed

    • Align DefaultHeader method terminology, deprecating previous methods. #2510
    • Response service types in ErrorHandlers middleware now use ServiceResponse<EitherBody<B>> to allow changing the body type. #2515
    • Both variants in ErrorHandlerResponse now use ServiceResponse<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

    • Top-level EitherExtractError export. #2510
    • Conversion implementations for either crate. #2516
    • test::load_stream and test::load_body; replace usage with body::to_bytes. #2518
    Open source →
  36. 4.0.0-beta.14 11 Dec 2021 pre-release
    Release notes

    Added

    • Methods on AcceptLanguage: ranked and preference. #2480
    • AcceptEncoding typed header. #2482
    • Range typed header. #2485
    • HttpResponse::map_into_{left,right}_body and HttpResponse::map_into_boxed_body. #2468
    • ServiceResponse::map_into_{left,right}_body and HttpResponse::map_into_boxed_body. #2468
    • Connection data set through the HttpServer::on_connect callback is now accessible only from the new HttpRequest::conn_data() and ServiceRequest::conn_data() methods. #2491
    • HttpRequest::{req_data,req_data_mut}. #2487
    • ServiceResponse::into_parts. #2499

    Changed

    • Rename Accept::{mime_precedence => ranked}. #2480
    • Rename Accept::{mime_preference => preference}. #2480
    • Un-deprecate App::data_factory. #2484
    • HttpRequest::url_for no longer constructs URLs with query or fragment components. #2430
    • Remove B (body) type parameter on App. #2493
    • Add B (body) type parameter on Scope. #2492
    • Request-local data container is no longer part of a RequestHead. Instead it is a distinct part of a Request. #2487

    Fixed

    • Accept wildcard * items in AcceptLanguage. #2480
    • Re-exports dev::{BodySize, MessageBody, SizedStream}. They are exposed through the body module. #2468
    • Typed headers containing lists that require one or more items now enforce this minimum. #2482

    Removed

    • ConnectionInfo::get. #2487
    Open source →
  37. 4.0.0-beta.13 30 Nov 2021 pre-release
    Release notes

    Changed

    • Update actix-tls to 3.0.0-rc.1. #2474
    Open source →
  38. 4.0.0-beta.12 22 Nov 2021 pre-release
    Release notes

    Changed

    • Compress middleware's response type is now AnyBody<Encoder<B>>. #2448

    Fixed

    • Relax Unpin bound on S (stream) parameter of HttpResponseBuilder::streaming. #2448

    Removed

    • dev::ResponseBody re-export; is function is replaced by the new dev::AnyBody enum. #2446
    Open source →
  39. 4.0.0-beta.11 15 Nov 2021 pre-release
    Release notes

    Added

    • Re-export dev::ServerHandle from actix-server. #2442

    Changed

    • ContentType::html now produces text/html; charset=utf-8 instead of text/html. #2423
    • Update actix-server to 2.0.0-beta.9. #2442
    Open source →
  40. 4.0.0-beta.10 20 Oct 2021 pre-release
    Release notes

    Added

    • Option to allow Json extractor to work without a Content-Type header present. #2362
    • #[actix_web::test] macro for setting up tests with a runtime. #2409

    Changed

    • Associated type FromRequest::Config was removed. #2233
    • Inner field made private on web::Payload. #2384
    • Data::into_inner and Data::get_ref no longer requires T: Sized. #2403
    • Updated rustls to v0.20. #2414
    • Minimum supported Rust version (MSRV) is now 1.52.

    Removed

    • Useless ServiceResponse::checked_expr method. #2401
    Open source →
  41. 4.0.0-beta.9 09 Sep 2021 pre-release
    Release notes

    Added

    • Re-export actix-service ServiceFactory in dev module. #2325

    Changed

    • Compress middleware will return 406 Not Acceptable when no content encoding is acceptable to the client. #2344
    • Move BaseHttpResponse to dev::Response. #2379
    • Enable TestRequest::param to accept more than just static strings. #2172
    • Minimum supported Rust version (MSRV) is now 1.51.

    Fixed

    • Fix quality parse error in Accept-Encoding header. #2344
    • Re-export correct type at web::HttpResponse. #2379
    Open source →
  42. 4.0.0-beta.8 26 Jun 2021 pre-release
    Release notes

    Added

    • Add ServiceRequest::parts_mut. #2177
    • Add extractors for Uri and Method. #2263
    • Add extractors for ConnectionInfo and PeerAddr. #2263
    • Add Route::service for using hand-written services as handlers. #2262

    Changed

    • Change compression algorithm features flags. #2250
    • Deprecate App::data and App::data_factory. #2271
    • Smarter extraction of ConnectionInfo parts. #2282

    Fixed

    • Scope and Resource middleware can access data items set on their own layer. #2288
    Open source →
  43. 4.0.0-beta.7 19 Jun 2021 pre-release
    Release notes

    Added

    • HttpServer::worker_max_blocking_threads for setting block thread pool. #2200

    Changed

    • Adjusted default JSON payload limit to 2MB (from 32kb) and included size and limits in the JsonPayloadError::Overflow error variant. #2162
    • ServiceResponse::error_response now uses body type of Body. #2201
    • ServiceResponse::checked_expr now returns a Result. #2201
    • Update language-tags to 0.3.
    • ServiceResponse::take_body. #2201
    • ServiceResponse::map_body closure receives and returns B instead of ResponseBody<B> types. #2201
    • All error trait bounds in server service builders have changed from Into<Error> to Into<Response<AnyBody>>. #2253
    • All error trait bounds in message body and stream impls changed from Into<Error> to Into<Box<dyn std::error::Error>>. #2253
    • HttpServer::{listen_rustls(), bind_rustls()} now honor the ALPN protocols in the configuration parameter. [#2226]
    • middleware::normalize now will not try to normalize URIs with no valid path #2246

    Removed

    • HttpResponse::take_body and old HttpResponse::into_body method that casted body type. #2201
    Open source →
  44. 4.0.0-beta.6 17 Apr 2021 pre-release
    Release notes

    Added

    • HttpResponse and HttpResponseBuilder types. #2065

    Changed

    • Most error types are now marked #[non_exhaustive]. #2148
    • Methods on ContentDisposition that took T: AsRef<str> now take impl AsRef<str>.
    Open source →
  45. 4.0.0-beta.5 02 Apr 2021 pre-release
    Release notes

    Added

    • Header extractor for extracting common HTTP headers in handlers. #2094
    • Added TestServer::client_headers method. #2097

    Changed

    • CustomResponder would return error as HttpResponse when CustomResponder::with_header failed 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

    • The client mod was removed. Clients should now use awc directly. 871ca5e4
    • Integration testing was moved to new actix-test crate. Namely these items from the test module: TestServer, TestServerConfig, start, start_with, and unused_addr. #2112
    Open source →
  46. 4.0.0-beta.4 10 Mar 2021 pre-release
    Release notes

    Changed

    • Feature cookies is now optional and enabled by default. #1981
    • JsonBody::new returns a default limit of 32kB to be consistent with JsonConfig and the default behaviour of the web::Json<T> extractor. #2010
    Open source →
  47. 4.0.0-beta.3 10 Feb 2021 pre-release
    Release notes
    • Update actix-web-codegen to 0.5.0-beta.1.
    Open source →
  48. 4.0.0-beta.2 10 Feb 2021 pre-release
    Release notes

    Added

    • The method Either<web::Json<T>, web::Form<T>>::into_inner() which returns the inner type for whichever variant was created. Also works for Either<web::Form<T>, web::Json<T>>. #1894
    • Add services! macro for helping register multiple services to App. #1933
    • Enable registering a vec of services of the same type to App #1933

    Changed

    • Rework Responder trait to be sync and returns Response/HttpResponse directly. Making it simpler and more performant. #1891
    • ServiceRequest::into_parts and ServiceRequest::from_parts can no longer fail. #1893
    • ServiceRequest::from_request can no longer fail. #1893
    • Our Either type now uses Left/Right variants (instead of A/B) #1894
    • test::{call_service, read_response, read_response_json, send_request} take &Service in argument #1905
    • App::wrap_fn, Resource::wrap_fn and Scope::wrap_fn provide &Service in closure argument. #1905
    • web::block no longer requires the output is a Result. #1957

    Fixed

    • Multiple calls to App::data with the same type now keeps the latest call's data. #1906

    Removed

    • Public field of web::Path has been made private. #1894
    • Public field of web::Query has been made private. #1894
    • TestRequest::with_header; use TestRequest::default().insert_header(). #1869
    • AppService::set_service_data; for custom HTTP service factories adding application data, use the layered data model by calling ServiceRequest::add_data_container when handling requests instead. #1906
    Open source →
  49. 4.0.0-beta.1 07 Jan 2021 pre-release
    Release notes

    Added

    • Compat middleware enabling generic response body/error type of middlewares like Logger and Compress to be used in middleware::Condition and Resource, Scope services. #1865

    Changed

    • Update actix-* dependencies to tokio 1.0 based versions. #1813
    • Bumped rand to 0.8.
    • Update rust-tls to 0.19. #1813
    • Rename Handler to HandlerService and rename Factory to Handler. #1852
    • The default TrailingSlash is now Trim, 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 the middleware module.
    • Remove actix-threadpool as dependency. actix_threadpool::BlockingError error type can be imported from actix_web::error module. #1878

    </details>

    Open source →
  50. 3.3.3 18 Dec 2021
    Release notes

    Changed

    • Soft-deprecate NormalizePath::default(), noting upcoming behavior change in v4. #2529
    Open source →
  51. 3.3.2 01 Dec 2020
    Release notes

    Fixed

    • Removed an occasional unwrap on None panic in NormalizePathNormalization. #1762
    • Fix match_pattern() returning None for scope with empty path resource. #1798
    • Increase minimum socket2 version. #1803
    Open source →
  52. 3.3.1 29 Nov 2020
    Release notes
    • Ensure actix-http dependency uses same serde_urlencoded.
    Open source →
  53. 3.3.0 25 Nov 2020
    Release notes

    Added

    • Add Either<A, B> extractor helper. #1788

    Changed

    • Upgrade serde_urlencoded to 0.7. #1773
    Open source →
  54. 3.2.0 30 Oct 2020
    Release notes

    Added

    • Implement exclude_regex for Logger middleware. #1723
    • Add request-local data extractor web::ReqData. #1748
    • Add ability to register closure for request middleware logging. #1749
    • Add app_data to ServiceConfig. #1757
    • Expose on_connect for access to the connection stream before request is handled. #1754

    Changed

    • Updated actix-web-codegen dependency for access to new #[route(...)] multi-method macro.
    • Print non-configured Data<T> type when attempting extraction. #1743
    • Re-export bytes::Buf{Mut} in web module. #1750
    • Upgrade pin-project to 1.0.
    Open source →
    Release notes
    • Minimum supported Rust version (MSRV) is now 1.68 due to transitive time dependency.
    Open source →
  55. 3.1.0 01 Oct 2020
    Release notes

    Changed

    • Add TrailingSlash::MergeOnly behaviour to NormalizePath, which allows NormalizePath to retain any trailing slashes. #1695
    • Remove bound std::marker::Sized from web::Data to support storing Arc<dyn Trait> via web::Data::from #1710

    Fixed

    • ResourceMap debug printing is no longer infinitely recursive. #1708
    Open source →
    Release notes
    • Minimum supported Rust version (MSRV) is now 1.59.
    Open source →
  56. 3.0.2 15 Sep 2020
    Release notes

    Fixed

    • NormalizePath when used with TrailingSlash::Trim no longer trims the root path "/". #1678
    Open source →
  57. 3.0.1 13 Sep 2020
    Release notes

    Changed

    • middleware::normalize::TrailingSlash enum is now accessible. #1673
    Open source →
  58. 3.0.0 11 Sep 2020
    Release notes
    • No significant changes from 3.0.0-beta.4.
    Open source →
    Release notes
    • TestServer::stop is now async and will wait for the server and system to shutdown. #2442
    • Added TestServer::client_headers method. #2097
    • Update actix-server dependency to 2.
    • Update actix-tls dependency to 3.
    • Update bytes to 1.0. #1813
    • Minimum supported Rust version (MSRV) is now 1.57.

    <details> <summary>3.0.0 Pre-Releases</summary>

    Open source →
  59. 3.0.0-beta.4 09 Sep 2020 pre-release
    Release notes

    Added

    • middleware::NormalizePath now 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
    • FormConfig and JsonConfig configurations are now also considered when set using App::data. #1641
    • HttpServer::maxconn is renamed to the more expressive HttpServer::max_connections. #1655
    • HttpServer::maxconnrate is renamed to the more expressive HttpServer::max_connection_rate. #1655
    Open source →
    Release notes
    • Added TestServer::client_headers method. #2097
    Open source →
  60. 3.0.0-beta.3 17 Aug 2020 pre-release
    Release notes

    Changed

    • Update rustls to 0.18
    Open source →
    Release notes
    • No notable changes.
    Open source →

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