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?
Am I the only one who expects ALL writing to be generated or at least edited by an LLM going forward? It's like pointing out the fabric in my clothes was not hand woven by a human. Sounding like an AI wrote it is not as valid a criticism as "it was unclear about...", or "It was too long", or "It left out this important point...". Can't we move past the "It sounds like AI..." posts?
The post effectively communicated what it needed to. It seemed both written and structured in a way that was optimized for human consumption.
If they used AI to write this and that gave them more time to volunteer their time towards developing this fantastic piece of open source software, then this all seems like a good thing to me.
Oh, I know exactly what you mean. I use plannotator with claude a lot and have much better time, since I asked for a specific styleguide.
I used "CD era MSDN reference and Raymond Chen blogging style" as a starting prompt for the styleguide and my work ability to digest AI plans raised a lot.
Couldn't recommend it more. Humble, insightful and respecting the reader
Exactly! See this is what I don't get about the Claude/GPT-style writing that's so prevalent everywhere and why it annoys me even more. It's just so easy to get rid of it, that's why it feels even more disrespectful when I still see it everywhere in full force, just a few sentences is enough to get rid of so much of the extremely obvious tells, sometimes even a "Don't write like an AI" in the prompt leads to completely acceptable results. Everywhere I use LLMs I put a tiny style-guide with instructions such as yours, and the results are just so much more pleasant I barely understand why it seems that almost everyone else seems incapable of it?
The obvious response is of course, they're just completely unbothered by it. Why change it if it doesn't even matter (to me)? I presume the set of people who use AI like this for writing and the set of people who are annoyed by it are largely not overlapping, and there is a possibility that a lot of the text I read and think sounds human, might be written by an LLM with a style-guide like mine. Still though, if 5 words genuinely can reduce annoyance by a lot of people who read your article, why does it feel like so many people haven't picked up on it yet? Or is the LLM writing highly loved & popular amongst other people perhaps?
> Just read the post and it didn’t sound AI to me.
Those short and punchy two-part sentence groups very much feel like the writing that Claude does, like: The writing feels familiar. Suspicion earns its keep. Ultimately, the judgement remains yours. Not conjecture, your thoughts.
Then again, I bet how much aversion people feel to that sort of thing depends on how much they’ve been exposed to that, especially in frustrating circumstances. Personally, that’s a lot (daily Claude Code) and sometimes that writing makes me really upset.
Or maybe people genuinely just write like that and overuse that style and Claude has ruined it for me, whereas otherwise I wouldn’t have given it a second look.
I didn't read the post and scrolled to a random clause.
"Because you own the code. You've added variants, changed classes, threaded new props. A codemod handles the components you never touched and breaks on the ones you did."
I hate the marketing-selling-linkedn style as much as anyone, but I don't think it's an LLM thing in particular. It's a style that existed before LLMs and it's very easy to make LLMs avoid it with one or two prompt paragraphs.
For what it's worth, I didn't get that vibe reading this post.
Serious question, why does it matter to you? Maybe they wrote a draft and reviewed Claude's writing before publishing. Why are we trying to "call out" when AI is assisting us in our work? This is an open source project, not a F500 company. They have limited resources, maybe English isn't their first language.
I'm not a shadcn user, and so as with any project I'm not familiar with, I'm looking to see if if it's interesting to me. If the post is thoughtful and clear and I like the sense I get of their perspective on programming, then great, tell me more. No guarantees but maybe the writer is someone whose software I'd like to use. Claude doesn't tell me anything except that the writer used Claude.
It's the same as with too marketing-speak, which conceivably this is. Maybe the actual work is good but Sturgeon's law, it's probably crud. If I really needed a UI library or whatever right now then maybe I'd dig deeper but in casual browsing HN mode? No time, catch them later.
So maybe all your maybes but who cares? It's not AI that made me think badly of them: I think badly of all software by default and it takes more than Claude to change my mind.
Tone/style bit aside, a real problem is length. Scroll waaay down and look at most older updates and see how brief and too-the-point they were. Often they look rushed, some essential links, and that’s it. Fine by me! That’s the real state of things… people usually don’t want to write bc it’s a lot of effort.
I see the same phenomenon at work. A year ago I’d read your two-sentence daily update in slack, all riddled with the quirks and oddities that made it yours. Today when I see the page of headings and emojis describing the couple things you did yesterday, I wince because now I’m the one who has to sift through the fluff to get to the point.
I think fundamentally it's just really annoying to read the same cringey LinkedIn style voice everywhere.
If you manage to write an AI assisted article that doesn't tediously follow the "what this means for you", "it's not this, it's that", "One thing. Two things. Three things." formula... I really doubt people would complain.
I agree that the style is somewhat generic, but for things like new release announcements, I find that the common structure allows me to skim through much faster. I value that and am happy with that tradeoff.
Just read the post! It's essentially "we switched from Radix to Base UI". Why? "the ecosystem moved on". Nothing says braindead web frontend churn like this post, and them not having written it in the first place is just the cherry on the cake.
They could have just written "we asked Claude to rewrite our project with Base UI because it eclipsed Radix in NPM downloads".
Because it implies that the users of the AI don't understand that it's output is usually horseshit littered with enough good info to make it sound correct
Isn't that a bit like working in the movie industry and no longer being able to enjoy films because you are always thinking about how they were made and noticing their flaws?
More like working in the movie industry and noticing all the places where the director took the cheap shortcut instead of putting effort in. And while the result isn't much worse, it still feels a bit disrespectful. You reminisce about the time five years ago when things were much more human
Oh, and the target audience of movie you are watching are other people in the movie industry. Nearly everyone in the audience can tell where production cheaped out
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.
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 much
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.
It's one more thing to maintain, and it's also difficult to push back on things. If you use off the shelf components it's much easier to say to designers and managers that a UX pattern is not available or not valid. You can point to the mature well known community owned UI library you use and make it authoritative. It's harder to do it if you build your own, suddenly each designer and developer is throwing things in there, adding features etc. It's also difficult to agree on the structure, so the components are well thought out, flexible, but also not so flexible to lose semantics. It's not an easy job, do you use slots, composition, rendering callbacks, there are too many decisions and you spend time building the UI library instead of actually shipping features.
Odd to me when I read stuff like this but also posts about how AI is making everything trivial. Surely a thing that almost every company did in the early 2000s should not be hard today, but of course today you can’t just write HTML + CSS, you must consider every front end framework introduced in the last decade.
> 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.
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.
I love Mantine. It’s easy to use, full featured with lots of components and helpers, and yet if you need to, you can use it headless and customise it too (I’ve never bothered though; I did add my own additional spacing/sizing options via the theme support though)
Any direct comparisons to base UI? I've been pretty satisfied with base UI so far, but my usage has been very basic so I'm open to switching if Mantine offers something better.
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.
If you don't need to make any changes, it should be very simple to just upgrade by replacing the components. And if you need to make changes then well it's not gonna work with a traditional UI library.
> 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.
Vendoring your components gives you the best of both worlds. You get a full component library but retain the ability to modify them as you want.
Your AI agent claim doesn't make any sense either. When upgrading normally your component just gets rewritten on disk. When switching from radix to base ui, a more comprehensive approach is needed.
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.
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?
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.
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)
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.
It uses Zag js for its primitives which is framework agonistic as opposed to Radix or Base UI. Shadcn is only for React. If you use Solid.js for example, Skeleton is an option for your design system.
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.
Base UI is more low-level, a lot less opinionated and doesn’t force you into certain layouts. This of course makes it more complex to use, but that doesn’t matter if you’re using shadcn components because they’re doing that work for you.
So essentially they look and operate the same as Radix components at the shadcn level but you have low-level control later on should you need it.
I tried to use baseUI and gave up. Forms are a bit different and I can't no longer copy/paste similar form code between projects (unless I migrate everything to baseUI).
Personally I'd prefer React Aria; I don't have the patience to try understand why suddenly everyone is rushing to adopt Base UI instead of Radix which itself was once suddenly the thing everyone rushed to instead of Stitches.
Having a library not in anyway related to that to me feels like a big pro.
I have found React Aria to be very good. I really like how its a set of hooks, a set of premade components using said hooks, and I like how you can choose bits of either approach for your own components. Some of the hooks are very useful.
If they used AI to write this and that gave them more time to volunteer their time towards developing this fantastic piece of open source software, then this all seems like a good thing to me.
I used "CD era MSDN reference and Raymond Chen blogging style" as a starting prompt for the styleguide and my work ability to digest AI plans raised a lot.
Couldn't recommend it more. Humble, insightful and respecting the reader
The obvious response is of course, they're just completely unbothered by it. Why change it if it doesn't even matter (to me)? I presume the set of people who use AI like this for writing and the set of people who are annoyed by it are largely not overlapping, and there is a possibility that a lot of the text I read and think sounds human, might be written by an LLM with a style-guide like mine. Still though, if 5 words genuinely can reduce annoyance by a lot of people who read your article, why does it feel like so many people haven't picked up on it yet? Or is the LLM writing highly loved & popular amongst other people perhaps?
Would be kind of funny if someone from the team came out and said it was written by a human.
Those short and punchy two-part sentence groups very much feel like the writing that Claude does, like: The writing feels familiar. Suspicion earns its keep. Ultimately, the judgement remains yours. Not conjecture, your thoughts.
Then again, I bet how much aversion people feel to that sort of thing depends on how much they’ve been exposed to that, especially in frustrating circumstances. Personally, that’s a lot (daily Claude Code) and sometimes that writing makes me really upset.
Or maybe people genuinely just write like that and overuse that style and Claude has ruined it for me, whereas otherwise I wouldn’t have given it a second look.
"Because you own the code. You've added variants, changed classes, threaded new props. A codemod handles the components you never touched and breaks on the ones you did."
For what it's worth, I didn't get that vibe reading this post.
It's the same as with too marketing-speak, which conceivably this is. Maybe the actual work is good but Sturgeon's law, it's probably crud. If I really needed a UI library or whatever right now then maybe I'd dig deeper but in casual browsing HN mode? No time, catch them later.
So maybe all your maybes but who cares? It's not AI that made me think badly of them: I think badly of all software by default and it takes more than Claude to change my mind.
I see the same phenomenon at work. A year ago I’d read your two-sentence daily update in slack, all riddled with the quirks and oddities that made it yours. Today when I see the page of headings and emojis describing the couple things you did yesterday, I wince because now I’m the one who has to sift through the fluff to get to the point.
They think it's not worth investing human attention to write it, so why am I expected to invest my attention to read it?
If it's written as SEO spam, why link it here?
If it's written to be read by humans, do they think we're stupid?
If you manage to write an AI assisted article that doesn't tediously follow the "what this means for you", "it's not this, it's that", "One thing. Two things. Three things." formula... I really doubt people would complain.
They could have just written "we asked Claude to rewrite our project with Base UI because it eclipsed Radix in NPM downloads".
Oh, and the target audience of movie you are watching are other people in the movie industry. Nearly everyone in the audience can tell where production cheaped out
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.
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.
It's one more thing to maintain, and it's also difficult to push back on things. If you use off the shelf components it's much easier to say to designers and managers that a UX pattern is not available or not valid. You can point to the mature well known community owned UI library you use and make it authoritative. It's harder to do it if you build your own, suddenly each designer and developer is throwing things in there, adding features etc. It's also difficult to agree on the structure, so the components are well thought out, flexible, but also not so flexible to lose semantics. It's not an easy job, do you use slots, composition, rendering callbacks, there are too many decisions and you spend time building the UI library instead of actually shipping features.
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.
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.
Is it ever that simple?
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.
Vendoring your components gives you the best of both worlds. You get a full component library but retain the ability to modify them as you want.
Your AI agent claim doesn't make any sense either. When upgrading normally your component just gets rewritten on disk. When switching from radix to base ui, a more comprehensive approach is needed.
When You're Ready to Migrate
You don't need to migrate. But if you want to, we built a skill for it:
pnpm dlx skills add shadcn/ui
Then ask your coding agent:
migrate accordion to base-ui
Thanks internet.
https://news.ycombinator.com/item?id=46688971
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.
Even if they’re more deterministic, I wonder if the days of codemods are numbered.
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.
PrimeNG had a licensing change recently and I'm looking at a suitable alternatives for a fresh project.
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
[2]: https://primeui.dev/nextchapter
[3]: https://github.com/primefaces/primeng
That being said, a group did fork PrimeNG, and plan on maintaining it (new name pending)
https://github.com/openng-org/open-prime
https://lilydesignsystem.github.io
[0] https://www.9ui.dev
All of these component libraries look the same.
So essentially they look and operate the same as Radix components at the shadcn level but you have low-level control later on should you need it.
Trying to decide between the two atm.
Having a library not in anyway related to that to me feels like a big pro.
I have found React Aria to be very good. I really like how its a set of hooks, a set of premade components using said hooks, and I like how you can choose bits of either approach for your own components. Some of the hooks are very useful.
It even looks incredible when building desktop apps. We used it to build DB Pro [1] and the DB Pro website, and everyone compliments us on our design.
I see it becoming the defacto choice for UIs especially when building with agents.
[1] https://dbpro.app