How Limestone compares.
Honest comparison with popular React Native UI libraries.
| Feature | Limestone | React Native Paper | NativeBase | Tamagui | Gluestack UI |
|---|---|---|---|---|---|
| Architecture | Hexagonal (ports + adapters) | Material Design 3 | Utility-first | Compiler-based | Design tokens |
| Vendor lock-in | None | Paper/MD3 | None | None | None |
| Headless hooks | Yes (pure functions) | No | No | No | No |
| Theme engine | Zod-validated tokens | MD3 theme | ThemeProvider | createTamagui | GluestackProvider |
| Component count | 36+ (growing) | 40+ | 30+ | 70+ | 30+ |
| Native feature ports | 16 typed interfaces | 0 | 0 | 0 | 0 |
| Expo adapters | 15 blessed | 0 | Partial | Partial | Partial |
| API client | Built-in (auth, offline, retry) | None | None | None | None |
| Form engine | Zod-backed useForm | None | None | None | None |
| Testing | createTestApp, in-memory everything | jest + RNTL | jest + RNTL | jest + RNTL | jest + RNTL |
| LLM-first | CLAUDE.md, llms.txt | None | None | None | None |
| Dev mode | One import swap | No equivalent | No equivalent | No equivalent | No equivalent |
| Hard dependencies | 1 (zod) | 3+ | 5+ | 2+ | 3+ |
The key difference
Limestone defines typed contracts for every native capability — not just theming and components, but biometrics, camera, secure storage, haptics, notifications, purchases, permissions, location, and more.
Each contract has a blessed Expo adapter and an in-memory test double. Your app logic depends only on interfaces. Swap any adapter and the core still compiles.
Other libraries give you styled components. Limestone gives you the full mobile toolkit — theme engine, API client, form system, testing infrastructure, and 16 native ports — with the freedom to change every infrastructure decision later.