Skip to main content

Overview

This starter is based on VOID mobile best practices for building react native apps and used on a daily based by our team. The starter is battle tested with multiple projects we worked on over the past four years.

Although the starter is very opinionated, we believe that we did our best to select the best solutions for the majority of the challenges we ran into while developing mobile apps for our clients.

๐Ÿš€ Motivationโ€‹

The idea behind the starter is that we wanted to create a starter that will help us create react native apps faster and with less effort. we want to make sure all our internal and external projects will have the same code quality and the same architecture which help us maintain and scale our apps easily as well as sharing code between projects and teams.

Using this starter help our team to switch projects easily and focus on the business logic and not on the boilerplate code.

โœ๏ธ Philosophyโ€‹

We built this starter with the following principles in mind:

  • ๐Ÿš€ Production-ready
  • ๐Ÿฅท Developer experience + Productivity
  • ๐Ÿงฉ Minimal code and dependencies
  • ๐Ÿ’ช well maintained third-party libraries

โญ key Featuresโ€‹

  • โœ… Last Expo SDK + Custom Dev client
  • ๐ŸŽ‰ Type checking TypeScript
  • ๐Ÿ’… Minimal UI kit using Kitten with theming.
  • โš™๏ธ Support multiple environnement builds [Production, Staging, Development] using Expo configuration.
  • ๐ŸฆŠ Husky for Git Hooks
  • ๐Ÿ’ก Clean project structure with Absolute Imports
  • ๐Ÿšซ Lint-staged for running linters
  • ๐Ÿ—‚ VSCode recommended extensions configuration, settings and snippets for a better developer experience
  • โ˜‚๏ธ React Navigation pre-installed with examples
  • ๐Ÿ’ซ Auth flow with zustand and react-native-mmkv as a storage to save sensitive data.
  • ๐Ÿ›  A simple workflow to build, release and distribute your application using Github action
  • ๐Ÿ”ฅ A client to fetch Data from Drupal
  • ๐Ÿงต A good approach with example to handle forms based on react-hook-form and zod for validation
  • ๐ŸŽฏ Localization + validation using Eslint.

๐Ÿ˜‰ Why Expo?โ€‹

Expo is a great tool to build react native apps, it helps you to build your app faster and with less effort. One of the most famous questions we get from the community is why we use Expo and not React Native ClI?

In the first version of the starter we used React Native CLI as back then using Expo is not the best option as we are using some native libraries and we will need to eject the app anyway. Last year Expo team introduce using Custom dev client which allow you to use Expo without ejecting the app and use native libraries.

The starter is using Expo with a Custom dev client which means we will get access to the amazing Expo ecosystem and install native libraries without ejecting the app.

Last and not least, with older version of the starter we face a lot of issues while upgrading our apps to the last version but now with Expo we can upgrade our apps easily.

Probably the right question is Why not Expo?

๐Ÿค” Is this starter for you?โ€‹

The short answer is yes, if you are building a react native app and you want to start with a solid foundation ,good architecture and a good developer experience then this starter is for you.

If you don't think using a starter is a good idea you can just take a look and get some inspiration for your project to find some good practices and solutions for common challenges react native developers are facing while building apps.

๐Ÿง‘โ€๐Ÿ’ป Stay up to dateโ€‹

The starter is constantly improving and we are adding new features and fixing bugs as soon as we can. You can stay up to date by watching the repository or by hitting the start button.

๐Ÿ’Ž Libraries usedโ€‹

Contributorsโ€‹

This starter is maintained by VOID and we are happy to welcome new contributors to the project.