shadcn/ui ships a 57-word README and all the detail lives in package.json
A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code.
At a glance
- What is it?
- shadcn-ui/ui is an MIT licensed TypeScript monorepo where components are copied into your project rather than installed as a package, published as the shadcn CLI on a 4.x line while the repository root still reads ui at 0.0.1. The readme contains no install command at all, so every real detail is a script name.
- Who is it for?
- shadcn/ui suits a TypeScript team that wants owned component source in its own tree rather than a dependency it cannot edit, and that will read the documentation site before touching the code. Go to https://ui.shadcn.com/docs for anything the readme omits, because the readme has no install command, no configuration, and no list of components.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- shadcn-ui/ui128,117 ★ · +8,642
| Repository | 2026-07-21 | 2026-11-13 |
|---|---|---|
| shadcn-ui/ui | 119.5k | 128.1k |
8,642 Stars in the last 115 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The README has no install command and one bold sentence
The entire readme is a paragraph, a documentation link, a contributing link, and a license line. The paragraph says it is a set of beautifully designed components that you can customize, extend, and build on, that you should start here then make it your own, and then the only emphasized text in the whole file, Use this to build your own component library. After that come a Documentation link to https://ui.shadcn.com/docs, a Contributing link to /CONTRIBUTING.md, and a statement that it is licensed under the MIT license. Consequence for a reader: there is no install command, no configuration snippet, no component list, and no explanation of how a component reaches your project, even though the project's own description calls it a code distribution platform. Everything a new user needs lives on a site outside the repository, so you cannot evaluate this project from a clone.
You install shadcn 4.x, the repository root says ui 0.0.1
The root package.json identifies itself as:
"name": "ui",
"version": "0.0.1",
"private": true,The releases carry a different name and a different line. The latest are [email protected], [email protected], and @shadcn/[email protected], all of which landed on 27 October 2026 within a few hours of each other. Consequence for a reader: the version number in the repository describes a private monorepo root and has no relationship to the artifact you add to a project, so a lockfile or an issue report that cites ui at 0.0.1 tells the other person nothing useful, and the cadence shows a package shipping patch releases the same day. If you need to state which CLI a project uses, the only reliable identifier is the published shadcn tag, not the version in this repository.
Two filter axes, v4 and shadcn, on separate tracks
The maintainer scripts split across two axes. The v4 axis handles the site and the component registry, with registry:build, registry:capture, explore:capture, registry:health, v4:dev, and v4:build, each running a pnpm filter for v4. The shadcn axis handles the CLI, with shadcn:dev, shadcn:prod, shadcn:build, and shadcn:test, each filtering for shadcn. Consequence for a contributor: there are at least two independently versioned packages in one workspace, and a command that means the registry can silently run against the CLI or the reverse, because the only signal is which filter a script name carries. The readme does not say what v4 refers to, whether it is a fourth generation of the site, a fourth major of the component set, or an internal codename, so a new contributor has to infer the boundary from the filters.
registry:build rewrites your files before it finishes
One script chains three commands, and the last two are mutating:
"registry:build": "pnpm --filter=v4 registry:build && pnpm lint:fix && pnpm format:write -- --loglevel silent"The registry build runs, then lint:fix, then format:write, with the log level turned down so the formatting pass stays quiet. Consequence for a contributor: the build is not a read of your checkout, it is a rewrite of it, so if you run it and do not commit the result your next diff contains formatting you did not type, and a CI job that runs the same command will report a dirty tree for reasons unrelated to your change. The flip side is that lint and format problems are corrected at build time rather than reported, which pushes those failures downstream to the separate check script, which runs turbo lint typecheck format:check.
Registry health is four commands, not one
The health check of the component registry is exposed as four separate entries rather than one. There is registry:health, which runs the turbo task in the filtered package, and then three named stages: registry:health:prepare, registry:health:check, and registry:health:publish, each of them also filtered to v4. Consequence for a contributor: the stages are separate commands with separate names, so invoking the top-level registry:health does not obviously run the other three, and a workflow that needs to publish has to know the order. The name of the last stage is the concerning one, since a publish stage acts on something outside the repository, and neither the readme nor any script description in the file says what it publishes, where it publishes to, or what condition the check stage must pass first.
One script drops the colon every other script uses
The naming convention in package.json is a colon namespace, and it is followed almost everywhere: registry:build, registry:capture, registry:health, explore:capture, shadcn:dev, v4:dev, pub:beta, pub:release, format:write, format:check, lint:fix, typecheck. Then there is one entry that is the bare namespace name with no suffix:
"shadcn": "pnpm --filter=shadcn start:dev",
"shadcn:dev": "turbo run dev --filter=shadcn...",Consequence for a reader: the two similarly named scripts do different things, because the unnamespaced one calls start:dev while the namespaced one runs the turbo dev task for the same filter. A tool that splits script names on colons, a shell completion, or a muscle-memory invocation of pnpm shadcn will run start:dev in the shadcn package rather than the turbo dev task, and nothing in the readme explains the difference.
The repository carries its own editors, agents, hooks, and a template sync script
The top level is larger than a component library needs. There is a .cursor-plugin/ directory, .claude/, skills/, .vscode/, an .editorconfig, a .commitlintrc.json, a .kodiak.toml for automated pull request handling, .changeset/ alongside RELEASING.md, and a vitest.config.ts with a vitest.workspace.ts. Templates are moved by a shell script that takes a glob:
"sync:templates": "./scripts/sync-templates.sh \"templates/*\"",Consequence for a contributor: cloning the repository brings an editor configuration, a Cursor plugin directory, a Claude configuration, and a skills directory before you write a line of code, and templates are synced with a script that takes a glob. The publishing story is documented in RELEASING.md and the security story in SECURITY.md, both of which the readme does not link, so the two documents a contributor most needs are the two the readme leaves out.
Editorial conclusion
shadcn/ui suits a TypeScript team that wants owned component source in its own tree rather than a dependency it cannot edit, and that will read the documentation site before touching the code. Go to https://ui.shadcn.com/docs for anything the readme omits, because the readme has no install command, no configuration, and no list of components. Inside the repository, know that the artifact you install is the shadcn CLI on a 4.x line while the root manifest reads ui at 0.0.1 and is private, so the version in the repo is not the version you get. If you maintain the monorepo, pick your filter axis deliberately, because v4 and shadcn are separate packages with separate commands, and remember that registry:build runs lint:fix and format:write, so a build dirties your tree. Pin a released tag rather than a branch, and treat the 57-word README as a pointer, not as documentation.
Frequently asked questions
shadcn ui base ui vs radix, according to the shadcn-ui/ui readme?
The readme makes no comparison with any component library. It describes shadcn/ui as components you can customize, extend, and build on, and sends all detail to https://ui.shadcn.com/docs.
shadcn ui vs headless ui, what does the shadcn-ui/ui repository say?
Nothing about alternatives appears in the readme. The one emphasized line is that you should use it to build your own component library, and the root manifest reads ui at 0.0.1 and is private while the releases are shadcn at 4.x.
shadcn ui vs base ui, is either named in shadcn-ui/ui?
Neither library is named in the readme. The only distribution detail inside the repository is the set of registry scripts in package.json, which include registry:build, registry:capture, and four registry:health stages.
shadcn ui vs daisy ui, does the shadcn-ui/ui readme compare them?
No. The readme is a single paragraph plus three links, to the documentation site, to the contributing guide, and to LICENSE.md. It contains no list of alternatives and no comparison of any kind.
shadcn ui vs material ui on reddit, what does shadcn-ui/ui itself say?
The readme does not discuss another library and links no forum or discussion. Its documentation line points at https://ui.shadcn.com/docs, and its contributing line points at CONTRIBUTING.md.
shadcn ui vs untitled ui, what claim does shadcn-ui/ui make?
The readme claims no advantage over other projects. The project description calls shadcn/ui a code distribution platform that works with your favorite frameworks, and the readme itself only says the components are customizable and extensible.
Official sources
Where developers are discussing it
Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 0 in the last 30 days; newest first.
- Security: PolinRider malware detected in two open PRs (#7716, #10321)Hacker News · Sep 21, 2026 · 1 points · 0 comments
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/shadcn-ui-ui)Star history chart for your README
[](https://hysenlabs.com/projects/shadcn-ui-ui)Was this useful?