default-stack.s
Owner: Florian Rival
Why
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.
I need a navigation solution to start my app
Library/tool | What | Why |
| Navigation library for React Native | Recommended solution on React Native documentation, very customizable and with performant good enough for +90% of apps |
| 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. |
I need to display icons
Library/tool | What | Why |
| Customizable Icons for React Native | Most comprehensive library of icons |
I want to store the state of the app
Library/tool | What | Why |
| State container | Widely used in the React community, lots of dev tooling |
| Persistence of the data of the app | Simple to integrate with Redux and flexible |
| Handling of asynchronous processes in the app | Simple to integrate with Redux, testable, make complex business flow easy to read |
I want to handle forms
Library/tool | What | Why |
| Forms handling library | |
| Date handling library | Widely used libraries. |
I want to handle animations
Library/tool | What | Why |
Lottie ( | Animation library | Good looking, performant animations. Easy to integrate in React Native. |
I need to add testing to my app
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 | Allow to test redux-saga |
Detox | End to end testing | Alternatives (Calabash) are not reliable enough and slow |
I want static type checking
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 |
I want to ensure the quality of my codebase
Library/tool | What | Why |
Prettier | Automatic formattting of source code | Avoid all discussions/loss of time on styling Integration/plugin for editors |
eslint with | Linter |
I want to be able to push on-the-fly updates to my app
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 |
I need to have crash/bugs reporting
Library/tool | What | Why |
Sentry | Native crashes and JS exceptions reports | Easy integration and good React Native support with |
I need to add analytics/tracking to my app
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) |
I need to have automated deployment
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 |
I need a continuous integration service for launching tests
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 updated