diff --git a/CHANGES.md b/CHANGES.md
index 2dc45c3e..2b5a7100 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -10,6 +10,7 @@
 ### Changed
 * Rename `Accept::{mime_precedence => ranked}`. [#2480]
 * Rename `Accept::{mime_preference => preference}`. [#2480]
+* Un-deprecate `App::data_factory`. [#2484]
 
 ### Fixed
 * Accept wildcard `*` items in `AcceptLanguage`. [#2480]
@@ -19,6 +20,7 @@
 [#2468]: https://github.com/actix/actix-web/pull/2468
 [#2480]: https://github.com/actix/actix-web/pull/2480
 [#2482]: https://github.com/actix/actix-web/pull/2482
+[#2484]: https://github.com/actix/actix-web/pull/2484
 
 
 ## 4.0.0-beta.13 - 2021-11-30
diff --git a/src/app.rs b/src/app.rs
index 36063ec7..efc108cb 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -140,10 +140,6 @@ where
     /// Add application data factory. This function is similar to `.data()` but it accepts a
     /// "data factory". Data values are constructed asynchronously during application
     /// initialization, before the server starts accepting requests.
-    #[deprecated(
-        since = "4.0.0",
-        note = "Construct data value before starting server and use `.app_data(Data::new(val))` instead."
-    )]
     pub fn data_factory<F, Out, D, E>(mut self, data: F) -> Self
     where
         F: Fn() -> Out + 'static,