10 Best shadcn/ui Alternatives for Tailwind v4
shadcn/ui set the template. Copy the component into your repo, own the code, style it with Tailwind, done. It's the default for half the Next.js dashboards shipping right now, and for good reason. But it isn't the only answer, and for plenty of projects it isn't even the right one.
What follows is a ranked, opinionated list of ten alternatives that work well with Tailwind v4. I've used most of these in production or prototyped with them long enough to form a real opinion. The ranking weighs v4 compatibility first, then component coverage, then how much the library gets out of your way. Your priorities will shift the order around, and that's fine.
Why look past shadcn/ui at all
shadcn/ui gives you primitives, not screens. You still hand-roll the form layouts, the dashboard shell, the marketing hero, the pricing table. For a team of one that's perfectly fine. For a team shipping five admin panels a quarter, the missing pieces start to pile up.
Common reasons people switch or supplement:
- You want pre-built blocks (pricing tables, hero sections, stats panels) instead of assembling them from atoms every time
- You want animation out of the box without wiring Framer Motion into every button and card
- You want semantic classes (
btn btn-primary) rather than long utility strings baked into JSX - You want a library that fully supports Tailwind v4, including the OKLCH color tokens and the new CSS-first config
- You want to keep shadcn for primitives and stack a second library on top for marketing sections or dashboards
Some of the entries below fully replace shadcn/ui. Others sit beside it. I'll flag which is which as we go.
1. HeroUI (formerly NextUI)
If you want something polished, accessible, and React-first that doesn't ask you to own every line of component code, HeroUI is where I'd start. It was rebranded from NextUI in late 2024 and has since shipped first-class Tailwind v4 support. The components lean on React Aria for accessibility, which means modals, combo boxes, and date pickers actually work with keyboard and screen readers without you having to think about it.
Installation is normal for a Tailwind v4 project:
npm install @heroui/react
/* globals.css */
@import "tailwindcss";
@plugin "@heroui/react/tailwind";
You import components and use them, no copy-paste step:
import { Button, Card, CardBody } from "@heroui/react";
export function Panel() {
return (
<Card>
<CardBody>
<Button color="primary">Save</Button>
</CardBody>
</Card>
);
}
The tradeoff versus shadcn/ui? You don't own the source. Customizing beyond the theme system means forking or wrapping. For 90% of app work that's a non-issue. For the other 10% (bespoke visual design, very particular animation) you'll hit walls HeroUI wasn't built to move.
2. Park UI
Park UI takes a different angle. Instead of copy-paste React, it hands you a set of unstyled primitives from Ark UI and a recipe system for variants. You pick Tailwind or Panda CSS as the styling engine, and Park UI generates the class names and the component skeletons.
Why does that matter on Tailwind v4? Because the recipes compile cleanly into v4 utility classes, and because Ark UI itself runs on a state-machine (XState) that's much more predictable than the hook-soup most component libraries use for complex widgets like comboboxes.
Setup is a CLI similar to shadcn:
npx park-ui components add button
The generated component lives in your repo, which means you own it the same way you own shadcn components. The difference is that the state logic is abstracted into Ark UI, so a Combobox isn't 400 lines of custom code, it's a thin styled wrapper over a well-tested machine. For anything involving async data, keyboard navigation, or composable slots, that pays off fast.
3. Origin UI
Origin UI is the closest thing to "shadcn but with more stuff". It's a free, open-source collection of 500+ components and blocks, built on Tailwind v4 and React, distributed as copy-paste snippets. Want a file uploader with drag and drop? A multi-step form with progress bar? A notification center? It's there, already styled, already composed.
The mental model is identical to shadcn/ui, so if you're comfortable with one you'll feel at home with the other:
# copy a component from the site into your repo
# import it locally
import { FileUploader } from "@/components/origin/file-uploader";
What I like about Origin UI is that the components lean on Radix primitives under the hood, so they inherit the accessibility shadcn users already trust. What I like less: there's some inconsistency in naming conventions between snippets, and the search on the site could be better. Small gripes for something this useful.
If you're on shadcn and hitting the wall where "primitives only" is no longer enough, Origin UI is probably the next step before a bigger commitment.
4. DaisyUI
DaisyUI is the odd one out on this list, and it's on here for exactly that reason. Instead of React components, DaisyUI is a Tailwind plugin that adds semantic class names: btn, btn-primary, card, modal. v5 dropped in 2025 with full Tailwind v4 support, and the bundle impact is smaller than you'd guess because classes are generated only for the ones you use.
/* globals.css */
@import "tailwindcss";
@plugin "daisyui";
<button class="btn btn-primary">Save</button>
<div class="card bg-base-100 shadow-xl">
<div class="card-body">...</div>
</div>
Who's this for? Teams that feel Tailwind utility strings make JSX unreadable, or projects that use Astro, Rails, Phoenix, or plain HTML where React-flavored component libraries don't fit. It's framework-agnostic, which shadcn/ui isn't.
The miss, if you want to call it that, is interactivity. DaisyUI provides the visual language, not the behavior. A modal class gives you the styles, but the open/close logic is on you. Pair it with Alpine.js, HTMX, or plain React state depending on your stack.
5. Flowbite React
Flowbite started life as a design system in Figma, and the React port inherits that heritage. There are hundreds of marketing blocks (heroes, CTAs, feature grids, pricing tables, footers) plus a full component library, and as of the 0.10 series it supports Tailwind v4 out of the box.
import { Button, Modal } from "flowbite-react";
export function Example() {
return <Button gradientDuoTone="purpleToBlue">Click me</Button>;
}
The sweet spot for Flowbite is marketing sites and admin dashboards where you need to ship a landing page by Friday. If you've already paid for the Pro version, you get extra blocks and the admin dashboard starter, which saves weeks of layout work. If you haven't, the free tier is still the largest block library in this space.
Flowbite's component styling is opinionated in a way shadcn's isn't. Colors, spacing, border radii all follow a specific visual language. That's a feature if you like it and a friction point if you don't.
6. Preline UI
Preline is Flowbite's closest competitor and, in some ways, the more mature of the two. 700+ prebuilt examples, first-class Tailwind v4 support, and a free tier that includes most of what you'd actually ship. The React version landed stable in 2025 after a year in beta.
Setup is similar to DaisyUI in that it's a Tailwind plugin, though the React wrapper adds behavior:
npm install preline @preline/react
Where Preline pulls ahead is the sheer number of admin templates. If your next project is "internal tool with a lot of forms and tables", Preline will cut weeks of your build time in exchange for an aesthetic that's a bit generic out of the box. Theme it with your own color tokens and that genericness largely disappears.
7. Aceternity UI
Aceternity UI is an animation-first library. Glowing borders, spotlight effects, 3D card tilts, animated backgrounds, the whole visual-candy catalog. It's not a replacement for shadcn/ui, it's a complement, and that's exactly how its author positions it.
The distribution model is copy-paste, identical to shadcn:
// components/ui/card-hover-effect.tsx
export const HoverEffect = ({ items }) => {
// animation logic using Framer Motion
};
Tailwind v4 works cleanly because the library ships as JSX with utility classes, and Framer Motion is only loaded where you actually use it. The bundle cost is real if you sprinkle these components everywhere, so be intentional. One animated hero on a marketing page, fine. Seven of them on an internal dashboard, you'll feel it in the Lighthouse score.
For landing pages, portfolios, and product sites where visual impression matters, Aceternity is a cheat code. Stack it on top of shadcn and you've got primitives plus showcase components, which is often the combination you actually want.
8. Magic UI
Magic UI is Aceternity's younger sibling. 150+ animated components, same copy-paste distribution, same shadcn-compatible structure, a bit more restrained in visual style. Where Aceternity leans maximalist, Magic UI leans tasteful. If the difference sounds subtle, look at their respective marquee components side by side.
import { Marquee } from "@/components/magic-ui/marquee";
export function LogoRow() {
return (
<Marquee pauseOnHover className="[--duration:20s]">
{logos.map(l => <img key={l.id} src={l.src} alt={l.name} />)}
</Marquee>
);
}
The components are MIT-licensed, they ship with TypeScript types, and they work with React 19 and Tailwind v4 without config gymnastics. If you're on shadcn and you want one or two pieces of movement (a scrolling logo row, an animated counter, a subtle number ticker), Magic UI is usually the lightest way to add them.
Pick Magic UI over Aceternity when you care about restraint. Pick Aceternity over Magic UI when you want the hero section to land like a punch.
9. Catalyst
Catalyst is Tailwind Labs' own answer to the component-kit question. It's a commercial React UI kit, part of the Tailwind UI subscription, and it's built specifically for Tailwind v4. The components use Headless UI for behavior and are distributed as TypeScript source files you paste into your project, same ownership model as shadcn.
Why is it on this list if it's paid? Because if you're already a Tailwind UI subscriber, you've got it sitting there. And the quality is excellent. The dark mode story in particular is cleaner than most of the free alternatives, and the focus management inherits directly from Headless UI, which is as battle-tested as React accessibility gets.
The catch is price, which is a one-time license rather than subscription, but still a real line item. If you're shipping production software for a business, it pays back fast. If you're prototyping a side project, the free options above will get you there without the receipt.
10. Tremor
Tremor is narrow and that's its strength. It's a React library for dashboards: charts, KPI cards, tables, date range pickers, skeleton loaders. If you're building an analytics product, Tremor is probably the shortest path from empty page to "looks like a dashboard".
Tremor 3.x targets Tailwind v4 and React 19, with Recharts under the hood for the charting. Installing and using a chart looks like:
import { AreaChart } from "@tremor/react";
const data = [
{ date: "Jan 26", Revenue: 2890 },
{ date: "Feb 26", Revenue: 2756 },
];
export function RevenueChart() {
return <AreaChart data={data} index="date" categories={["Revenue"]} />;
}
Is it a full shadcn replacement? No. Is it the best dashboard-specific library in the Tailwind ecosystem? Arguably yes. Pair it with shadcn/ui for the shell (sidebar, navigation, tabs) and Tremor for the content (charts, tables, cards) and you've covered most of what a SaaS admin panel needs.
Picking the right one
There's no single winner. What works depends on what you're building and how much code you want to own:
| Your situation | What I'd reach for |
|---|---|
| Polished React app, ship fast | HeroUI |
| Ownership model of shadcn, more components | Origin UI |
| Complex widgets with solid state management | Park UI |
| Non-React stack (Astro, Rails, Phoenix) | DaisyUI |
| Marketing site with lots of blocks | Flowbite or Preline |
| Landing page that needs to impress | Aceternity UI (plus shadcn for primitives) |
| Adding subtle motion to an existing shadcn app | Magic UI |
| Already paying for Tailwind UI | Catalyst |
| Analytics dashboard | Tremor (plus shadcn for shell) |
Notice how often the answer stacks two libraries rather than replacing shadcn outright. That's not laziness, it's how the ecosystem actually works in 2026. shadcn/ui handles primitives well, so you keep it. Origin UI, Magic UI, Aceternity, or Tremor slot in to cover the gaps without fighting the rest of your code.
A note on Tailwind v4 compatibility
Tailwind v4 changed enough that plenty of older component libraries broke. The new CSS-first config, the OKLCH color tokens, and the dropped PostCSS plugin all shook loose anything that depended on the v3 JS config. Some libraries handled the migration cleanly (HeroUI, DaisyUI v5, Flowbite 0.10+, Tremor 3.x). Others are still catching up. Before committing, check the library's docs for an explicit "v4 supported" note, not just a "works with Tailwind" line. The difference matters.
If you're starting a fresh project today, v4 is the right default. If you're migrating an older codebase and your current component library hasn't caught up, that's a good moment to reevaluate rather than pin Tailwind to v3 indefinitely.
Wrap-up
shadcn/ui is excellent. It's also not the end of the conversation. Depending on what you're shipping, HeroUI might get you there faster, Origin UI might cover more ground with the same ownership model, DaisyUI might fit your stack better, and Aceternity, Magic UI, or Tremor might plug specific holes without asking you to replace anything.
The best picks in this list aren't competing with shadcn so much as extending the ideas shadcn started. Own your components when you need to. Reach for a polished library when you don't. Mix them when the job calls for both. That's the pattern I keep coming back to, and the ten libraries above are the ones I'd pull off the shelf first.