★ 97,945TypeScriptMITupdated Oct 2026
best for teams who want full design control and are willing to build their own components on top
Tailwind is the default now, and the v4 rewrite backs that up with a Rust-based engine that scans templates fast across Vue, Svelte, Razor, and Pug, not just JSX. If you want full control over every pixel and don't mind writing your own components, this is where you start.
The catch is that Tailwind gives you none of that control for free — it's a styling layer, not a component library. Compare that to shadcn/ui, which hands you finished, accessible components built on Tailwind, or daisyUI, which adds semantic classes on top of it; Tailwind itself leaves you to build buttons and modals from scratch.
The README won't help you evaluate it either — everything lives on the docs site, so you're trusting reputation more than reading code. And no matter how good the underlying engine gets, long class strings in your markup are just part of the deal.
Our full take →GitHub ↗
★ 175,011MDXMITupdated Oct 2026
best for shipping something presentable fast with zero design decisions
Bootstrap is still the fastest way to make something look finished with zero design decisions. The v6 line in progress adds a datepicker, combobox, and OTP input, and the project's test discipline — visual, unit, and integration suites, CodeQL, cspell — is more rigorous than you'd guess for something this old.
But landing on the repo right now is confusing: main is the unstable v6 alpha, and the README tells you to go find a different branch for the stable v5 docs you probably want. That's not a problem Tailwind or shadcn/ui have, since neither ships a half-finished major version on its default branch.
Customization still means overriding Sass variables, a different mental model from the CSS custom properties everything else here uses, and the compiled bundle carries weight — Floating UI, Vanilla Calendar Pro — that most projects never touch.
Our full take →GitHub ↗
★ 116,257TypeScriptMITupdated Jun 2026
best for React/Next projects that want to own and edit the component code instead of installing a dependency
shadcn/ui isn't really a component library, it's a way of not needing one: you copy the component source into your project instead of installing a package. Built on Radix for behavior and Tailwind for style, it's the best option here if you want full ownership of your UI code without starting from Tailwind's blank slate.
Ownership cuts both ways, though. When Radix fixes an accessibility bug in Dialog, MUI or Ant Design users get it in their next npm update — shadcn/ui users have to notice and patch every copy by hand across however many files they've already pasted it into. Fine for one component, a real chore across a real app.
It also only makes sense if you're already on Tailwind; the docs talk about "your favorite framework" but the coupling is real. And the newer additions — blocks, the Recharts-based charts — are visibly rougher than the core components, so don't expect the same polish once you go past buttons and dialogs.
Our full take →GitHub ↗
★ 98,400JavaScriptMITupdated Jun 2026
best for React teams who want the deepest, most complete component set available
Material UI has the deepest component set of anything on this list, down to things like virtualized Autocomplete, and the theming system actually cascades — change a token once and every component picks it up without touching component code. If you need breadth more than a specific look, this is the safer pick over Ant Design or Vuetify.
The cost shows up at runtime. The emotion CSS-in-JS engine behind the sx prop and styled API isn't free, and bundle size creeps up faster than tree-shaking suggests once you're pulling in more than a couple of components — the same tax Ant Design and Vuetify charge, just under a different styling engine.
Material Design itself is also stuck mid-migration: MUI has been on M2 for years with an incomplete path to M3, so if you want to stay current with Google's own spec, you're on your own. And once you need to override something past the theme layer, you're digging through source to find slot names the docs don't always surface.
Our full take →GitHub ↗
★ 98,323TypeScriptMITupdated Jun 2026
best for React enterprise dashboards and data-heavy admin tools
Ant Design is the one to reach for if your app is actually a dashboard — dense tables, nested form validation, data-heavy admin screens. The Table and Form components handle real-world cases that MUI and Vuetify tend to paper over, and i18n covers 40+ locales out of the box.
The visual language is unmistakably Alibaba-enterprise, and that's the tradeoff: fighting it to look like anything else means fighting the token system, not just overriding a theme. Documentation also still shows its origin — English translations lag the Chinese docs by weeks in places, something you won't run into with MUI or Bootstrap.
It carries the same CSS-in-JS bundle tax as MUI, plus style-injection overhead from @ant-design/cssinjs on first paint. If you don't specifically need the admin-dashboard components, that's a cost with no payoff.
Our full take →GitHub ↗
★ 18,970TypeScriptMITupdated Jun 2026
best for teams building their own design system who need accessible behavior, not a visual style
Radix is the odd one out here because it's not trying to look like anything — it's the accessible behavior underneath a design system, with zero default style. This is what shadcn/ui is built on, and if you're building your own component library rather than consuming one, Radix is the honest starting point instead of reinventing focus traps and ARIA yourself.
That also makes it the least finished thing on this list in isolation: no visual layer, no form integration, nothing you'd ship directly to users. Where MUI or Vuetify hand you a usable Autocomplete, Radix hands you the primitive you build an Autocomplete out of.
It's React-only with no stated plans beyond that, so if you're not in the React ecosystem it's simply not an option. And the README here is nearly empty — like Tailwind, you're trusting the external docs site, except Radix's SSR edge cases around portals and focus in the Next.js App Router are sharp enough that you'll want more than docs when they bite.
Our full take →GitHub ↗
★ 41,266SvelteMITupdated Jul 2026
best for Tailwind projects that want ready-made components without pulling in a JS framework
daisyUI is what you reach for when you want Tailwind's utility approach but don't want to write btn styles from scratch every time. It's a plugin, not a framework, so unlike Vuetify or Ant Design it doesn't care whether you're on React, Vue, Svelte, or plain HTML — the CSS-only approach means zero JS runtime and no per-component bundle growth.
The semantic class names are the whole appeal and the whole risk: write btn btn-primary across a real app and you've coupled yourself to daisyUI the same way Bootstrap coupled a decade of projects to its own conventions. Swapping later means touching every template.
The component set also has real gaps — no date picker, no combobox, nothing resembling MUI's or Ant Design's data table — and a few of the flashier pieces, like the countdown and carousel, are CSS tricks that stop working the moment you need real interactivity. The docs site mixing in a paid "Blueprint" product is a minor but noticeable crack in the open-source framing.
Our full take →GitHub ↗
★ 41,000TypeScriptNOASSERTIONupdated Jun 2026
best for Vue teams who want a complete Material Design framework out of the box
Vuetify is the Vue-shaped hole in this list: if you're on Vue and want Material Design handled for you the way MUI handles it for React, this is the only serious option here. The component depth is genuinely competitive — VDataTableVirtual, VCommandPalette, VHeatmap — and tree-shaking through the Vuetify Loader actually works.
Material Design is a constraint here just like it is for MUI, and the v2-to-v3 migration was brutal enough — breaking changes everywhere, no compatibility layer — that it's worth asking up front whether you're ready for the next one; the LTS window is only six months, short for a library this embedded in a codebase.
Bundle size stays heavy even with tree-shaking once you're using more than a few components, and SSR hydration mismatches still show up in Nuxt under specific overlay and teleport combinations — an edge case Bootstrap, being JS-light by comparison, simply doesn't have.
Our full take →GitHub ↗
// questions people ask
Before you choose
Tailwind or Bootstrap for a new project?
Tailwind if you want to design your own UI and don't mind building every component yourself; Bootstrap if you want something presentable today with zero design decisions. They solve different problems — Tailwind is a styling layer, Bootstrap is a finished toolkit.
Is shadcn/ui actually a component library?
No — it's a copy-paste distribution model. You pull component source into your own project instead of installing a package, which means no version lock-in but also no automatic upstream bug fixes once you've copied a component.
Which of these work outside React?
Tailwind, Bootstrap, and daisyUI are framework-agnostic. Vuetify is Vue-only. Radix, shadcn/ui, MUI, and Ant Design are all React-only, so if you're not in React, four of the eight options are off the table immediately.
Which option is lightest on bundle size?
Radix and daisyUI are the leanest — Radix ships each primitive as its own package so you pay only for what you import, and daisyUI is CSS-only with no JS runtime at all. MUI, Ant Design, and Vuetify all carry a real CSS-in-JS or shared-internals tax once you're past a handful of components.
None of these is wrong, exactly — they're built for different amounts of control, and the right one depends on how much of that control you actually want. If you'd rather repos like these just show up than go hunting for them, that's what the weekly finds.dev email is for.