Currently, ReactPy runs entirely server-side - all views are rendered, and their state is maintained on the server. This is how most other applications that have given Python the ability to drive interactivity have been built. Examples can be found in:
- IpyWidgets
- Solara
- Streamlit
- Pynecone
This design has opened up a whole world of possibilities for applications written purely with Python, however it has a significant drawback. In particular, this approach of requiring the server to retain a client's state and render views means that you are fundamentally limited in how many users you can serve. In many cases this has meant that these tools tend to be used to build interal data apps that serve a small number of users. Traditionally built applications avoid this problem by delegating much of this work to the client, only reaching out to a server when absolutely necessary. Even though tools like PyScript and Pyodide now allow Python to run client-side, with that