default-stack.s
Having a set of common tools/libraries allow us to quickly move from one project to another, be more efficient and get a deep knowledege of each tool, including the advantages and drawbacks of these tools.
Library/tool | What | Why |
react-navigation | Navigation library for React Native | Recommended solution on React Native documentation, very customizable and with performant good enough for +90% of apps |
react-native-navigation | Navigation implemented using native navigation components | If you need to use the native navigation components so that your navigation is 100% equivalent to a native app. |
Library/tool | What | Why |
react-native-vector-icons | Customizable Icons for React Native | Most comprehensive library of icons |
Library/tool | What | Why |
redux | State container | Widely used in the React community, lots of dev tooling |
redux-persist | Persistence of the data of the app | Simple to integrate with Redux and flexible |
redux-saga | Handling of asynchronous processes in the app | Simple to integrate with Redux, testable, make complex business flow easy to read |
Library/tool | What | Why |
formik | Forms handling library | |
date-fns , moment | Date handling library | Widely used libraries. |
Library/tool | What | Why |
Lottie ( react-native-lottie ) | Animation library | Good looking, performant animations. Easy to integrate in React Native. |
Library/tool | What | Why |
jest | Testing framework | Already integrated with React Native by default, allow to do snapshot testing |
redux-saga-test-plan | Testing utilities for redux-saga | Allow to test redux-saga |
Detox | End to end testing | Alternatives (Calabash) are not reliable enough and slow |
Library/tool | What | Why |
Flowtype | Static typing | Improve developer experience, help to avoid errors when dealing with complex objects |
Typescript | Static typing | More stable and mature than Flowtype. Never used on a React Native project at BAM yet |
Library/tool | What | Why |
Prettier | Automatic formattting of source code | Avoid all discussions/loss of time on styling Integration/plugin for editors |
eslint with eslint-config-universe | Linter | |
Library/tool | What | Why |
AppCenter Code Push | Deploy mobile app updates without a full release | Speed up the deployment during development, allow for bug fixes and new features releases on the fly |
Library/tool | What | Why |
Sentry | Native crashes and JS exceptions reports | Easy integration and good React Native support with react-native-sentry |
Library/tool | What | Why |
Firebase Analytics | Analytics for mobile applications | The recommended solution by Google for applications, with a good quality native module for React Native (react-native-firebase) |
Library/tool | What | Why |
fastlane | Automation of deployment tasks | Most widely used deployment tool for iOS/Android + existing actions for HockeyApp/App Center/App Store/Play Store |
match | Automation of certificate/provisioning profile generation | Avoid dealing with certificates, one place storage for all certificates |
Library/tool | What | Why |
Bitrise | Automation of applications builds | Ensure reproducible builds, avoid spending time building apps on developer computers |
Travis CI | Automation of unit tests | |
Last modified 5yr ago