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

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

Travis CI

Automation of unit tests

Last updated