Think MUI, heroUI, traditional components have you install their package, import the component and configure it through arguments.
ShadCN components have you copy the component code into your codebase, you own it. They come with the ability to configure arguments, but also because the code is yours its expected that you change the internal logic/styling/structure of the component.
I believe in the era of AI code the ladder just makes more sense.
If you are using shadCN as building blocks for a centralized component library I think it makes more sense, but personally I don’t think the component registry pattern scales well across multiple teams/UIs. ShadCN and tailwind really encourage design drift.
I think shadCN has its place for sure but I’d always advocate for Mantine and css modules anywhere early enough to use premade UI solutions.
> ShadCN components have you copy the component code into your codebase, you own it
That’s a common misconception/myth/lie that doesn’t seem to want to go away even though Shadcn is more honest about it these days.
You don’t own the compenents, and you don’t copy the component code into your codebase. The components are Base UI (and previously Radix)
And they’re imported like any other.
What you’re copying is a thin styling wrapper, just the same as you can use to restyle “traditional” components.
The difference is that you have to provide all the styles, rather than just overrides, which can be both a blessing and a curse.
I think this is a misinterpretation. BaseUI provides baseline semantics that because the code is in your codebase you can choose to keep or remove. BaseUI is also actively unstyled/unopinionated, you use it to compose your own components, which again live in your codebase.
When you import shadcn components you can rebuild them however you want, thats the point.
Think MUI, heroUI, traditional components have you install their package, import the component and configure it through arguments.
ShadCN components have you copy the component code into your codebase, you own it. They come with the ability to configure arguments, but also because the code is yours its expected that you change the internal logic/styling/structure of the component.
I believe in the era of AI code the ladder just makes more sense.
If you are using shadCN as building blocks for a centralized component library I think it makes more sense, but personally I don’t think the component registry pattern scales well across multiple teams/UIs. ShadCN and tailwind really encourage design drift.
I think shadCN has its place for sure but I’d always advocate for Mantine and css modules anywhere early enough to use premade UI solutions.
> ShadCN components have you copy the component code into your codebase, you own it
That’s a common misconception/myth/lie that doesn’t seem to want to go away even though Shadcn is more honest about it these days.
You don’t own the compenents, and you don’t copy the component code into your codebase. The components are Base UI (and previously Radix) And they’re imported like any other.
What you’re copying is a thin styling wrapper, just the same as you can use to restyle “traditional” components.
The difference is that you have to provide all the styles, rather than just overrides, which can be both a blessing and a curse.
I think this is a misinterpretation. BaseUI provides baseline semantics that because the code is in your codebase you can choose to keep or remove. BaseUI is also actively unstyled/unopinionated, you use it to compose your own components, which again live in your codebase.
When you import shadcn components you can rebuild them however you want, thats the point.
5 replies →