Generative UI for React,
from first token to final interface.
Render streaming Markdown, charts, tables, forms, media, and your own React components while your application keeps control of data and actions.
Built and checked across the surfaces developers depend on
One rendering layer for AI responses. Begin with prose, grow into interfaces, and keep the rest of your AI stack.
Incremental by design
Start with a focused streaming Markdown renderer, then adopt structured interfaces only when an answer needs them.
Built from your components
Models choose from components and properties your application approves. Your React implementations remain application-owned.
Application-controlled
Display generated output without handing it authorization. Data, navigation, confirmation, and effects stay in your application.
Start with streaming Markdown
Replace an existing response view with readable CommonMark and GFM while the answer is still arriving. Incomplete syntax is repaired for display, with highlighted code and managed links and images.
1.0 MarkdownRendererRelease plan
Ship the renderer behind a canary and verify the package boundary first.
- Validate the release bundle
- Keep two regions on canary
- Review latency after rollout
const status = stream.done ? "complete" : "streaming";Turn answers into product interfaces
When prose is not enough, stream layouts, metrics, charts, responsive tables, forms, citations, diagrams, and media through a compact declarative format.
2.0 RUIRendererUse the React components you already own
Describe approved components once, connect them to your React implementations, and generate model instructions from the same definition. Unknown components and properties never enter the rendered tree.
3.0 Custom componentsRevenueChart: defineComponent({
propsSchema: revenueSchema,
keywords: ["revenue", "growth"]
})Keep useful output visible when streams break
Complete valid lines can render early. Broken lines produce bounded diagnostics while later independent content can survive. Cancelled or failed attempts never replace final content.
4.0 Streaming recoveryroot = Stack(children=[title, metrics])validtitle = Heading(text="Revenue overview", level=1)validmetrics = Grid(children=[revenue, userserrornote = Callout(title="Review complete", tone="insight")validPresent the same interface for every user
Format numbers, currencies, percentages, dates, and time zones consistently. Support light, dark, and system themes, right-to-left layouts, keyboard charts, and responsive tables.
5.0 Themes and localizationInspect the implementation, not a promise.
20,000 scheduled cases
Parser input and compiler chunk boundaries
Chromium, Firefox, WebKit
Desktop and mobile renderer scenarios
Automated Axe checks
Representative answers and browser flows
Tarballs and SBOM
Package boundaries, sizes, and provenance
One project, two practical starting points.
Evaluate locallyReplace fragile response Markdown first.
Adopt `MarkdownRenderer` without changing your model, agent, transport, or chat shell.
Start with MarkdownAdd interfaces when an answer needs more.
Introduce `RUIRenderer` for layouts, data, actions, and application-owned components.
Explore structured UIWhat developers need to know first.
What can Rixx UI render?+
Streaming Markdown, layouts, metrics, ten chart types, responsive tables, forms, citations, math, Mermaid diagrams, image galleries, and custom React components.
Does Rixx UI call the model?+
No. Your application owns the provider, prompts, transport, tools, messages, and persistence. Rixx UI handles response rendering.
Can I use my own design system?+
Yes. Define a closed component contract and connect it to your React implementation. The model can only request components and properties you approve.
What happens when streaming output is malformed?+
Broken lines produce diagnostics and can be skipped while later independent content survives. A failed or cancelled attempt never becomes final UI.
Are actions executed by the renderer?+
No. Rixx UI validates registered action requests and returns them to your application. Authorization, confirmation, execution, and auditing stay in application code.