react-native init RN-firechat
cd RN-firechat
npm install

Package:
https://reactnavigation.org/docs/intro/
https://github.com/joinspontaneous/react-native-loading-spinner-overlay
https://github.com/invertase/react-native-firebase/
https://github.com/FaridSafi/react-native-gifted-chat

npm install --save react-navigation
npm install --save react-native-loading-spinner-overlay@latest
npm install --save react-native-firebase
npm install react-native-gifted-chat --save

react-native link
react-native link react-native-firebase

Usage:
import { StackNavigator } from "react-navigation";

and

return (
          <View>
            <Boiler navigation={this.props.navigation} />
          </View>
);

and

const app = StackNavigator({
  Boiler: {
    screen: HomeScreen,
    navigationOptions: {
      title: "Boiler"
    }
  }
});

Usage spinner:
import Spinner from "react-native-loading-spinner-overlay";

    this.state = {
      loading: false
    };

<Spinner visible={this.state.loading} />

when need to show spinner: this.setState({ loading: true });
when need to hide spinner: this.setState({ loading: false });

Usage Firebase:
place this file in the root of your project at android/app/google-services.json

in android/build.gradle:

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        // -------------------------------------------------
        // Add this below the existing maven property above
        // -------------------------------------------------
        maven {
            url 'https://maven.google.com'
        }
    }
}

buildscript {
  // ...
  dependencies {
    // ...
    classpath 'com.google.gms:google-services:3.1.1'
  }
}

in android/app/build.gradle :

dependencies {
  // This should be here already
  compile(project(':react-native-firebase')) {
    transitive = false
  }

  // Firebase dependencies
  compile "com.google.android.gms:play-services-base:11.4.2"
  compile "com.google.firebase:firebase-core:11.4.2"
  compile "com.google.firebase:firebase-auth:11.4.2"
  compile "com.google.firebase:firebase-database:11.4.2"
  compile "com.google.firebase:firebase-messaging:11.4.2"

add in bottom:
apply plugin: 'com.google.gms.google-services'

In android/app/src/main/java/com/[app name]/MainApplication.java:
// ...
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.auth.RNFirebaseAuthPackage;
import io.invertase.firebase.database.RNFirebaseDatabasePackage; 
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;

public class MainApplication extends Application implements ReactApplication {
    // ...

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
          new RNFirebasePackage(),
          new RNFirebaseAuthPackage(),
          new RNFirebaseDatabasePackage(),
          new RNFirebaseMessagingPackage()
      );
    }
  };
  // ...
}

android/app/src/main/AndroidManifest.xml:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.VIBRATE" />

    <activity
      ...
      android:launchMode="singleTop"
    >

  <application ...>
  <service
    android:name="io.invertase.firebase.messaging.MessagingService"
    android:enabled="true"
    android:exported="true">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
  </service>
  <service android:name="io.invertase.firebase.messaging.InstanceIdService" android:exported="false">
    <intent-filter>
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
  </service>

  <receiver android:name="io.invertase.firebase.messaging.RNFirebaseLocalMessagingPublisher"/>
  <receiver android:enabled="true" android:exported="true" android:name="io.invertase.firebase.messaging.RNFirebaseSystemBootEventReceiver">
    <intent-filter>
      <action android:name="android.intent.action.BOOT_COMPLETED"/>
      <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
      <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
      <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
  </receiver>


Generating Signed APK :
https://facebook.github.io/react-native/docs/signed-apk-android.html