I've tried almost every UI library out there.
Material UI made everything feel like a Google product. Chakra was nice but I spent more time reading their docs than actually building stuff. Tailwind UI is beautiful but man, paying for templates and still having to tweak everything got old fast.
Then someone on Twitter mentioned shadcn/ui.
I didn't get it at first. You copy-paste components? That sounds like something I'd do in 2015. But I tried it anyway because I was desperate at that point.
Turns out I was wrong.
The thing that makes it different is stupidly simple: you actually own the code. When you install a button component, it creates a file in your project. Right there in components/ui/button.tsx. You can open it, change it, break it, fix it. Whatever you want.
No overrides prop. No deep nested theme config. No !important because the library's styles are fighting yours.
I remember the first time I needed to change the button border radius for a design. With shadcn I just opened the file and changed the Tailwind class. Took five seconds. With Material UI that would have been a Stack Overflow session and three hours of my life.
The accessibility stuff is handled by Radix underneath which is nice because I don't have to think about keyboard navigation or focus traps. That stuff is genuinely hard to get right and they just do it for me.
What I really like though is that it doesn't try to do everything. You get a button. You get an input. You get a dialog. They work. They're accessible. They look decent out of the box. But what you build with them is completely up to you.
It's like getting a really solid set of Legos instead of a pre-built castle. You could build the castle if you want. Or you could build something completely different.
I've been using it for a few months now and I haven't touched another UI library since. Not because it's perfect but because it stays out of my way. And honestly that's all I ever wanted.