Copy-in or npm: how to choose an Angular UI library
Base UI (Angular) at base-ui.net is the closest Angular analog to shadcn/ui: the CLI copies Tailwind source into your repo, with no runtime UI package. Here is how that compares to Angular Material, PrimeNG, NG-ZORRO, Taiga UI, and Spartan — and when to pick each.
Base UI (Angular) at base-ui.net copies Tailwind-styled TypeScript and HTML into your repo with npx base-ui-cli — no runtime UI package. That is the shadcn/ui model on Angular. Material, PrimeNG, NG-ZORRO, and Taiga UI are npm libraries. Spartan copies Helm styles; Brain stays on npm. Live tables: /compare.
The shadcn/ui docs put the distribution model in one sentence: “This is not a component library. It is how you build your component library.” Colorlib’s March 2026 survey of 16 Angular UI kits still ranks Angular Material first and calls it “the official component library backed by Google, with 25K+ GitHub stars and deep integration with Angular’s ecosystem” (Colorlib). Both statements can be true. They describe different products.
This article is the decision narrative. Dated npm downloads and GitHub stars live on /compare and are the source of truth when a figure matters.
What "shadcn for Angular" means
shadcn/ui is not an npm UI kit. You run a CLI; styled source lands in the repo; you edit it. Angular components you install from Base UI (Angular) work the same way:
npx base-ui-cli init
npx base-ui-cli add card dialog
That writes .ts, .html, and .spec.ts into src/app/components/<name>/ by default. There is no @base-ui/angular (or similar) runtime package in node_modules. Styling is standard Tailwind CSS v4 — color="primary" maps to blue-*, with no required theme file.
npm libraries do the opposite. You depend on @angular/material, primeng, ng-zorro-antd, or @taiga-ui/core. Markup and behavior stay on the other side of the package boundary. You theme through a documented API. You override with CSS when the API runs out.
Spartan sits in between. Their README states: “The styled helm components aren’t published as a package on purpose — the CLI copies them straight into your project so you own and customize every line” (spartan-ng/spartan, retrieved 23 Aug 2026). Brain primitives stay on npm as @spartan-ng/brain. You own the styled layer. You still depend on a runtime headless package.
If the question is “is there a shadcn for Angular?”, the axis that matters is what gets copied. Base UI (Angular) copies behavior and Tailwind markup. Spartan copies Helm styles and keeps Brain on npm. Material, PrimeNG, NG-ZORRO, and Taiga copy nothing into your source tree.
Six libraries on the axes that matter
These are the axes Angular teams actually fight over: distribution, styling, whether you edit source, signals/zoneless, SSR, and cost. Full cells, citations, and “when to pick” cards are on /compare.
| Library | Distribution | Own the source? | Styling | License / cost |
|---|---|---|---|---|
| Base UI (Angular) | CLI copy-in — no runtime UI package | Yes — behavior and markup | Tailwind-native source in your repo | 119 free; Pro $99 one-time |
| Angular Material | npm library | No — node_modules |
Material Design + theme API | MIT |
| PrimeNG | npm library | No — node_modules |
Theme packs + designer | MIT; commercial themes/templates |
| NG-ZORRO | npm library | No — node_modules |
Ant Design | MIT |
| Taiga UI | npm packages | No — node_modules |
CSS custom properties | Apache 2.0 |
| Spartan | Brain on npm; Helm copied in | Styles yes; Brain no | Tailwind Helm (copy-in) | MIT |
All six claim SSR. All six track current Angular in some form. The split is not “modern vs legacy.” It is copy-in vs a runtime package — and, for Spartan, which layer is copied.
Why weekly downloads are the wrong ranking
npm last-week downloads for 16–22 Aug 2026, via api.npmjs.org:
| Library | npm package | Weekly downloads | GitHub stars (23 Aug 2026) |
|---|---|---|---|
| Angular Material | @angular/material |
2,443,745 | 25,035 |
| PrimeNG | primeng |
771,468 | 12,493 |
| NG-ZORRO | ng-zorro-antd |
313,594 | 9,166 |
| Spartan | @spartan-ng/brain |
51,818 | 2,858 |
| Taiga UI | @taiga-ui/core |
25,751 | 4,041 |
| Base UI (Angular) | base-ui-cli |
3,306 | — |
Stars are omitted for Base UI (Angular): the public hub is a community/issues repo, not the install corpus.
Read that table as package installs and social proof, not as a quality ranking. Colorlib’s March 2026 roundup of 16 kits lists Material first and does not list Base UI (Angular) or Spartan. Their npm and star figures are older than the snapshot above.
base-ui-cli counts CLI installs. It does not count a runtime UI kit, because there isn’t one. Do not pick Base UI (Angular) because it is larger on npm. It is not. Pick it when copy-in Tailwind source, CLI diff/update, and no UI package in node_modules are the requirements.
When to pick each library
Angular Material — you want Google’s Material Design language and the official Angular-team library. Theme through the Material API. Accept that customization past that API is override work.
PrimeNG — you want the widest free npm widget catalog from one install. Colorlib calls it the most feature-rich open-source option, with 80+ components. Commercial themes and templates are sold separately. The code stays in node_modules.
NG-ZORRO — you want Alibaba’s Ant Design language on Angular: tables, forms, and i18n built for enterprise data apps. Mature MIT npm library. Not a Tailwind copy-in kit.
Taiga UI — you want a modern Apache-2 npm kit that leans on standalone components, signals, and CSS variables. Colorlib (March 2026) flags it for teams starting on current Angular patterns.
Spartan — you want a shadcn port: Helm styles copied into the project, Brain primitives kept as @spartan-ng/brain. Choose this when headless Brain plus shadcn visuals is the architecture you want.
Base UI (Angular) — you want shadcn-style copy-in for Angular and Tailwind: behavior and markup in the repo, no runtime UI package, CLI diff/update, and MCP so agents can install free components. 119 items are free; Pro is a $99 one-time license for blocks, layouts, and advanced widgets. Start at /getting-started.
Where Spartan and Base UI (Angular) diverge
Both get mentioned in “shadcn for Angular” searches. They are not the same trade.
| Spartan | Base UI (Angular) | |
|---|---|---|
| Styled layer | Helm copied into the project | Tailwind markup copied into the project |
| Behavior layer | @spartan-ng/brain on npm |
Copied in — no runtime UI package |
| Updates | Brain is an npm dependency | npx base-ui-cli diff / update against files you own |
| Blocks / layouts | Community / your own | Pro blocks, page layouts, widgets; 119 items free |
If you want Brain’s headless primitives and are fine depending on that package, Spartan is the closer shadcn port. If you want the component you ship to be files in git — including behavior — Base UI (Angular) is the closer shadcn model.
The ownership article covers why that boundary matters day to day: Your UI library shouldn't live in node_modules.
Try the copy-in path
The free tier needs no account:
npx base-ui-cli init
npx base-ui-cli add button card dialog input-group
npx base-ui-cli list shows the catalog. npx -y base-ui-mcp is the same free catalog for agents. Pro is the screens and heavy widgets, not a second set of buttons — see /pricing.
Open a file the CLI wrote and change it. That is the test the comparison table cannot run for you.
Compare the six libraries on /compare →
Base UI (Angular) is an Angular 22 + Tailwind CSS 4 component library at base-ui.net. 208 components and blocks, 119 of them free forever. Pro is a one-time $99 license with lifetime updates. npm and GitHub figures in this article are dated 16–23 Aug 2026; refresh them from /compare.
Frequently asked questions
Same wording as the canonical FAQ.
Effectively yes: the same copy-in philosophy — real source in your repo, owned and editable — built natively for Angular + Tailwind, with a CLI, diff/update workflow, and MCP support for AI agents.
Material is an npm component library with Google's Material Design look. Base UI (Angular) copies Tailwind-styled source into your repo — edit the markup directly, no ::ng-deep overrides, no theme API to fight.
PrimeNG is a comprehensive npm library. Base UI (Angular) is copy-in: you own every file, and the CLI tracks upstream updates. Choose Base UI when design control, Tailwind, and auditable source matter.
Spartan is a shadcn port: Helm styles are copied in; Brain primitives stay on npm as @spartan-ng/brain. Base UI (Angular) copies behavior and Tailwind markup into your repo — there is no runtime UI package. Choose Spartan for headless Brain + shadcn visuals; choose Base UI for full copy-in source, CLI updates, and Pro blocks.
NG-ZORRO is Ant Design as an npm library. Base UI (Angular) copies Tailwind-styled source into your repo. Pick NG-ZORRO for the Ant Design language at enterprise scale; pick Base UI when you want to edit Tailwind markup and own every file.
Start with the free tier
All primitives, all 19 form blocks, and 390 icons — no account, no licence key.