In 2024-2026 shadcn/ui became the dominant React component library choice, especially for Next.js projects. Here's why that happened and whether Chakra UI is still relevant.
The Fundamental Difference
This is the most important thing to understand about shadcn/ui.
Chakra UI is a traditional component library. You install it as an npm package, import components, use them. The library is maintained externally. To update, you npm update.
shadcn/ui is not an npm package. When you run npx shadcn@latest add button, it copies button.tsx into your components/ui folder. You own that file. You can edit it however you want. There's nothing to update — it's your code.
This sounds like a small distinction but it changes everything about how you work with it.
Ownership
With Chakra UI, when a major version breaks your API (Chakra v2 to v3 was a significant breaking change), you're at the mercy of the library's migration timeline and their API decisions.
With shadcn/ui, there's no breaking change problem. You already have the code. If a new shadcn component design is released and you like it, run the add command again. If you don't, keep what you have. No version conflicts.
This "copy components, own them forever" approach has resonated strongly with developers who've been burned by major version migrations in component libraries.
Styling
Chakra UI uses CSS-in-JS (Emotion) for its styling system. It works well but adds runtime JavaScript for CSS parsing, which adds to bundle size and can affect performance — particularly relevant for Next.js Server Components which don't run JS.
shadcn/ui uses Tailwind CSS — utility classes in your HTML. Zero runtime overhead. Works perfectly with React Server Components because there's no JavaScript needed for styling.
For teams already using Tailwind (which is now the majority of new React projects), shadcn/ui slots right in. For teams not on Tailwind, the setup cost is higher.
Components
Chakra UI has been around longer and has more components. It includes things like Stat, Tag, Kbd and various data display components that shadcn/ui doesn't have (yet).
shadcn/ui's component list has grown significantly but still has gaps. The community has been building shadcn "extensions" to fill them.
Both have: Button, Input, Select, Modal/Dialog, Tooltip, Alert, Badge, Checkbox, Radio, Table, Tabs, Accordion, Dropdown Menu.
shadcn/ui uniquely has: Command (cmd+k palette), Sheet (drawer from any side), Calendar, Date Picker, Combobox.
Customisation
Chakra UI customisation is done through a theme provider — a JS object where you override design tokens. It works but it's verbose and the tokens are Chakra-specific.
// Chakra UI theme customisation const theme = extendTheme({ colors: { brand: { 500: '#fd4766' }, }, components: { Button: { defaultProps: { colorScheme: 'brand' }, }, }, })
shadcn/ui customisation is CSS variables:
:root { --primary: 353 93% 63%; /* HSL */ --primary-foreground: 0 0% 100%; }
And since you own the component files, you can change anything directly. No abstraction layer to fight.
Performance
Chakra UI's CSS-in-JS adds ~50KB to bundles and has runtime overhead for style computation. This matters for initial page load performance.
shadcn/ui adds zero runtime overhead. Tailwind CSS is compiled at build time and the output is plain CSS.
For Next.js App Router with Server Components, shadcn/ui is clearly superior — server components can't run JavaScript, making CSS-in-JS either limited or requiring "use client" directives everywhere.
My Take
Use shadcn/ui if:
- You're starting a new Next.js or React project
- You're using Tailwind CSS
- You want to own your component code
- You're building with the App Router
- You want zero runtime CSS overhead
Chakra UI is still reasonable if:
- You have an existing Chakra UI codebase that works
- Your team is comfortable with CSS-in-JS
- You need specific Chakra components that shadcn doesn't have
For new projects in 2026, shadcn/ui is my default recommendation. The ownership model is genuinely better, the Tailwind integration is seamless, and the community momentum is clearly behind it.
Chakra UI isn't dead — it still works and Chakra UI v3 improved significantly. But shadcn/ui won the mindshare battle for new React projects and that matters for hiring, community support and ecosystem.
Frequently Asked Questions
Related Comparisons
Already Decided on Bootstrap?
Get a complete Angular 21 + Bootstrap 5 admin dashboard template — production ready.
Browse Templates →Use code FIRST30 for 30% off.