diff --git a/src/py/reactpy/reactpy/core/serve.py b/src/py/reactpy/reactpy/core/serve.py index b7832b565..eef5c5c96 100644 --- a/src/py/reactpy/reactpy/core/serve.py +++ b/src/py/reactpy/reactpy/core/serve.py @@ -191,20 +191,20 @@ async def _do_state_rebuild_for_reconnection(self, layout: Layout) -> str: client_state = serializer.deserialize_client_state(state_vars) layout.reconnecting.set_current(True) layout.client_state = client_state - except StateRecoveryFailureError: - logger.exception("State recovery failed") - layout.reconnecting.set_current(False) - layout.client_state = {} - else: + salt = client_state_msg["salt"] - try: layout.start_rendering_for_reconnect() await layout.render_until_queue_empty() except StateRecoveryFailureError: - logger.warning("Client state non-recoverable. Starting fresh") + logger.warning( + "State recovery failed (likely client from different version). Starting fresh" + ) await layout.finish() + layout.reconnecting.set_current(False) + layout.client_state = {} await layout.start() layout.start_rendering() + return salt layout.reconnecting.set_current(False) layout.client_state = {} return salt