Discussion summary
Shadcn/UI has shifted from Radix to Base UI as the default. Users are debating the merits of Base UI versus React Aria and other libraries.
What the discussion says
- Some prefer React Aria over Base UI.
- Many users are still on Radix or other libraries like Daisyui.
- There is curiosity about Astryx from Meta.
- Discussions include tradeoffs and reasons for switching.
“Most of the websites I found are still on the radix version.”
“I'd prefer React Aria; I don't have the patience to understand the rush to adopt Base UI.”
Join the discussion
Write your take first — we'll ask for email only when you're ready to publish.
- Hacker News
- That's great. Started using Base UI early on via 9ui [0] and found the primitives very pleasant to work with, especially if one wants to compose more complex components from other Base UI components. Maybe Shad can reduce some of the dependencies they rely on now.by Topfi
- What's the difference?
All of these component libraries look the same.
by nullbio - I want to use shad-CN but instead end up defaulting to Mantine everytime. Its just so much faster than having to remember which contexts to wire in.
- I miss a good old skeuomorphic styleguide. I guess the last one was Blueprint?
- Would that lead to anything better for the users, such as a smaller bundle size? Or is it more of a QoL change for Shadcn maintainers?by ahmedehab_01
- On React Native support: https://github.com/mui/base-ui/issues/2612by rplnt
- What is the shadcn/ui equivalent for Angular?
PrimeNG had a licensing change recently and I'm looking at a suitable alternatives for a fresh project.
- by microflash
- I'm in the same boat. We've been using PrimeNG for several apps at my job, and until we find a suitable replacement, we'll be stuck on using Angular 21.
That being said, a group did fork PrimeNG, and plan on maintaining it (new name pending)
by sphars - by mhfu
- I'm building Lily Design System as a response to Shadcn and similar systems not yet being available directly for multiple stacks including Svelte, Angular, Nunchucks. It's all free open source. If you want to send me your feedback, suggestions, etc. I can easily add things to Lily.by jph
- > PrimeNG had a licensing change recently
Both attempts [1] to surface this on HN failed but if you are using a PrimeTek component library you need to be aware of this change.
PrimeNG, PrimeReact, and PrimeVue are all going fully closed source and ongoing licencing will be $800 per developer seat in 2027. [2]
The previous repos have been archived. [3]
PrimeFaces remains open source but it's now developed and maintained by independent volunteer developers who are not employees of PrimeTek.
[1]: https://hn.algolia.com/?q=The+Next+Chapter+of+PrimeTek
by cube00 - Moving away from codemods and towards LLMs doing migration work is an interesting development.
Even if they’re more deterministic, I wonder if the days of codemods are numbered.
by dyllon - I think the two complement each other perfectly and will continue to do so. I keep writing AGENTS.md files for soft rules and custom linter rules for hard ones which IMO is the best of both worlds.
- Sorry, what is codemod here?by tipiirai
- The framing in TFA is a dangerous way to think. Codemods are whatever, I could take em or leave em.
What you want isn't skill files for LLMs, though. Just write docs for humans. Write a migration guide, for humans.
It's going to take us a while to realize they should be the same things, skill files and docs.
by xyzzy_plugh - How about leveraging llms to produce deterministic codemods? You can then iterate on this by running the codemods and using other deterministic guardrails, feeding the results back into the llm to improve the codemods?by yard2010
- I have used and mostly like Shadcn, and yet their Radix-based radio button was a bit much, as are other choices, where similarly overblown solutions were used.by gherkinnn
- My main gripe with Shadcn and, well, most UI libraries nowadays, is that they are reinventing the wheel for like a thousandth time.
I’m trying out Ark UI on a side project. They do have some genuinely useful components, like tags input: https://ark-ui.com/docs/components/tags-input
They have a tabs/“segment group” component with a nice animated active element indicator which would probably be tricky to implement: https://ark-ui.com/docs/components/segment-group
And then they also have stuff like overcomplicated “click to copy” button and a <details> reimplementation: https://ark-ui.com/docs/components/clipboard, https://ark-ui.com/docs/components/collapsible
All with a verbose markup that renders as a div soup.
by notpushkin - It bothers me that these popular UI toolkits render copious amounts of divs. I went to look at Base UI and for nearly every component it's "Renders a <div> element", when there are native elements that can achieve the same thing like details/summary for accordion.
I'm far from a native web evangelist, I think there's a lot the web APIs especially HTML gets wrong, but div overuse is also wrong.
- For boring applications - do people prefer the copy paste approach of shadcn instead of a traditional ui library like mantine?
The copy paste approach may be easily modifiable but creates new problems - ie now there is an upgrade ai agent for something that should just be ticking up a version number.
by chvid - > now there is an upgrade ai agent for something that should just be ticking up a version number.
If a component as basic as a button or a list view ever requires an “upgrade”, something is fundamentally wrong to begin with. HTML5, ARIA, etc. aren’t cutting edge technologies that the ecosystem still needs time to figure out. This should be pull once and forget.
by p-e-w - I don't like the copy paste. Rather use lower-level abstractions for the UI if I know I have to make modifications.by rzmmm
- Ticking up a version number is all fine and good until it requires a dependency upgrade you aren’t ready for. If for example you wanted to upgrade MUI from 4 to 5, you’d find react 17 wasn’t supported. And if you weren’t ready or able to upgrade react, then you’d just be stuck using a UI library going more out of date by the day.
With shadcn / the copy paste format, you’ll almost never see that happen. The button shadcn provides for example is just css / tailwind. And if you did ever for some reason want to bring in a dependency for your button component you wouldn’t have to consider its effect on your other UI elements. The rest of your components can live independently (for the most part)
We have customized UI components we got from shadcn and now some use radix and some use base ui, and some have other dependencies or no dependencies at all. Properly tree shaken this is not a big deal at all and we can upgrade components individually as needed.
For boring applications this may be a bit much. But even then if you wait too long and mantine falls behind more than a couple versions, who knows how easy it would be to get your whole project up to date.
by slowjames - > that should just be ticking up a version number.
Ah, but it's rarely just that in many systems. It can only be just that if the component library does exactly what you want. Unfortunately, it happens quite often that component doesn't entirely do what's needed.
People bolt on extra CSS to the components all the time. Two lines of CSS is very tempting if the alternatives are a few hours of work at least. But those two lines need to be verified against every new feature of the component library.
Do those two line fixes a lot, and upgrading becomes A Project.
by lucumo - Mantine is brilliant, I can build anything in it quickly and then extend it or completely customize the theme or individual components, but there is a learning curve. I would not call it a giant learning curve.by Exoristos
- I never understood the copy paste thing. Shadcn just reeks of a fad, and even after doing copy paste and trying it, I didn’t see what the big deal was. But enjoy it, y’all. One of the benefits of AI is that HN isn’t clogged with talk of JavaScript frameworks as muchby stevepotter
- I’m leaning towards vendoring for all my new projects.
Grabbing an off-the-shelf UI library is easy in the short term, but it’s usually overcomplicated, implements things I won’t ever need, is hard to tweak if/when you want to distinguish your app from the thousand others using the same library, and when you do decide to upgrade it, all your tweaks break in subtle ways.
What I think would be the best approach is building your own UI library. You own it, you get to reuse it across different projects and maintain the same visual style (if desired), and you add features when you need them.
by notpushkin - "just ticking up a version number" drastically understates the headaches of Material UI over the years.
Not a boring application, a very large application -- each major version update was a tedious process because they completely upended many APIs.
We've migrated to shadcn, and upgrades are now easy; we can upgrade a single component -- add the new ones free.
With MaterialUI we had to update EVERYTHING to their new APIs to be able to take advantage of the new features anywhere.
With shadcn we can be selective.
by oneneptune - It’s getting tiring to hear at this point, but the Claude voice comes through clearly in this post, and it’s a little off-putting. If even an important product release doesn’t warrant full human attention, where will we draw the line?by ricardobeat