Delacour UI vs HeroUI
The difference is where the code lives.
HeroUI Native and HeroUI Pro are good libraries built on the same stack as this one — Tailwind v4 through Uniwind, Reanimated, the Gesture API. They install into node_modules. Delacour UI writes the component's source into your repository, under your import alias, on your branch — the shadcn model, for React Native. Everything below follows from that one difference.
HeroUI Native, and HeroUI Pro
node_modules/heroui-native/lib/buttonResolved from the registry, or downloaded from a CDN against a licence. Read-only in practice: you configure around it, wrap it, or fork the whole repository.
Delacour UI
app/components/ui/button.tsxWritten by delacour add, MIT, committed by you. Open it and change it. delacour diff will tell you what moved upstream and will never overwrite your work to do it.
The main point
Adding one variant, both ways.
Not a contrived example — a brand colour on a button is the first thing every design system asks for that the library it started from did not ship.
With a package
// node_modules/heroui-native/button — not yours to edit.// A new variant is a wrapper, and the type union// never learns about it.import { Button } from "heroui-native/button";import type { ButtonProps } from "heroui-native/button";export function BrandButton(props: ButtonProps) { const className = cn("bg-brand", props.className); return <Button {...props} className={className} />;}// Every call site says <BrandButton>, forever — and// the next release can change Button's internals// underneath this without telling you.With the source in your repository
// app/components/ui/button.variants.ts — the file// delacour add wrote. A new variant is a line in an// object you own.variant: { primary: { root: "bg-primary", label: "text-primary-foreground", }, brand: { root: "bg-brand", label: "text-brand-foreground", },},// <Button variant="brand"> typechecks, because the// union is derived from this object at build time.// Nothing wraps anything.HeroUI's own contributing guide is explicit about which side of that line a consumer is on — only the core team adds components, and behaviour is not changed without prior discussion, because the library is drawn from a design system its team maintains. That is a reasonable way to run a library. It is a bad fit for a product whose design outgrows the defaults, which is every product eventually.
Side by side
Every row, including the ones we lose.
Three products: this library, HeroUI's free React Native library, and HeroUI Pro's licensed one. Every mark carries the note that says what it means — a tick with no explanation is a claim you cannot check.
Where the code lives
This is the whole difference, and everything else on this page follows from it. Delacour UI's CLI writes a component's source into your repository, under your import alias, on your branch. Both HeroUI libraries resolve out of node_modules.
MIT · copy in or install
Apache-2.0 · npm package
Commercial · licensed package
Component source in your repository
Delacour UI
delacour add button writes app/components/ui/button.tsx
HeroUI Native
node_modules/heroui-native
HeroUI Pro
node_modules/heroui-native-pro, fetched from a CDN
Change a variant by editing the file
Delacour UI
it is your file — open it and change it
HeroUI Native
wrap it, override classes, or fork the repository
HeroUI Pro
the terms forbid modifying components for redistribution
Your edits survive an upgrade
Delacour UI
delacour diff prints both sides and picks no winner
HeroUI Native
npm update replaces the package wholesale
HeroUI Pro
the CLI re-downloads the licensed build
Add a component the library does not have
Delacour UI
it is a folder beside the others, in your own style
HeroUI Native
beside the library, not inside it — only the core team adds components
HeroUI Pro
beside the library, not inside it
Delete what you do not use
Delacour UI
you only ever added the components you asked for
HeroUI Native
subpath imports keep the rest out of the bundle, not out of the tree
HeroUI Pro
subpath imports keep the rest out of the bundle, not out of the tree
Installs with no account, no login, no token
Delacour UI
a public registry and a public npm package
HeroUI Native
npm install heroui-native
HeroUI Pro
heroui-pro login, and HEROUI_AUTH_TOKEN in CI
You can publish the source you shipped
Delacour UI
MIT — the copy in your repository is yours
HeroUI Native
Apache-2.0
HeroUI Pro
sharing, publishing or sub-licensing the source is prohibited
Priced per developer
Delacour UI
free, and there is no paid tier to graduate to
HeroUI Native
free
HeroUI Pro
perpetual seats, one year of updates, renewals optional
The stack is the same
Both libraries style with Tailwind v4 through Uniwind, animate with Reanimated and read gestures through the Gesture API. Nothing above turns on one of them having picked better tools.
MIT · copy in or install
Apache-2.0 · npm package
Commercial · licensed package
Tailwind v4 className styling, via Uniwind
Delacour UI
className on every component
HeroUI Native
className on every component
HeroUI Pro
className on every component
Reanimated and the Gesture API
Delacour UI
declared as peers, never dependencies
HeroUI Native
declared as peers, with pinned ranges
HeroUI Pro
peer detection is part of the install
Granular subpath imports
Delacour UI
@delacour/react-native-ui/button — no package-wide barrel
HeroUI Native
heroui-native/button
HeroUI Pro
heroui-native-pro subpaths
A provider at the root of the app
Delacour UI
DelacourProvider
HeroUI Native
HeroUINativeProvider
HeroUI Pro
HeroUINativeProvider
iOS and Android, Expo or bare
Delacour UI
pinned to the versions Expo SDK 57 bundles
HeroUI Native
peer ranges, checked by the install
HeroUI Pro
peer ranges, checked by the install
Theming and design tokens
Delacour UI paints from shadcn's palette, name for name, so the theme a web team already maintains is the mobile theme after one command. HeroUI ships its own token vocabulary and, on Pro, a hosted builder for it.
MIT · copy in or install
Apache-2.0 · npm package
Commercial · licensed package
Token names match shadcn's
Delacour UI
--primary, --muted-foreground, --radius — every one of them
HeroUI Native
its own token vocabulary
HeroUI Pro
its own token vocabulary
Bring a web app's globals.css across
Delacour UI
delacour theme takes a path, a URL or stdin
HeroUI Native
no import path from a shadcn or tweakcn theme
HeroUI Pro
themes are authored in HeroUI's own dashboard
A visual theme builder
Delacour UI
/theme — server-rendered, every state a URL, no account
HeroUI Native
edit the theme by hand
HeroUI Pro
a hosted dashboard, behind the licence
The theme file is yours to hand-edit
Delacour UI
theme.css sits in your repository from delacour init
HeroUI Native
your own CSS overrides the package's
HeroUI Pro
your own CSS overrides the package's
Where HeroUI is ahead
Three of these are structural and are not going to change: HeroUI covers the web, it is the work of a company rather than one maintainer, and Pro sells finished screens. If any of them is what you are buying, buy it.
MIT · copy in or install
Apache-2.0 · npm package
Commercial · licensed package
React components for the web
Delacour UI
React Native only — the web story is the shared palette
HeroUI Native
the HeroUI React library, Apache-2.0
HeroUI Pro
the Pro React library too
One design system across web and native
Delacour UI
the tokens cross over; the components do not
HeroUI Native
a similar API on both
HeroUI Pro
sold as one system in the Super Hero tier
Prebuilt screens, blocks and templates
Delacour UI
components, and a playground that demonstrates them
HeroUI Native
components
HeroUI Pro
templates and blocks are most of what the licence buys
Maintained by a company, with paid support
Delacour UI
one maintainer, GitHub issues
HeroUI Native
NextUI Inc., community support
HeroUI Pro
private Discord and prioritised support
Past its first stable release
Delacour UI
0.1.0-alpha — the API still moves
HeroUI Native
1.x, with NextUI's history behind it
HeroUI Pro
1.x
A Figma design system behind the components
Delacour UI
the code is the design system
HeroUI Native
the core team designs in Figma first
HeroUI Pro
design system files ship with every tier
Not a lock-in
The npm package is right there.
If your team would rather take updates than own files, install the package and skip the CLI entirely. It is the same source — the registry serves the library's own files rather than a copy of them — so the two can never drift.
You can also start on the package and move later. Run delacour add button in a project that already installs @delacour/react-native-ui, delete the package import, and point at the new path. Nothing about the component changes on the way across.
Copy the source in
bunx delacour@alpha add buttonOr install the package
bun add @delacour/react-native-ui@alphaThe case
Why you would pick Delacour UI.
For a React Native product that will outlive its first design, this is the trade almost every team eventually wants: the components are yours from the first commit, and nothing about that costs you the updates.
Your design will outgrow the defaults
Every product's design eventually asks for something the library it started from did not ship — a brand variant, a different corner, a state nobody anticipated. With the source in your repository that is an edit. With a package it is a wrapper you maintain forever, or a fork you maintain forever.
You keep the updates anyway
Owning the files is usually a trade against ever upgrading again. It is not here: delacour diff shows what moved upstream on each component, prints both sides, and picks no winner. You take what you want and keep what you changed.
Nothing is behind a licence
All 20 components are MIT, free, and installed from a public registry — no seats, no login, no HEROUI_AUTH_TOKEN in CI, and no paid tier holding back the components you actually need. The source you ship is yours to publish.
Your web theme is already your mobile theme
The palette is shadcn's, name for name. Paste the globals.css your web app already maintains, run delacour theme, and the mobile app matches the website — rather than learning a second token vocabulary and keeping the two in sync by hand.
You can still change your mind
Start on the npm package if your team would rather take updates than own files, and copy components in later, one at a time, when one of them needs to change. The source is identical either way, so moving costs a changed import.
The exception is real and it is narrow: if you need React components for the web from the same system, or you are buying finished screens rather than components, HeroUI is the better purchase — and the table above says so in its own words.
Sources
Read from HeroUI's own documentation and terms. Prices are deliberately not quoted here: HeroUI publishes its tier names and its licence model but not the amounts, so the pricing page is the only honest citation. If something below has changed, open an issue and this page gets corrected.