How Bretzel compares
Several Python frameworks build web interfaces without a separate JavaScript application. They differ on one question above all: where the interface's state lives, and how the browser follows it. This page states each choice, taken from each project's own documentation, so you can pick the one that fits. Bretzel is the youngest of them.At a glance
| Framework | Where the interface lives | Browser ↔ server | JavaScript build | Components in the box |
|---|---|---|---|---|
| Bretzel | Typed state classes on the server; the regions that read a state are re-rendered as HTML when it changes | Plain HTTP for actions; a one-way SSE stream pushes changes to other windows; HTMX + idiomorph swap the fragments | None for the app author (Tailwind v4 is compiled by a standalone binary) | 100+ ui.* components, charts included |
| NiceGUI | A tree of UI element objects kept on the server for each client | WebSocket | None for the user; Vue and Quasar run in the browser | Yes, Quasar-based |
| Reflex | State classes on the server; the frontend is compiled to a Next.js (React) single-page app | WebSocket, one client token per tab | Yes: Reflex compiles and builds the Next.js frontend for you | 50+, many based on Radix UI; React components can be wrapped |
| FastHTML | Python functions returning HTML (FT components); state is yours to organise | HTTP with HTMX; WebSockets available | None | None built in |
| Streamlit | The script reruns from top to bottom on each interaction; st.session_state keeps values between reruns | WebSocket, one session per tab | None | Yes, widgets |
Which one, when
Bretzel or NiceGUI
Bretzel or Reflex
Bretzel or FastHTML
Bretzel or Streamlit
Where Bretzel is not the right pick today
See it for yourself
Open the live Kanban in two windows of the same browser: drag a card in one, the other follows — one Python app, no JavaScript written.Sources, read on 3 October 2026:NiceGUI — configuration & deploymentReflex — introductionReflex — architectureFastHTML — documentationStreamlit — client-server architectureStreamlit — Session StateSomething wrong or out of date about another project? Open an issue on GitHub and it will be corrected.