Install
Create an app
Save this asapp.py:
app.py
Run it
http://127.0.0.1:5175. The --reload flag watches your file for changes — every time you save app.py, the UI regenerates automatically. Here’s what you’ll see:
Type in the input — the heading updates instantly. Click the button — toast notification. That’s reactive state, event handling, and a production component library, all from a dozen lines of Python.
Try editing app.py while the server is running. Change the heading text, swap the button variant to "destructive", or add another Input — save the file and the browser updates immediately. This is the development loop: write Python, save, see it live.
What just happened
Prefab components nest using Python’swith statement — Card, Column, Input compose into a tree that compiles to JSON, which a bundled React renderer turns into real HTML. The Composition page walks through this in detail.
Every form control syncs its value to a client-side state key. The .rx property returns a reactive reference — name_input.rx in an f-string becomes {{ name }} in the protocol, and any component containing it re-renders whenever the input changes. No server round-trip needed. Read more about reactive expressions.
ShowToast is a client-side action — it runs entirely in the browser. Prefab has several of these (SetState, ToggleState, OpenLink), plus server actions like CallTool for when you need a backend.
Where to go from here
- Composition — learn how to build any interface by nesting components
- Playground — browse all 35+ components interactively
- Reactive Expressions — operators, conditionals, and pipes for client-side logic
- API Server and FastMCP — wire up a backend when you need server logic