What youβre building
APriceCard component: a card that shows a product name, a price, and a short description, streamed to it by any workflow. It will render natively on web (and every other channel) from the same definition.
Step 1: Scaffold, then shape the definition
Throughout these docs, rx/ means the design folder in your Studio project workspace. Studio reads it directly; publishing sends it to your universe.
rx/components/pricecard/pricecard.json, already passing the linter: you fill the TODOs and shape the tree. Edited for our card:
Step 2: Validate as you type
The JSON Schema atrx/_schema/unoverse.schema.json catches structural mistakes (unknown primitive, missing whenToUse, a Switch without cases, an illegal condition) in your editor. Wire it once in .vscode/settings.json:
"type": "Bax" or a missing description is a red squiggle, not a runtime surprise. 08: Validate & Ship covers the full enforcement stack (schema β linter β checklist).
Step 3: Mock data & states for Studio
Two mechanisms, both already in your file:- Prop
defaults ARE the mock. Studio renders the component from them with no backend: thatβs why every prop carries a realistic default, not an empty string. - The
states/folder is the state picker. If your component has multiple layers (aSwitchon a discriminant: wizard steps, inlineβfocused), enumerate each layer asstates/<layer>.jsonand Studio automatically shows a pill per state; clicking one sets the discriminant and that layer draws itself (07). PriceCard is single-view, so it needs none.
Step 4: Lint, then deploy
PriceCard is now:
- a node any workflow can use: copy it from Studio (β§ Copy for Canvas) and paste (
Cmd+V) onto the Canvas, wire data into its props, and - an MCP resource every channel (web, native, Studio) renders natively.
Step 5: See it in Studio
Open Studio (served by the platform: see 07, Studio):- Find PriceCard in the component list.
- Mock mode: it renders from your prop defaults; multi-state components get a state picker from their
states/folder, this is your Storybook. - Live mode: wire it into a workflow on the Canvas and watch a real agent stream real data into it.
Quick-Start Checklist
- Project created in Studio (New Project); component authored in it with a full envelope
-
whenToUsewritten outcome-first (the AI picks components by it) - Every
bindhas a matching prop with a default, workflow-fed props markedinput: true - Zero raw values: token names only in every
style - Prop defaults realistic (they ARE the mock); multi-layer components enumerate
states/ - Studio preview clean (mock, then live); publish passes lint with 0 errors
- Previewed in Studio (mock states, then live)
Next: 02, SDUI & MCP Apps, the model behind what you just did.

