React NativeFeature Boilerplate is a starting point for React Native application. This project is configured with redux, redux saga and redux persist. Uses latest version of react-navigation (v5)
This Architecture is optimised for large scale projects. If you are beginner who just started using react native, I would suggest starting with a type based architecture and slowly switching to this architecture.
React-Native-BoilerPlate for beginners.
- React Hooks
 - React Navigation with Authentication flow baked in.
 - React Native Gesture Handler
 - React Native Paper
 - React Native Vector Icons
 - Redux with hooks support
 - Redux Saga
 - Redux Persist
 - Reselect
 - Jest
 - Eslint (Airbnb config)
 
- Node v10 (it is recommended to install it via NVM)
 - Yarn
 - A development machine set up for React Native by following these instructions
 
/app- Contains our React Native App codebase/api- Api module class. Each file will be feature based like ProductAPI, LoginAPI etc/components- universal shared components used by others./config- Universal styles,images,metrics etc../features- Config fileslogin- Each folder will be a feature like this.reducers- Reducer associated with this feature [Mostly one, can be multiple]sagas- Sagas related with this particular feature [can have single or muliple sagas associated]selectors- selectors associated with featurecomponents- Components associated with this feature.containers- Containers associated with this feature [Container - Component Structure]
/lib- lib helper files/navigation- All naviagtion related stuff including helpers functions and navigation stackNavigationService.js- Service class for navigation - can be used without using propsNavigationStack.js- Stack to define naviagtion. you can split things further if needed
/store- Includes everything you need to set up store.reducers- Combines all feature based reducerssagas- Combines all feature based sagasindex.js- Set ups store and export things
- Clone this repo, 
git clone https://github.com/victorkvarghese/react-native-boilerplate.git <your project name> - Go to project's root directory, 
cd <your project name> - Remove 
.gitfolder,rm -rf .git - Use React Native Rename to update project name 
$ npx react-native-rename <newName> - Run 
yarnornpm installto install dependencies 
- Start the packager with 
npm start - Connect a mobile device to your development machine
 - Run the test application:
 
- On Android: 
- Run 
react-native run-android 
 - Run 
 - On iOS: 
- Open 
ios/YourReactProject.xcworkspacein Xcode - Hit 
Runafter selecting the desired device 
 - Open 
 
- Enjoy!!!
 
PRs are welcome