              throw new Error(
                'DocumentReference.onSnapshot failed: Third argument must be a valid function.'
              );
-@@ -195,13 +195,13 @@ export default class DocumentReference {
+           }
+-          // $FlowExpectedError: Not coping with the overloaded method signature
+           observer = {
++            // $FlowExpectedError: Not coping with the overloaded method signature
+             next: observerOrOnNextOrOnError,
+             error: onError,
+           };
            // Called with Options, Observer
          } else if (
            observerOrOnNextOrOnError &&

diff --git a/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow
index b8ef7c2..7ecb834 100644
--- a/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow
@@ -8,7 +8,7 @@ import CollectionReference from './CollectionReference';

   reject?: Function,
   resolve?: Function,
   transaction: Transaction,
diff --git a/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow
index af9d484..caf587e 100644
--- a/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow
@@ -1,4 +1,7 @@
+// @flow
+
 /**
  *  @url https://github.com/firebase/firebase-js-sdk/blob/master/packages/firestore/src/util/misc.ts#L26
  */
-export type AnyJs = null | undefined | boolean | number | string | object;
+//export type AnyJs = null | void | boolean | number | string | Object;
+export type AnyJs = any;
diff --git a/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow
index 0c87d1d..fcf97f0 100644
--- a/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow
@@ -33,7 +33,7 @@ export const buildNativeMap = (data: Object): { [string]: NativeTypeMap } => {
   return nativeData;
 };
 
-export const buildNativeArray = (array: Object[]): NativeTypeMap[] => {
+export const buildNativeArray = (array: any[]): NativeTypeMap[] => {
   const nativeArray = [];
   if (array) {
     array.forEach(value => {
diff --git a/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow b/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow
index e2c7ed3..2c00aa6 100644
--- a/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow
@@ -1,9 +1,11 @@
+// @flow
+
 import type { FunctionsErrorCode } from './types.flow';
 
 export default class HttpsError extends Error {
   +details: ?any;
 
-  +message: string;
+  message: string;
 
   +code: FunctionsErrorCode;
 
@@ -11,6 +13,8 @@ export default class HttpsError extends Error {
     super(message);
     this.code = code;
     this.details = details;
-    this.message = message;
+    if (message) {
+      this.message = message;
+    }
   }
 }
diff --git a/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow b/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow
index 8660827..0ef93c8 100644
--- a/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow
@@ -1,3 +1,7 @@
+// @flow
+
+import HttpsError from './HttpsError';
+
 export type HttpsCallableResult = {
   data: Object,
 };
diff --git a/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow b/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow
index a97bf75..305b5bc 100644
--- a/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow
@@ -1,3 +1,5 @@
+// @flow
+
 import { getNativeModule } from '../../utils/native';
 
 import { isIOS } from '../../utils';
@@ -5,18 +7,20 @@ import { isIOS } from '../../utils';
 import type Messaging from './';
 
 export default class IOSMessaging {
+  _messaging: Messaging;
+
   constructor(messaging: Messaging) {
     this._messaging = messaging;
   }
 
-  getAPNSToken(): Promise<string | null> {
+  getAPNSToken(): null | Promise<string | null> {
     if (!isIOS) {
       return null;
     }
     return getNativeModule(this._messaging).getAPNSToken();
   }
 
-  registerForRemoteNotifications(): Promise<void> {
+  registerForRemoteNotifications(): void | Promise<void> {
     if (!isIOS) {
       return undefined;
     }
diff --git a/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow b/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow
index d076e23..3388775 100644
--- a/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow
+++ b/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow
@@ -89,7 +89,7 @@ export default class RemoteMessage {
    * @param data
    * @returns {RemoteMessage}
    */
-  setData(data: { [string]: string } = {}) {
+  setData(data: { [string]: string } = {}): RemoteMessage {
     if (!isObject(data)) {
       throw new Error(
         `RemoteMessage:setData expects an object but got type '${typeof data}'.`
diff --git a/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow b/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow
index 988be94..a030db8 100644
--- a/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow
