Copy-Paste Components vs an Installed Component Library
Copy-paste components put the source code in your repository, so you own and edit it directly. An installed component library ships as an npm package, so you get updates for free but customize through its API. Choose copy-paste when design control matters most, and a package when you want someone else to maintain the components.
Side by side
| Copy-paste (shadcn, Watermelon) | Installed package (MUI, Mantine, HeroUI) | |
|---|---|---|
| Ownership | Code lives in your repo | Code lives in node_modules |
| Customization | Edit anything | Props, themes, and overrides |
| Updates | Manual, you pull changes | Automatic through version bumps |
| Breaking changes | Only when you choose | On major releases |
| Bundle | Only what you copied | Tree-shaken package |
| Consistency | Up to your team | Enforced by the library |
When copy-paste wins
- Marketing sites and landing pages where each section is custom.
- Products with a strong visual identity.
- AI-assisted coding, where agents edit real source instead of fighting a library API.
When a package wins
- Large internal tools where consistency beats customization.
- Teams without time to maintain component code.
- Complex widgets you never want to touch, like a full data grid.
The hybrid most teams use
Use a shadcn-style base for primitives, then copy in finished blocks and dashboards for the parts that take longest to build. Watermelon UI is designed for that workflow: every item installs through the shadcn CLI.
Frequently asked questions
Is shadcn/ui a component library?
Not in the npm package sense. shadcn/ui is a collection of components you copy into your project with a CLI, so you own the code.