From 1d093486b9508870ad6193a2af8042877859d1ee Mon Sep 17 00:00:00 2001
From: Elijah Ahianyo <elijahahianyo@gmail.com>
Date: Wed, 8 May 2024 10:52:37 -0700
Subject: [PATCH] [REF-2622] Throw warning for incompatible uvicorn version on
 windows (#3246)

---
 reflex/utils/prerequisites.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/reflex/utils/prerequisites.py b/reflex/utils/prerequisites.py
index 2e59b9953..cb83de76c 100644
--- a/reflex/utils/prerequisites.py
+++ b/reflex/utils/prerequisites.py
@@ -914,9 +914,21 @@ def needs_reinit(frontend: bool = True) -> bool:
         return True
 
     if constants.IS_WINDOWS:
+        import uvicorn
+
+        uvi_ver = uvicorn.__version__
         console.warn(
             """Windows Subsystem for Linux (WSL) is recommended for improving initial install times."""
         )
+        if sys.version_info >= (3, 12) and uvi_ver != "0.24.0.post1":
+            console.warn(
+                f"""On Python 3.12, `uvicorn==0.24.0.post1` is recommended for improved hot reload times. Found {uvi_ver} instead."""
+            )
+
+        if sys.version_info < (3, 12) and uvi_ver != "0.20.0":
+            console.warn(
+                f"""On Python < 3.12, `uvicorn==0.20.0` is recommended for improved hot reload times.  Found {uvi_ver} instead."""
+            )
     # No need to reinitialize if the app is already initialized.
     return False