Describe what you want in plain English. Claude writes real React against any design system you plug in β public npm, private registry, or your own monorepo package. The preview renders in your browser as the agent types. No servers to spin up, no WebContainers to boot, no infra to maintain.
Live demo Β· Plug in your design system Β· Design gallery Β· Report a bug
React UI Gen is a prototyping surface, not an IDE. You open it, pick a template, and describe the UI you want. Claude writes real React against your design system β the one your team actually uses, even if it lives on a private registry. The preview renders live in your browser as the agent writes.
You're not running your production app here. You're iterating on components β fast, in isolation, against the real design-system contract.
Every other AI UI prototyper ships heavy runtime infra and a fixed stack. UI Gen does the opposite.
| UI Gen | v0 | Bolt.new | Lovable | |
|---|---|---|---|---|
| Your own design system? | β Yes | shadcn only (beta) | β No | β No |
| Preview compute | π Browser | βοΈ Server | π³ WebContainer | βοΈ Server |
| Open source | π MIT | β No | Partial | β No |
| Private registry support | π Yes | β No | β No | β No |
The design system is a plug-in, not a hardcode. Point src/config/uigen.config.ts at Material UI, HeroUI, a private @your-scope/ds-core, or a monorepo workspace β no engine changes, no rebuild.
Babel standalone + @tailwindcss/browser + ESM import maps, rendered inside a srcdoc iframe. No per-user container, no WebContainer, no server-side preview compute. A hosted instance serves 1 user or 10,000 with the same footprint.
One config file (src/config/uigen.config.ts) points the engine at any DS β public npm, GitHub Packages, file: deps, pnpm link, or a monorepo workspace. Swap Material UI for HeroUI for @your-scope/ds-core without touching engine code.
Every session starts from an isolated template β not a blank create-next-app. The agent only sees the DS contract and the canvas, not 10k files of boilerplate. Every token goes into your components instead of Claude re-scaffolding Next.js on every turn. Short context, cheap sessions, fast iteration.
Tool use writes to an in-memory virtual filesystem, not your disk. The preview runs inside a browser iframe, not on your host. Private packages resolve inside that sandbox β nothing ever lands in your node_modules. A malicious skill or a prompt injection has no shell, no filesystem, nowhere to go.
Tool use (Read / Write / Edit / Grep / Skill) over the virtual filesystem. Prompt caching trims long sessions; context compression via Haiku keeps them alive past the usual wall. DS-specific docs load on-demand through Skill, so the system prompt stays short.
- πΌοΈ Multimodal chat. Drop a screenshot, paste from clipboard, or attach from disk. Say "build this" next to a mock β Claude gets the image alongside your text, in the same turn.
- π― Visual inspector. Click any element in the preview. Its tag, classes, source file, and line attach to your next message β the agent edits the right thing, not the closest thing.
- π File locks. Mark
Navbar.tsx,Footer.tsx, orindex.cssas locked. The agent'sWrite/Edittools refuse to touch them. - β‘ Progressive rendering. Components appear in the preview as the agent writes them, not at the end of a batch response.
- π§© Templates + project switcher. Start from Homepage, Dashboard, Profile, or a blank canvas seeded with your DS entry files. Jump between experiments from the header.
- π Share links. Publish a read-only
/share/[projectId]URL for design review β full-screen preview with an "Open in editor" handoff. - π¦ Download as ZIP. Export the virtual filesystem with a generated
package.jsonand a README explaining how to wire into Vite / Next.js / CRA. - βοΈ Split editor. Resizable three-panel layout β chat on the left, Preview β Code tabs on the right with a file tree and syntax highlighting.
- π§ͺ Mock fallback. Works without an API key β canned responses for demos and CI.
Ships preloaded with a HeroUI + Netflix design system so you can prototype immediately.
pnpm installCopy .env.example to .env and paste your Anthropic API key:
ANTHROPIC_API_KEY=sk-ant-...π Get a key at console.anthropic.com. No key? The app falls back to a mock provider so you can still click around.
pnpm devOpen http://localhost:3000. That's it.
π Want to plug in your own design system? Read Prototype with your design system β for the full tutorial (public npm, private registry, monorepo).
Five ready-to-use configs live in src/config-examples/. Swap between them with a single cp -r.
HeroUI β Netflix β¨ cinematic dark + red |
HeroUI β Airbnb coral, warm neutrals |
HeroUI β Uber monochrome, clean |
|
Material UI
public npm, CSS-in-JS |
Vanilla Tailwind
React + Tailwind, no DS |
Want to peek under the hood? Start here.
- π§ How it works β the pipeline from prompt to live preview, in one page.
- π€ The AI agent β tool use, skills, prompt caching, context compression.
- πΌοΈ Browser preview engine β Babel, Tailwind, import maps, and the iframe.
- π API key security β where your key lives and who can see it.
- π¨ Prototype with your design system β the full BYODS tutorial.
- βοΈ Environment variables β every env var explained.
- π Scripts reference β every
pnpmcommand explained.
Contributions welcome β especially new design-system configs in src/config-examples/. See CONTRIBUTING.md for setup and PR workflow.
- π Report a bug
- π‘ Request a feature
- π Security disclosures
- π Code of Conduct
Built by Kevin Riveros β GitHub Β· LinkedIn
MIT Β© Kevin Riveros. See LICENSE.
