mrkeyoor.com_
Sun 01 Nov 19:53 UTC
Webevaluationupdated 13 Oct 2026

ui review

shadcn/ui gives you editable interface components and a command-line tool for adding them to your web app. It helps you build your own component library when packaged components don't fit the design or behavior you need.

+440stars / 7d
Verdict

Our shadcn/ui checkout installed 1,680 packages in 61 seconds, but both build and tests stopped at an unavailable Bun command, so its contributor setup needs more than a successful pnpm install. Use its editable components when your team wants to maintain its own design system. Choose a packaged library if component upkeep has no owner, and inspect CLI warnings before accepting generated configuration changes.

We ran it

Lab card: what happened when we ran uiScreenshot of ui (ui.shadcn.com)
Install✓ · 61s1680 packages · 1523 MB
Build✗ · 78s
Tests✗ · 42sran, no count parsed
Repo6073 files~594,885 lines of source · 49.5 MB · 11 CI workflows

Answers from our run

Does ui build from source?

Dependencies installed in 61 seconds (1680 packages), and the build failed. We cloned commit 02cad61 into a clean Debian container with 3 CPUs and no project-specific setup.

Do ui's tests pass?

No. The project's own test command exited unsuccessfully after 42 seconds, and its output did not expose an individual test count.

Who should not use ui?

Teams expecting a package upgrade to maintain all their customized components: the README asks you to build your own library, so your local changes need an owner.

What are the alternatives to ui?

Mantine, Material UI, Radix Primitives. Our shadcn/ui checkout installed 1,680 packages in 61 seconds, but both build and tests stopped at an unavailable Bun command, so its contributor setup needs more than a successful pnpm install.

Setup3/561-second install passed, but build and tests stopped at missing Bun
Docs4/5Useful app and configuration guides, sparse root README
Community5/5125,458 stars, October push, and fresh registry PRs
Maturity4/5Active releases, with configuration edits that still need review

Discussed on

  1. hnShadcn/UI: A set of beautifully designed components that you can customize17 points

Who it’s for

React teams building a design system who want to edit component source inside their application.
Developers already comfortable configuring Tailwind CSS and import aliases.
Teams distributing internal components through a registry, including developers using its MCP server or Claude Code skill.

Who it’s NOT for

Teams expecting a package upgrade to maintain all their customized components: the README asks you to build your own library, so your local changes need an owner.
Developers who require every CLI configuration edit to finish automatically: the latest patch notes say some Next.js layout and Tailwind configuration edits are skipped with a warning.
Contributors restricted to a Node-and-pnpm toolchain: our checkout's build and test commands both stopped when registry generation invoked Bun, which was absent from the sandbox.

Setup reality

Our run at commit 02cad61 installed 1,680 packages in 61 seconds and used 1,523 MB on disk. The build failed after 78 seconds and tests failed after 42 seconds, both with exit code 1. Both log tails show an unavailable Bun command during the v4 registry work.

Using public components needs a configured web application, CSS, and import aliases, with components.json for the CLI route. Public use doesn't need a paid service credential. Private registries can require authentication. The application setup guide describes the consumer route, which we did not measure separately.

We used a fresh unprivileged Debian sandbox with 3 CPUs, 8 GB RAM, lab-node:22, and no secrets. The full repository uses pnpm workspaces, and registry generation invokes Bun. Installation alone didn't provide that executable in our run. Supplying it remains an unverified next step, rather than a demonstrated fix.

You can edit the button, and you inherit its upkeep

Change a shadcn/ui button in your own source file and you've made the project's central trade: you can shape the component around your product, and your team takes responsibility for that change. The README explicitly invites you to build your own component library. This suits a React team whose design keeps exceeding a packaged library's options. You don't have to wait for an upstream styling option. You can review a local change in the same pull request as the screen that needs it. It is a poor bargain if nobody wants to maintain the resulting files.

The full upstream checkout contains 6,073 files and roughly 594,885 lines of source, occupying 49.5 MB before installation. That is the publishing and development monorepo, including the website and registry, rather than the code every consuming application receives. Keep that distinction in mind when choosing how to start. Editing components in your application and contributing changes to shadcn/ui itself involve different amounts of machinery.

What happened when we ran it

Our run installed 1,680 packages in 61 seconds and occupied 1,523 MB on disk. We cloned commit 02cad61 on October 12, 2026, into a fresh Debian sandbox with 3 CPUs and 8 GB of RAM, using the lab-node:22 image. The container was unprivileged and held no secrets. Installation succeeded, so the first obstacle appeared after the dependency download had finished.

The build failed with exit code 1 after 78 seconds. The log shows the shadcn package completing its build before the v4 workspace reports sh: 1: bun: not found. Its task summary records 4 successful tasks out of 5, with v4#build failing. That tells us an invoked Bun command was unavailable in the sandbox. It doesn't tell us whether the remaining work would succeed after Bun was supplied. For a contributor, the practical problem is immediate: the pnpm installation worked, while the subsequent build and test commands needed an executable that this container did not have.

The test command also failed with exit code 1, after 42 seconds. Its log stops during v4's registry:build, again reporting bun: not found, followed by spawn ENOENT. There is no assertion summary or passing-test count in the supplied tail. We cannot call this a failed component assertion. The checkable finding is that the repository's test command could not complete because a preceding registry step invoked an unavailable executable.

Our scan found 11 CI workflow files and a workspace monorepo, with no Dockerfile or tests directory reported. The missing directory signal doesn't establish that the project lacks tests. Together, these observations describe the checkout our harness encountered.

The consumer setup and contributor setup are separate jobs

The application setup guide directs users toward a framework-specific CLI route or adding components to an existing project. Your application needs its framework and styling configured. The components.json reference explains the CSS path and import aliases the CLI uses, and says copying code manually avoids that configuration file. Public component use doesn't require a paid service credential. Private registry access depends on the registry's authentication rules. The configuration reference says changing between CSS variables and utility classes requires deleting and reinstalling components, so that choice deserves attention early.

Cloning the 49.5 MB upstream repository takes you onto the contributor path. Its contributing guide describes pnpm workspaces and the website's generated registry assets. The root README offers little local-development guidance itself. For your own app, check the generated imports and theme settings before accepting a component.

October's CLI fixes still leave configuration review to you

Release shadcn@4.21.4 shipped on October 7, 2026. Its patch notes describe changes to the code that rewrites imports and configuration. Two entries explicitly say the CLI skips a Next.js font-layout edit or a Tailwind configuration edit with a warning rather than writing a broken file.

The repository was pushed on October 12, 2026, and GitHub listed 125,458 stars plus 1,787 open issues and PRs. Recent registry-directory submissions show ongoing contribution activity. Those dates support an active-project assessment, without promising response times across that queue. I prefer the CLI's caution around configuration edits, but an apparently finished operation can still leave work for you to do by hand. They also don't erase our 78-second build failure. Maintenance activity and a working contributor environment are separate pieces of evidence, and we have only the former confirmed here.

Pick a packaged library if component upkeep isn't your job

Mantine, at mantinedev/mantine, is my alternative for a React application that wants styled components and hooks maintained as packages. Material UI, at mui/material-ui, fits a team that wants Material Design conventions and an established packaged API. Radix Primitives, at radix-ui/primitives, suits developers who want low-level interaction components and intend to write the visual layer themselves. These are different maintenance choices. Pick according to who will own the component code after the initial screen is finished.

For a team building its own design system, shadcn/ui earns a trial because editable source is the deliverable. Our 1,523 MB installed checkout and blocked build make an upstream fork a more demanding commitment. Start with a component in your application, inspect the generated changes, and decide who will reconcile future upstream edits. If nobody can name that person, choose Mantine or Material UI before you start customizing the component files.

Alternatives

ProjectWhat it isPick it when
Mantine gh↗Styled React components and hooks distributed as packages.pick this instead when you want packaged components without taking ownership of copied component files.
Material UI gh↗Packaged React components implementing Material Design.pick this instead when Material Design conventions and a maintained component API fit your application.
Radix PrimitivesLow-level React interaction components with an unstyled visual layer.pick this instead when you want to write the styling yourself while using packaged interaction primitives.

What people are saying

  1. [github-trending] 0xJacky/nginx-ui
  2. [github-trending] mui/material-ui
  3. [github-trending] MHSanaei/3x-ui
  4. [github-trending] ibelick/ui-skills
  5. [velocity-scout] thesysdev/open-intelligent-ui
  6. [theverge] ChatGPT’s ‘Intelligent UI’ update fills its responses with pictures, charts, and buttons

Sources

  1. shadcn/ui README and repository
  2. shadcn/ui official documentation
  3. Application setup guide
  4. components.json configuration reference
  5. Contributor guide
  6. shadcn@4.21.4 patch notes
  7. shadcn MCP server
  8. shadcn skill for Claude Code and other assistants

More web reviews

phaser · meteor · floating-ui · firefox · algorithm-visualizer · wagtail · the whole board →