Overview

Copy component source into your project instead of installing a package.

delacour copies the library's source into your repository. You end up owning button.tsx — you can read it, edit it, and delete the parts you do not want. There is no package to upgrade and no release cadence to wait on.

bunx delacour@latest init
bunx delacour@latest add button

That writes real files into your app:

src/
├── components/ui/button/     button.tsx, button.variants.ts, index.ts, AGENTS.md, …
├── lib/                      cn.ts, tv.ts
└── styles/                   tokens.css, theme.css, base.css, index.css

Which delivery should you use?

Both are supported and they hold the same components. The choice is about who owns the code.

Install the packageThis CLI
Upgradesbun updatedelacour diff, then decide
Editing a componentFork or wrap itEdit the file
Import path@delacour/native-ui/button@/components/ui/button
New componentsArrive with the packagedelacour add when you want one
BundleOnly the subpaths you importOnly the files you added

You can start with one and move to the other

The components are identical — the CLI copies the same source the package ships. Running delacour add button in a project that already installs @delacour/native-ui gives you a local copy to edit; delete the package import and point at the new path.

Why this is not just shadcn for React Native

The copy-in model is shadcn's. What is different is everything Expo makes different, and each of these is a failure that produces no error at all when it goes wrong:

What init will and will not touch

Writes native-components.json

Where components go, and how they should import each other. See Configuration.

Wires Metro and your Tailwind entry

metro.config.js gets the Uniwind wrapper; global.css gets an @import and the @source globs, inside a marked block it is safe to re-run over.

Copies the theme

The styles item — tokens, palette, and the Uniwind type shim — so a fresh project renders before you have chosen a single component.

Prints what it will not do

tsconfig.json and app.config.ts are read, never written. Three things need a human, and delacour doctor re-checks every one of them.

Next

On this page