You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jan 7, 2019. It is now read-only.
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
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.
I need to display icons
Library/tool
What
Why
react-native-vector-icons
Customizable Icons for React Native
Most comprehensive library of icons
I want to store the state of the app
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
I want to handle forms
Library/tool
What
Why
formik
Forms handling library
date-fns, moment
Date handling library
Widely used libraries.
I want to handle animations
Library/tool
What
Why
Lottie (react-native-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 redux-saga
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 eslint-config-universe
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 react-native-sentry
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