Introduction
Build React Native interfaces with a registry-first workflow.
Watermelon brings a shadcn-style installation flow to React Native so you can add only the primitives you need, keep the source in your app, and customize the output without fighting a black-box package.
What is Watermelon?
Watermelon is a React Native component registry and CLI. Instead of
shipping one giant UI dependency, it lets you pull installable primitives
like button and text directly into your project.
The result is a docs-and-registry workflow that feels familiar if you have used shadcn on the web, but tuned for native app structure, NativeWind styling, and Expo-friendly local development.
Why it exists
Own the code
Installed components live in your codebase, so refactors, animations, and design tweaks stay under your control.
Install incrementally
Start with a couple of primitives, then layer in more only when the product actually needs them.
Keep docs close
Every component has install commands, examples, previews, and API notes in the same documentation flow.
Stay native-first
The primitives are designed for React Native and Expo rather than being thin ports of web-only assumptions.
Typical workflow
Pick components
Browse the registry, open the docs for a primitive, and verify that its API and visual behavior match the surface you are building.
Install with CLI
Initialize your project once, then add primitives whenever you need them.
CLI workflow
watermelon init
watermelon add button textCustomize output
After installation, the files are yours. Adjust variants, spacing, tokens, or composition patterns to fit your product instead of waiting on a package release.
Project shape
A typical setup keeps UI primitives in a local component directory, uses a shared utility helper, and points Tailwind or NativeWind to the right sources.
Example structure
app/
components/
ui/
button.tsx
text.tsx
lib/
utils.ts
global.css
watermelon.jsonNext steps
Start with the installation guide if you are setting up a fresh app, or jump into the components catalog if you already want to pull in a primitive and begin customizing it.