Material-inspired React Native UI toolkit built as a pnpm + Turborepo workspace.
Live Web Demo · Scan the QR code with Expo Go to try it on your device:
Updated automatically on every push to
mainvia EAS Update and GitHub Pages. Releases are managed by the Release workflow.
This repository includes:
@rn-ui/core: theme types, themes, and provider primitives.@rn-ui/components: reusable UI components built on top of core.example: an Expo Router app used as a live component playground.
- Theme system with
lightTheme,darkTheme, andMaterialProvider. - Reusable components with typed APIs.
- Expo-based example app for quick manual verification on iOS, Android, and web.
- Workspace-driven local development with package linking.
| Package | Purpose |
|---|---|
@rn-ui/core |
Theme contracts, theme values, context provider, useTheme. |
@rn-ui/components |
UI components and subpath exports. |
example |
Demo app showing component behavior and API usage. |
.
├─ example/ # Expo Router showcase app
├─ packages/
│ ├─ core/ # Theme + provider primitives
│ └─ components/ # Reusable UI component package
├─ turbo.json
└─ pnpm-workspace.yaml
- Node.js
>=18 pnpm@9(configured inpackageManager)
pnpm install
pnpm run exampleRun on a specific platform:
pnpm --filter example ios
pnpm --filter example android
pnpm --filter example webimport { MaterialProvider, lightTheme } from '@rn-ui/core'
import { Button, Typography } from '@rn-ui/components'
export function Screen() {
return (
<MaterialProvider theme={lightTheme}>
<Typography variant="headlineSmall">Hello UI</Typography>
<Button variant="filled">Press me</Button>
</MaterialProvider>
)
}| Command | Description |
|---|---|
pnpm run build |
Builds all packages with Turborepo. |
pnpm run dev |
Runs package dev tasks via Turborepo (persistent, uncached). |
pnpm run typecheck |
Type-checks all packages with tsc --noEmit. |
pnpm run lint |
Lints example and packages. |
pnpm run test |
Runs package test tasks if defined. |
pnpm run format |
Formats the repository with Prettier. |
pnpm run clean |
Cleans build outputs via Turborepo. |
pnpm run example |
Starts the Expo example app. |
Package-level build commands:
pnpm --filter @rn-ui/core build
pnpm --filter @rn-ui/components build- Build context from the existing examples in
example/app. - Implement or update source in
packages/core/srcorpackages/components/src. - Build packages with
pnpm run build. - Validate behavior in the example app.
- Run
pnpm run lintandpnpm run formatbefore opening a PR.
This project is licensed under the MIT License.
Contribution guide: CONTRIBUTING.md