← Back
Competitive analysis

Layout UI vs shadcn/ui

shadcn/ui popularised the copy-in component model, and Layout UI uses the same one: components you own, built on Base UI, installed with a CLI. The difference shows up in theming, per-component rules for AI agents, and how many real brands you can actually reskin into.

TL;DR

shadcn/ui is a great starting point with a handful of style presets. Layout UI is a full token contract with 58 real-brand themes and machine-readable rules attached to every component, so an AI agent can reskin your app and stay on-brand while it does it.

Side by side

Primitives

Layout UI

Base UI under the hood.

shadcn/ui

Base UI under the hood (formerly Radix).

Theming

Layout UI

A full semantic token contract. Every component maps to --layout-* tokens, so a theme swap is a token swap, nothing else.

shadcn/ui

About 30 CSS variables, mostly colour. Deeper theming means editing component classes directly.

Themes available

Layout UI

58 themes generated from real, published company kits (Stripe, Linear, Notion, and more), each one an actual brand's tokens, not a mood.

shadcn/ui

A small set of built-in style presets (Default, New York) plus whatever the community has hand-built.

Per-component AI agent rules

Layout UI

Every component ships meta.usage, meta.never, and meta.tokens, so an agent knows exactly what it's allowed to do with it.

shadcn/ui

None. An agent has to infer correct usage from the component source alone.

Theme builder

Layout UI

/create builds a theme from any real company's design tokens, not a preset picker.

shadcn/ui

Presets only. No way to generate a theme from your own brand.

Install

Layout UI

Same registry spec (npx shadcn add <url>), plus our own CLI: npx @layoutdesign/context add <component>.

shadcn/ui

npx shadcn add <url>.

Same install model. A real token contract underneath.

If you just need a handful of accessible primitives, shadcn/ui will serve you well. If you want components that reskin to any brand, and that ship rules your AI agent can actually follow, that's Layout UI.