Overview
Welcome to the React Native Mono Template documentation!
Introduction
After working with React Native for many years, I've initiated dozens of projects with various architectures, standards, and technologies. This process, while rich in experience, has also been quite exhausting: each time starting a new project requires careful consideration of CLI choices, state management libraries, build tools, followed by manual configuration, testing, and bug fixing. I believe many colleagues have experienced this same "awkward" feeling.
Previously, I developed a template based on pure CLI and Redux Thunk, helping to quickly initialize an application skeleton. However, I realized the old template was no longer suitable: it simply "created an application quickly" but not necessarily "created a fast application" in terms of performance. For the vast majority of React Native projects and development teams, optimizing smooth experiences and minimizing latency—that is, building a truly fast application—remains a significant challenge.
Therefore, I decided to rebuild a React Native Mono Template from scratch, focusing on two main objectives:
-
Fast in terms of effort: providing ready-made Expo configurations, folder structure, code samples, useful tips and tricks, scripts, helpful automated processes, and many interesting components rarely seen elsewhere, allowing you to launch your project in just minutes.
-
Fast in terms of performance: integrating best practices, plugins, and optimization methods that I've distilled from blogs, videos, and real-world projects, helping your application run smoothly from the first launch.
With accumulated experience and knowledge, this Mono Template will serve as a solid framework allowing you to focus on building features rather than struggling with configuration. Let's explore the highlights in the following sections!
Key Features
- 🚀 Performance optimization with numerous compiled techniques, optimize with React Compiler
- ✅ Latest Expo SDK: Leverage the best of the Expo ecosystem while maintaining full control over your app
- 🌐 Easy multilingual integration in under 30 seconds with Lingui, automatic translation of installed languages, no need to remember keys for strings as in some traditional methods
- 🧩 Interesting components like multi-format text, collapsible/expandable text, URL preview, simple dividers, etc.
- 🎉 TypeScript for enhanced code quality and bug prevention through static type checking
- 💅 Customizable UI built with Shopify/restyle for maximum reusability and readable code
- ⚙️ Multi-environment build support (Production, Staging, Development) using Expo configuration, usable for native environments as well
- 🦊 Husky for Git Hooks: Automate your git hooks and enforce code standards
- 💡 Clean project structure with Absolute Imports for easier code navigation and management
- 💫 Auth flow implementation using Zustand for state management and react-native-mmkv for secure data storage
- 🔥 React Query and axios for efficient data fetching and state management
- 🧵 Robust form handling with react-hook-form for validation, plus keyboard handling
- 🧪 Unit testing setup with Jest and React Testing Library.
- 🔍 E2E testing capabilities with Maestro for comprehensive app testing.
Maintenance and Development
I am committed to continuously improving this template to build React Native applications even faster. To achieve this goal, I regularly add new features and fix any discovered bugs.
If you want to stay updated with the latest developments in our starter kit, you can follow the repository or click the "⭐️" button. This will allow you to receive notifications whenever there's a new update.
I value feedback and welcome new contributors to join me in improving it. If you're interested in participating in the project, please don't hesitate to open an issue or submit a pull request. I'm always looking for ways to make it more effective and useful for the React Native community. So, feel free to reach out and share your thoughts with me.
❓ Frequently Asked Questions
If you have any questions about the starter kit and want answers, please check the Discussions page.