Expo SDK 57+ · iOS & Android · Open source
shadcn for Expo,
built for AI agents
Components and Screens you copy into your Expo app and own, the same on iOS and Android. Every project ships with Rules, Skills and an MCP server, so your agent can build a whole mobile app and check it on a real device.
npx nativecn-cli@latest create my-appCopy, paste, own it
Not a library
Like shadcn, nativecn is a way to build your own components. You run the CLI and the source lands in your project, ready to change.
Your code, not a dependency
nativecn-cli copies each Component's source into your app. Edit any line; there is no runtime package to upgrade around.
Plain React Native
StyleSheet plus a TypeScript Theme. No Tailwind, NativeWind or className, and no build-time CSS step.
One Theme, both platforms
Every Component reads Tokens from your Theme and never hard-codes a colour or size, so iOS and Android match.
Whole Screens as Blocks
Pre-designed Screens such as sign-in, in several Block Variants, installed at the route you choose.
Its own Primitives
Dialogs, sheets, pickers and menus are written by nativecn, so they follow your Theme and you can edit them.
Your folder structure
Flat or feature folders, recorded in components.json. add writes every file where it belongs.
Presets
Your look, chosen once
A Preset is a Style, a Base Colour, an Accent Colour, a Radius and fonts. You pick it at create, it is baked into your code, and it stays fixed for the life of the project.
Vega
Clean and balanced. The default.
Nova
Compact, for denser screens.
Colours
7 Base Colours × 24 Accent Colours, every pairing checked for WCAG AA contrast in light and dark.
- neutral
- stone
- zinc
- mauve
- olive
- mist
- taupe
- amber
- blue
- cyan
- emerald
- fuchsia
- green
- indigo
- lime
- orange
- pink
- purple
- red
- rose
- sky
- teal
- violet
- yellow
Base Colours: neutral, stone, zinc, mauve, olive, mist, taupe.
Fonts
A Body Font and an optional Heading Font. Only the fonts you choose are added to your app.
- Sans
- Inter, Geist, DM Sans, Figtree
- Serif
- Lora, Source Serif 4
- Mono
- Geist Mono, JetBrains Mono
One short code
Share a Preset as a code, or spell it out as flags. Settings you leave out take their defaults.
# Vega · neutral · neutral · Inter (the default)
npx nativecn-cli@latest create my-app --preset a0
# Nova · violet accent · Lora headings
npx nativecn-cli@latest create my-app --preset a1Q17B
# the same Preset, as long flags
npx nativecn-cli@latest create my-app \
--style nova --accent violet --heading-font loraPresets & Styles in the docsAI-native
The Agent Kit
create and init write the Agent Kit for Claude Code, Codex, Cursor and Antigravity, so your agent knows what exists, how to add it and how to check the result.
# AGENTS.md
1. Tokens only, via createStyles
3. Never Alert.alert, use toast()
8. The Preset is fixed
…
Rules
- nativecn-setup
- nativecn-build-screen
- nativecn-theme
- nativecn-component-authoring
- nativecn-visual-qa
Five Skills
- list_items
- search_items
- view_items
- get_item_examples
- get_add_command
- get_project_config
- get_audit_checklist
- list_block_variants
- list_preset_options
- build_preset_code
The nativecn MCP server
- navigate
- screenshot
- judge
- fix or report
Visual QA Loop
Read AI agents for the full Rules, Skills and tools.
Expo-first
Made for Expo apps
nativecn follows shadcn wherever it can and Expo's conventions wherever it must. Bare React Native apps are not supported.
Expo SDK 57+
SDK 57 is the support floor, with Expo Router for navigation.
iOS & Android
One Theme and one set of Components, the same on both.
Expo's own layout
src/components, src/hooks and your app/ routes.
Few dependencies
The Expo SDK's pinned modules, plus a short recorded list.
Showcase App
See it on a phone
The Showcase App is a complete app built with nativecn, demonstrating every Component. These screens use Preset a1Q17B.


Components 

Button 

Blocks 

Sign-in Block 

Theme 

Feedback demos 

Built for AI
Start a new app
Or set nativecn up in an existing Expo app with init.
npx nativecn-cli@latest create my-app
