Tools· Design & Creative

    shadcn/ui

    Open source component system for React whose CLI copies real, editable source code into your own project instead of installing an npm package, with a growing set of helper packages for AI-driven interfaces.

    designingexecutableOpen Source

    Description

    Strengths

    Code instead of package dependency
    The command line copies the real component code into your own project, creating no runtime dependency on an external package, and every line stays freely editable.
    Accessible primitives
    The components are built on Base UI or, optionally, still on Radix, and bring thought-through accessibility out of the box.
    Broad, consistent inventory
    From form fields through overlays, data displays, and feedback elements to navigation, all components share a common, composable interface.
    Framework openness
    Next.js, Vite, Laravel, React Router, Astro, and TanStack Start are all supported equally, alongside Tailwind CSS versions 3 and 4.
    MIT licensed copy-paste model
    The code belongs entirely to your own project, with no license restrictions or hidden dependencies.

    Assessment

    AI features

    • AI-readable, consistent code The open code and the uniform interface of every component make it easier for AI models to understand existing components and generate new ones in the same style.
    • Helper package for AI interfaces The open source package `@shadcn/helpers` supports building interfaces for the AI SDK and TanStack AI: a conversation can be written as code and run through the real component, producing repeatable output with no backend involved, for tasks such as building, previewing, documenting, or testing streaming responses.
    • Agent-assisted migration For the move from Radix to Base UI, a skill guide is available for Claude Code, Cursor, and comparable agents that migrates component by component and tracks progress in your own repository and git history. In a test project with more than 60 components, 36 of them on Radix, the full migration ran, according to the provider, in about 25 minutes at roughly 10,000 tokens per component.

    Suitable for

    • React, Next.js, or Vite projects that need accessible base components such as buttons, forms, dialogs, or tables with full access to the source code
    • Teams with their own design system who want to adjust components directly instead of consuming a closed library unchanged
    • Projects that work with AI coding assistants and benefit from open, consistently structured component code
    • Less suitable for Less suitable for marketing pages where eye-catching, animation-heavy sections are the priority; registry-compatible collections with a stronger visual focus are a better fit there

    Limitations and notes

    • No automatic update Because the code lives inside your own project, updates have to be pulled in deliberately through a re-run of the install command with an overwrite option, and your own customizations can get lost in the process.
    • Community registries are third-party maintained Additional registries from the directory are maintained by independent developers, and their code should be reviewed before installation.
    • Ongoing switch of the underlying base Since July 2026, Base UI has been the new default foundation, and Radix remains fully supported. An automatic codemod handles unchanged components reliably but breaks on primitives that have already been individually customized, which is why a controlled switch is recommended to go through the component-by-component, agent-assisted migration.
    • Do not edit primitives directly Registry components should not be reshaped in the file itself but composed around in your own feature components, otherwise customizations get lost the next time the file is overwritten.

    Quick start

    1. Choose a starting point: visually assemble a new setup through the shadcn/create configuration tool, scaffold a supported framework template directly from the command line, or add shadcn/ui to an already existing Next.js, Vite, Laravel, React Router, Astro, or TanStack Start project.
    2. Once per project, run the command line's init command, which creates the `components.json` file, the matching Tailwind settings, and the utility helper.
    3. For each component you need, run the add command with its name; several components can be installed in a single run, for example Button and Dialog together.
    4. Freely adjust the installed component inside `components/ui/` and wire it into the application through your own feature components.
    5. When needed, add further components or blocks from the registry directory, after first reviewing the respective code.

    Tips

    • Build forms with more than three fields on the pre-built Form component, which already wires up react-hook-form and zod.
    • Do not edit registry primitives directly; compose your own components around them instead, so a later update does not overwrite your changes.
    • For toast notifications, install the Sonner component.
    • Read the code of components from community registries before installing them, because their maintenance sits with independent developers.
    • When migrating from Radix to Base UI, use the provided agent-assisted skill guide instead of a manual full rebuild; it can be paused and resumed component by component.

    Access

    Last reviewed: · Pricing, plans and features are a snapshot in time. Check the provider's own page before deciding.

    In the workshop this becomes your method.

    Whoever sees this process run once wants the agent behind it next. We build that in the workshop From Process to Agent.

    View workshops

    Related resources

    Browse all resources

    Conversation, not pitch

    Understand first, then decide. We take time for an initial conversation, without sales pressure, without obligation.

    Schedule a call