ui-builder is a free, open source automation project written in TypeScript and released under MIT. It has 673 GitHub stars, 96 forks and 2 open issues, and was last pushed 4 months ago. On this registry it ranks #48 of 66 tracked projects in Automation, with 5 head-to-head comparisons available. It gained 5 stars over the last 30 tracked days.

What is ui-builder?

UI Builder is an open-source React component that drops a Figma-style visual editor into your own product, so non-developers can compose pages, emails, dashboards, and white-label views using the exact shadcn/ui components you already ship.

What it is

UI Builder is a shadcn/ui package written in TypeScript that embeds a no-code visual editor directly inside a React application. Rather than handing content teams a separate hosted tool, it lets product teams expose an editing surface in their own app, where users arrange real React components on a canvas and save the result as plain JSON. Layouts serialise to JSON so they can be versioned in source control and rendered instantly with dynamic data at runtime.

The concrete problem it solves is the gap between a design system and the people who need to use it. Teams shipping with shadcn/ui and Tailwind CSS often field requests for landing pages, dashboards, email templates, and white-label views, but wiring each one by hand slows delivery. UI Builder replaces that hand-coded assembly with a drag-and-drop editor backed by a component registry, so the same components that ship in production also power the editing experience.

Key capabilities

  • Renders a visual editing canvas that saves layouts as plain JSON for versioning and dynamic-data rendering.
  • Registers your own components through a ComponentRegistry, where each entry pairs a React component with a zod schema; primitiveComponentDefinitions covers base elements.
  • Installs with the shadcn CLI via npx shadcn@latest add https://raw.githubusercontent.com/olliethedev/ui-builder/main/registry/block-registry.json.
  • Ships an optional shadcn registry with 54 pre-configured components and 124 block templates.
  • Adds React Email support through react-email-components-registry.json, including emailPageRenderer, emailCodeGenerator, and DEFAULT_EMAIL_TAILWIND_CONFIG; Safari and iOS need import "web-streams-polyfill/polyfill"; in the email route entry file.
  • Lets you override or hide the default TailwindThemePanel in the Appearance tab, or supply a custom node.
  • Maintains component parity with shadcn through npm run sync-shadcn, alongside npm run build-all-registries and npm run test.

Who uses it and how

  • Product teams with a shadcn/ui codebase who want non-developers to build pages without leaving the app.
  • Teams producing transactional and marketing email templates inside UI Builder, using the react-email registry and the email renderer utilities.
  • Organisations building white-label views, where the same layout JSON is rendered per tenant with different dynamic data.
  • Developers wiring dashboards and internal tools who prefer to bind existing components rather than rebuild UI primitives in a separate tool.
  • Projects on Next.js, TanStack Start, or React Router, which UI Builder's parent project BTST targets with generated database schemas, API routes, and pages.

Getting started

Install into an existing shadcn/ui project with npx shadcn@latest add https://raw.githubusercontent.com/olliethedev/ui-builder/main/registry/block-registry.json, or bootstrap a new one using npx shadcn@latest init with the same registry URL and --base-color zinc.

How it compares

No competing products are listed in the facts for this entry, and none of the named integrations are direct equivalents. It stands alone in this registry as a shadcn/ui-specific visual editor.

When to use it — and when not to

Adopt it if your stack is already shadcn/ui and Tailwind CSS, since the value comes from reusing registered components rather than starting fresh. Be aware that React 19 setups commonly hit peer dependency warnings, requiring a .npmrc containing legacy-peer-deps=true, and the v2.0.0 release demands deleting the old /ui-builder and /lib/ui-builder directories before upgrading. If your project does not use shadcn/ui or Tailwind, the registry model offers little, and the project now sits under the BTST umbrella, so its direction follows that wider roadmap.

project readme (upstream, from github) — read inline

UI Builder — Visual Editor for Your React App

UI Builder is a shadcn/ui package that adds a Figma-style editor to your own product, letting non-developers compose pages, emails, dashboards, and white-label views with the exact React components you already ship.

Layouts are saved as plain JSON for easy versioning and can be rendered instantly with dynamic data.

UI Builder Demo

View Full Documentation


UI Builder is now part of BTST — ship full-stack features faster with production-ready plugins that generate database schemas, API routes, and pages for Next.js, TanStack Start, and React Router.


Installation

Quick Start with shadcn/ui

If you already have a shadcn/ui project:

npx shadcn@latest add https://raw.githubusercontent.com/olliethedev/ui-builder/main/registry/block-registry.json

Or start a new Next.js project with UI Builder:

npx shadcn@latest init https://raw.githubusercontent.com/olliethedev/ui-builder/main/registry/block-registry.json --base-color zinc

Optional: Add All Shadcn Components

Install the full shadcn component library with 54 pre-configured components and 124 block templates:

npx shadcn@latest add https://raw.githubusercontent.com/olliethedev/ui-builder/main/registry/shadcn-components-registry.json

Optional: Add React Email Support

Install the react-email registry when you are building email templates in UI Builder:

npx shadcn@latest add https://raw.githubusercontent.com/olliethedev/ui-builder/main/registry/react-email-components-registry.json

This installs the react-email component registry plus email-specific builder utilities (emailPageRenderer, emailCodeGenerator, and DEFAULT_EMAIL_TAILWIND_CONFIG).

For Safari/iOS compatibility with @react-email/render, add this import at the top of your email route entry file:

import "web-streams-polyfill/polyfill";

Handling Peer Dependencies

If you encounter peer dependency warnings (common with React 19), create a .npmrc file:

echo "legacy-peer-deps=true" > .npmrc

Note: Use style variables for proper page theming.

Basic Usage

import z from "zod";
import UIBuilder from "@/components/ui/ui-builder";
import { Button } from "@/components/ui/button";
import { ComponentRegistry } from "@/components/ui/ui-builder/types";
import { primitiveComponentDefinitions } from "@/lib/ui-builder/registry/primitive-component-definitions";

const myComponentRegistry: ComponentRegistry = {
  ...primitiveComponentDefinitions,
  Button: {
    component: Button,
    schema: z.object({
      className: z.string().optional(),
      children: z.any().optional(),
      variant: z.enum(["default", "destructive", "outline", "secondary", "ghost", "link"]).default("default"),
    }),
    from: "@/components/ui/button",
  },
};

export function App() {
  return <UIBuilder componentRegistry={myComponentRegistry} />;
}

Tailwind Theme Panel Override

You can override or hide the default TailwindThemePanel in the Appearance tab without replacing full panel wiring:

<UIBuilder
  componentRegistry={myComponentRegistry}
  tailwindThemePanel={false} // hide panel
/>

Or provide your own custom node:

<UIBuilder
  componentRegistry={myComponentRegistry}
  tailwindThemePanel={<MyCustomThemePanel />}
/>

Documentation

For comprehensive documentation, visit uibuilder.app:

Development

# Build component registries
npm run build-all-registries

# Run tests
npm run test

# Sync with latest shadcn components
npm run sync-shadcn

Breaking Changes

v2.0.0

  • Internal structure changes. Delete old /ui-builder and /lib/ui-builder directories before updating.

v1.0.0

  • Removed _page_ layer type. Use any component type as root.
  • componentRegistry is now a prop, not a standalone file.

See the full changelog for details.

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

MIT

Star History

Star History Chart

Frequently asked questions

Is ui-builder free to use?

ui-builder is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ui-builder do?

A React component that provides a no-code, visual way to create UIs, compatible with shadcn/ui and custom components.

What is ui-builder written in?

ui-builder is primarily written in TypeScript. Its source is publicly available at https://github.com/olliethedev/ui-builder, and it has 673 GitHub stars.