From e335c0ff587b7fa9de504027bc89da0c29a69086 Mon Sep 17 00:00:00 2001 From: Khaleel Al-Adhami Date: Mon, 2 Jun 2025 15:32:20 -0700 Subject: [PATCH 1/2] compile custom components before we get app wraps of the pages --- reflex/app.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/reflex/app.py b/reflex/app.py index 243fbc864c2..56be8012c0e 100644 --- a/reflex/app.py +++ b/reflex/app.py @@ -1293,6 +1293,16 @@ def get_compilation_time() -> str: # Track imports found. all_imports = {} + # Compile custom components. + ( + custom_components_output, + custom_components_result, + custom_components_imports, + ) = compiler.compile_components(dict.fromkeys(CUSTOM_COMPONENTS.values())) + compile_results.append((custom_components_output, custom_components_result)) + all_imports.update(custom_components_imports) + progress.advance(task) + # This has to happen before compiling stateful components as that # prevents recursive functions from reaching all components. for component in self._pages.values(): @@ -1465,16 +1475,6 @@ def _submit_work_without_advancing( ) progress.advance(task) - # Compile custom components. - ( - custom_components_output, - custom_components_result, - custom_components_imports, - ) = compiler.compile_components(dict.fromkeys(CUSTOM_COMPONENTS.values())) - compile_results.append((custom_components_output, custom_components_result)) - all_imports.update(custom_components_imports) - - progress.advance(task) progress.stop() if dry_run: From 34a33b21cfe29457be01128210a35dc6d9c3e7dc Mon Sep 17 00:00:00 2001 From: Khaleel Al-Adhami Date: Mon, 2 Jun 2025 15:42:31 -0700 Subject: [PATCH 2/2] maybe --- reflex/app.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/reflex/app.py b/reflex/app.py index 56be8012c0e..68c81893b83 100644 --- a/reflex/app.py +++ b/reflex/app.py @@ -1293,6 +1293,23 @@ def get_compilation_time() -> str: # Track imports found. all_imports = {} + if (toaster := self.toaster) is not None: + from reflex.components.component import memo + + @memo + def memoized_toast_provider(): + return toaster + + toast_provider = Fragment.create(memoized_toast_provider()) + + app_wrappers[(1, "ToasterProvider")] = toast_provider + + # Add the app wraps to the app. + for key, app_wrap in self.app_wraps.items(): + component = app_wrap(self._state is not None) + if component is not None: + app_wrappers[key] = component + # Compile custom components. ( custom_components_output, @@ -1312,23 +1329,6 @@ def get_compilation_time() -> str: # Add the app wrappers from this component. app_wrappers.update(component._get_all_app_wrap_components()) - if (toaster := self.toaster) is not None: - from reflex.components.component import memo - - @memo - def memoized_toast_provider(): - return toaster - - toast_provider = Fragment.create(memoized_toast_provider()) - - app_wrappers[(1, "ToasterProvider")] = toast_provider - - # Add the app wraps to the app. - for key, app_wrap in self.app_wraps.items(): - component = app_wrap(self._state is not None) - if component is not None: - app_wrappers[key] = component - if self.error_boundary: from reflex.compiler.compiler import into_component