{"componentChunkName":"component---src-templates-documentation-tsx","path":"/migrating-to-v6","result":{"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Migrating to v6\",\n  \"description\": \"Migrate to React Native Firebase v6\",\n  \"next\": \"/faqs-and-tips\",\n  \"previous\": \"/releases\"\n};\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\nvar Anchor = makeShortcode(\"Anchor\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"introduction\"\n  }, \"Introduction\"), mdx(\"p\", null, \"This is a reference for upgrading from React Native Firebase v5.x.x to v6.x.x. Even though there is a lot to cover,\\neach module generally follows similar steps to migrate.\"), mdx(\"p\", null, \"We highly recommend your project is using React Native 0.60+ before upgrading to take advantage of new features to make\\nthe migration process much simpler.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"We highly recommend backing up your project before migrating!\")), mdx(\"p\", null, \"If you're looking to start fresh, check out the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/\"\n  }, \"Getting Started\"), \" section of the documentation.\"), mdx(\"h2\", {\n    \"id\": \"why-you-should-migrate\"\n  }, \"Why you should migrate\"), mdx(\"p\", null, \"React Native Firebase version 6 has been re-created from the ground up, with a heavy focus on testing, documentation & feature\\ncompatibility with the Firebase SDKs. We've also been working closely with the Firebase team to ensure all module APIs have\\nbeen approved before being released.\"), mdx(\"p\", null, \"We have also ensured the release is compatible with some of the popular tooling in the React Native community, such as\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/react-native-community/cli/blob/master/docs/autolinking.md\"\n  }, \"autolinking\"), \" & \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://facebook.github.io/react-native/blog/2018/05/07/using-typescript-with-react-native\"\n  }, \"TypeScript\"), \".\"), mdx(\"p\", null, \"Version 6 also brings support for previously unsupported modules such as \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://firebase.google.com/docs/ml\"\n  }, \"Firebase ML\"), \".\"), mdx(\"h2\", {\n    \"id\": \"npm-dependency-changes\"\n  }, \"NPM dependency changes\"), mdx(\"p\", null, \"Prior to version 6, all modules are installable from the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"react-native-firebase\"), \" NPM package. With version 6 we are\\nnow taking advantage of NPM organizations, allowing us to distribute each module as its own package. This has a number\\nof advantages such as smaller app bundle sizes (you only install what modules you need), and internally we treat each module\\nas its own package, allowing for easier testing and quality assurance. Every project must install the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/app\"), \"\\nmodule, replacing the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"react-native-firebase\"), \" module.\"), mdx(\"h2\", {\n    \"id\": \"removing-react-native-firebase\"\n  }, \"Removing \", mdx(\"inlineCode\", {\n    parentName: \"h2\"\n  }, \"react-native-firebase\")), mdx(\"p\", null, \"There are a number of steps to carry out to remove the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"react-native-firebase\"), \" module from your existing app. To help make this process\\neasier, we'll break out the process into 3 sections:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#removing-v5-from-javascript\"\n  }, \"Removing v5 from JavaScript\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#removing-v5-from-android\"\n  }, \"Removing v5 from Android\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#removing-v5-from-ios\"\n  }, \"Removing v5 from iOS\"))), mdx(\"hr\", null), mdx(\"h3\", {\n    \"id\": \"removing-v5-from-javascript\"\n  }, \"Removing v5 from JavaScript\"), mdx(\"p\", null, \"As mentioned above, we need to remove the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"react-native-firebase\"), \" NPM module from our project. To do this, open your projects\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"package.json\"), \" file and remove the dependency:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"{\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token unchanged\"\n  }, \"  \\\"dependencies\\\": {\\n    \\\"react\\\": \\\"16.8.3\\\",\\n    \\\"react-native\\\": \\\"0.59.9\\\",\\n\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   \\\"react-native-firebase\\\": \\\"^5.5.4\\\"\\n\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token unchanged\"\n  }, \"  }\\n\"), \"}\\n\")), mdx(\"p\", null, \"To remove the package from your local environment, delete the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"yarn.lock\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"package-lock.json\"), \" files and reinstall\\nthe project dependencies with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"yarn\"), \".\"), mdx(\"hr\", null), mdx(\"h3\", {\n    \"id\": \"removing-v5-from-android\"\n  }, \"Removing v5 from Android\"), mdx(\"p\", null, \"Removing version 5 from your native Android code is a more involved process. We'll go file by file to ensure all references\\nto the older version have been removed.\"), mdx(\"h4\", {\n    \"id\": \"removing-from-gradle-settings\"\n  }, \"Removing from Gradle Settings\"), mdx(\"p\", null, \"Open up your projects \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/android/settings.gradle\"), \" file. There will be 2 lines which need to be removed:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"rootProject.name = 'AwesomeApp'\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"- include ':react-native-firebase'\\n- project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android')\\n\"), \"\\ninclude ':app'\\n\")), mdx(\"h4\", {\n    \"id\": \"removing-from-android-manifest\"\n  }, \"Removing from Android Manifest\"), mdx(\"p\", null, \"Open your \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"AndroidManifest.xml\"), \" file. You will need to remove any references to the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"io.invertase.firebase.messaging\"), \" class\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"- <service android:name=\\\"io.invertase.firebase.messaging.RNFirebaseMessagingService\\\">\\n-   <intent-filter>\\n-     <action android:name=\\\"com.google.firebase.MESSAGING_EVENT\\\" />\\n-   </intent-filter>\\n- </service>\\n\"))), mdx(\"h4\", {\n    \"id\": \"removing-native-dependencies\"\n  }, \"Removing native dependencies\"), mdx(\"p\", null, \"We now need to remove the RNFirebase and Firebase dependencies from your project.\\nIn version 6, these are automatically installed for us.\"), mdx(\"p\", null, \"Open your projects \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/android/app/build.gradle\"), \" file. First remove the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"react-native-firebase\"), \" dependency:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"dependencies {\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   implementation project(path: ':react-native-firebase')\\n\"), \"}\\n\")), mdx(\"p\", null, \"Next, remove the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"firebase-core\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"play-services-base\"), \" dependencies. Note, other modules you are using may\\nrequired \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"play-services-base\"), \" to be installed.\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Specific versions listed may be different than your own project\")), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"dependencies {\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   implementation \\\"com.google.firebase:firebase-core:16.0.9\\\"\\n-   implementation \\\"com.google.android.gms:play-services-base:16.1.0\\\"\\n\"), \"}\\n\")), mdx(\"p\", null, \"Next we need to remove the module specific Firebase dependencies. The naming convention for these modules is:\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"implementation \\\"com.google.firebase:firebase-<< module >>:<<version>>\\\"\"), \".\"), mdx(\"p\", null, \"For example, to remove the native Firebase dependency for the Authentication module:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"dependencies {\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   implementation \\\"com.google.firebase:firebase-auth:17.0.0\\\"\\n\"), \"}\\n\")), mdx(\"h4\", {\n    \"id\": \"removing-the-react-native-firebase-packages\"\n  }, \"Removing the React Native Firebase packages\"), mdx(\"p\", null, \"We now need to remove the React Native Firebase packages from being added to our React Native application. Go ahead and open\\nthe \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/android/app/src/main/java/<< app name >>/MainApplication.java\"), \" file.\"), mdx(\"p\", null, \"First, we need to remove the core \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"RNFirebasePackage\"), \" from the imports and being added to the package list:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   import io.invertase.firebase.RNFirebasePackage;\\n\"))), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token unchanged\"\n  }, \"    @Override\\n    protected List<ReactPackage> getPackages() {\\n      return Arrays.<ReactPackage>asList(\\n        new MainReactPackage(),\\n\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-       new RNFirebasePackage(),\\n\"))), mdx(\"p\", null, \"Depending on what modules you installed using version 5, remove the packages for each module. For example, to remove the\\nAuthentication package:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   import io.invertase.firebase.auth.RNFirebaseAuthPackage;\\n\"))), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token unchanged\"\n  }, \"    @Override\\n    protected List<ReactPackage> getPackages() {\\n      return Arrays.<ReactPackage>asList(\\n        new MainReactPackage(),\\n\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-       new RNFirebaseAuthPackage(),\\n\"))), mdx(\"h4\", {\n    \"id\": \"cleaning-gradle\"\n  }, \"Cleaning Gradle\"), mdx(\"p\", null, \"Android caches module dependencies for quicker builds. As we've heavily modified our project dependencies it's recommended you\\nclean Gradle, allowing for a fresh installation. In your project, execute the following commands:\"), mdx(\"pre\", {\n    \"className\": \"language-bash\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"$ \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin class-name\"\n  }, \"cd\"), \" android/\\n$ ./gradlew clean\\n\")), mdx(\"hr\", null), mdx(\"h3\", {\n    \"id\": \"removing-v5-from-ios\"\n  }, \"Removing v5 from iOS\"), mdx(\"p\", null, \"The following steps assume you have used CocoaPods to manage your projects iOS dependencies.\"), mdx(\"h4\", {\n    \"id\": \"remove-the-rnfirebase-pod\"\n  }, \"Remove the RNFirebase Pod\"), mdx(\"p\", null, \"Remove the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"RNFirebase\"), \" pod from your \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/ios/Podfile\"), \":\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"target 'AwesomeApp' do\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   pod 'RNFirebase', :path => '../node_modules/react-native-firebase/ios'\\n\"))), mdx(\"h4\", {\n    \"id\": \"remove-the-firebase-core-pod\"\n  }, \"Remove the Firebase Core Pod\"), mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Firebase/Core\"), \" need to be removed from the project. In version 6, this is automatically installed. Open the\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/ios/Podfile\"), \" and remove the Pod:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"target 'AwesomeApp' do\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   pod 'Firebase/Core', '~> 6.3.0'\\n\"))), mdx(\"h4\", {\n    \"id\": \"remove-module-specific-pods\"\n  }, \"Remove module specific Pods\"), mdx(\"p\", null, \"Depending on what modules you were using with version 5, we now need to remove the Firebase Pods. For example, if you\\nare using the Authentication module, remove the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Firebase/Auth\"), \" Pod:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, \"target 'AwesomeApp' do\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"-   pod 'Firebase/Auth', '~> 6.3.0'\\n\"))), mdx(\"h3\", {\n    \"id\": \"re-installing-pods\"\n  }, \"Re-installing Pods\"), mdx(\"p\", null, \"Once the Pod dependencies have been removed, the following commands will remove the Pods from your local project:\"), mdx(\"pre\", {\n    \"className\": \"language-bash\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"$ \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin class-name\"\n  }, \"cd\"), \" ios\\n$ \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"rm\"), \" -rf Podfile.lock\\n$ pod \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"install\"), \"\\n\")), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"installing-react-native-firebaseapp\"\n  }, \"Installing \", mdx(\"inlineCode\", {\n    parentName: \"h2\"\n  }, \"@react-native-firebase/app\")), mdx(\"p\", null, \"As mentioned earlier, version 6 uses the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase\"), \" NPM organization for each module. Every app using\\nversion 6 must install the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"app\"), \" module before installing each specific module.\"), mdx(\"p\", null, \"To get started, install the new dependency with \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://yarnpkg.com/lang/en/\"\n  }, \"Yarn\"), \":\"), mdx(\"pre\", {\n    \"className\": \"language-bash\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"yarn\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"add\"), \" @react-native-firebase/app\\n\")), mdx(\"p\", null, \"If you are using React Native 0.60+, the module will be automatically linked via \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/react-native-community/cli/blob/master/docs/autolinking.md\"\n  }, \"autolinking\"), \".\"), mdx(\"p\", null, \"Users on an older version of React Native must manually link the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"app\"), \" module. See the following steps for \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/install-android\"\n  }, \"Android\"), \" and\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/install-ios\"\n  }, \"iOS\"), \" for more information on manual linking.\"), mdx(\"h2\", {\n    \"id\": \"specific-module-installation\"\n  }, \"Specific module installation\"), mdx(\"p\", null, \"Depending on which Firebase service your app uses, you now need to install the NPM packages for each service. For example,\\napps using the Authentication module need to install the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"auth\"), \" package:\"), mdx(\"pre\", {\n    \"className\": \"language-bash\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"yarn\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"add\"), \" @react-native-firebase/auth\\n\")), mdx(\"p\", null, \"Install the modules required for your application:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Module\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"NPM Package\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/admob\",\n    mdxType: \"Anchor\"\n  }, \"AdMob\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/admob\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/analytics\",\n    mdxType: \"Anchor\"\n  }, \"Analytics\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/analytics\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/app\",\n    mdxType: \"Anchor\"\n  }, \"App\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/app\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/invites\",\n    mdxType: \"Anchor\"\n  }, \"App Invites\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/invites\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/auth\",\n    mdxType: \"Anchor\"\n  }, \"Authentication\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/auth\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/firestore\",\n    mdxType: \"Anchor\"\n  }, \"Cloud Firestore\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/firestore\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/functions\",\n    mdxType: \"Anchor\"\n  }, \"Cloud Functions\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/functions\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/messaging\",\n    mdxType: \"Anchor\"\n  }, \"Cloud Messaging\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/messaging\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/storage\",\n    mdxType: \"Anchor\"\n  }, \"Cloud Storage\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/storage\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/crashlytics\",\n    mdxType: \"Anchor\"\n  }, \"Crashlytics\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/crashlytics\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/in-app-messaging\",\n    mdxType: \"Anchor\"\n  }, \"In-app Messaging\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/in-app-messaging\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/iid\",\n    mdxType: \"Anchor\"\n  }, \"Instance ID\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/iid\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/ml\",\n    mdxType: \"Anchor\"\n  }, \"ML\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/ml\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/perf\",\n    mdxType: \"Anchor\"\n  }, \"Performance Monitoring\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/perf\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/database\",\n    mdxType: \"Anchor\"\n  }, \"Realtime Database\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/database\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(Anchor, {\n    href: \"v6/remote-config\",\n    mdxType: \"Anchor\"\n  }, \"Remote Config\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"@react-native-firebase/remote-config\")))), mdx(\"p\", null, \"Users on React Native version 0.60+, the modules will be automatically linked. For users on a lower version,\\nsee the module specific pages for manual installation guides.\"), mdx(\"h2\", {\n    \"id\": \"updating-project-code\"\n  }, \"Updating project code\"), mdx(\"p\", null, \"In versions prior to 6, accessing the React Native Firebase package was carried out by importing the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"react-native-firebase\"), \"\\nmodule, for example:\"), mdx(\"pre\", {\n    \"className\": \"language-js\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"import\"), \" firebase \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"from\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'react-native-firebase'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"// App code...\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" user \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" firebase\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token method function property-access\"\n  }, \"auth\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property-access\"\n  }, \"currentUser\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\")), mdx(\"p\", null, \"Although it is possible to access specific module functionality from the package imports, if you're coming from v5 the\\nfollowing usage may seem daunting for a large project:\"), mdx(\"pre\", {\n    \"className\": \"language-js\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"import\"), \" auth \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"from\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'@react-native-firebase/auth'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"// App code...\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" user \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"auth\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property-access\"\n  }, \"currentUser\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\")), mdx(\"p\", null, \"Fortunately, it is possible to continue to migrate to the previous versions import method:\"), mdx(\"p\", null, \"Find and replace all usages of the import with the new import:\"), mdx(\"pre\", {\n    \"className\": \"language-diff\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-diff\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token deleted-sign deleted\"\n  }, \"- import firebase from 'react-native-firebase';\\n\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token inserted-sign inserted\"\n  }, \"+ import firebase from '@react-native-firebase/app';\\n\"))), mdx(\"p\", null, \"We now need to import additional packages inside of an entry point file of our project, for example\\nto import the Authentication module, add the following to your projects \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/App.js\"), \" file (or entry file):\"), mdx(\"pre\", {\n    \"className\": \"language-js\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"import\"), \" firebase \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"from\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'@react-native-firebase/app'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword module\"\n  }, \"import\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'@react-native-firebase/auth'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"// App code\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" user \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" firebase\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token method function property-access\"\n  }, \"auth\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property-access\"\n  }, \"currentUser\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\")), mdx(\"p\", null, \"This only needs to be done once. The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"auth\"), \" module will now be available on all \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"firebase\"), \" instances.\"), mdx(\"hr\", null), mdx(\"h2\", {\n    \"id\": \"module-breaking-changes\"\n  }, \"Module Breaking Changes\"), mdx(\"p\", null, \"Below outlines a list of breaking changes for each module which may impact your application. Please ensure all\\napp functionality is tested once migrated to version 6 is complete.\"), mdx(\"h3\", {\n    \"id\": \"app\"\n  }, \"App\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/app\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"onReady()\"), \" removed: Users initializing a secondary app via \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"app.initializeApp\"), \" will need to now remove the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"onReady\"), \"\\nlistener. Instead, \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"initializeApp\"), \" resolves a promise once the secondary app has finished initializing.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Initializing the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"[DEFAULT]\"), \" app manually will now throw an error. Previously this only displayed a warning.\")), mdx(\"h3\", {\n    \"id\": \"admob\"\n  }, \"AdMob\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/admob\")), mdx(\"p\", null, \"The AdMob module has undergone a full re-write to support a new, cleaner API and regulation changes (such as GDPR).\\nPlease see the \", mdx(Anchor, {\n    href: \"/admob\",\n    mdxType: \"Anchor\"\n  }, \"AdMob\"), \" documentation and update your code usage.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"RewardedVideo\"), \" has now been deprecated in favor of a new native API. Please see \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"RewardedAd\"), \" for more information.\")), mdx(\"h3\", {\n    \"id\": \"invites\"\n  }, \"Invites\"), mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"invites\"), \" module has now been deprecated. Please see the official \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://firebase.google.com/docs/invites/deprecation\"\n  }, \"Firebase documentation\"), \"\\nfor more information.\"), mdx(\"p\", null, \"The recommended approach for handling this deprecation is to use the Dynamic Links module.\"), mdx(\"h3\", {\n    \"id\": \"analytics\"\n  }, \"Analytics\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/analytics\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All methods now return a \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Promise\"), \". Previously these were 'fire and forget'.\")), mdx(\"h3\", {\n    \"id\": \"crashlytics\"\n  }, \"Crashlytics\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/crashlytics\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setBoolValue\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setFloatValue\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setIntValue\"), \" & \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setStringValue\"), \" have been removed and replaced with two new methods (the Crashlytics SDK converted all these into strings internally anyway):\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setAttribute(key: string, value: string): Promise<null>\"), \" - set a singular key value to show alongside any subsequent crash reports\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setAttributes(values: { [key: string]: string }): Promise<null>\"), \" - set multiple key values to show alongside any subsequent crash reports\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All methods except \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"crash\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"log\"), \" & \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"recordError\"), \" now return a Promise that resolve when complete.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"recordError\"), \" now accepts a JavaScript \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Error\"), \" instead of a code and message.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setUserIdentifier()\"), \" has been renamed to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setUserId()\"), \" to match the Analytics Web SDK implementation.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"enableCrashlyticsCollection()\"), \" has been renamed to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setCrashlyticsCollectionEnabled()\"), \".\")), mdx(\"h3\", {\n    \"id\": \"firestore\"\n  }, \"Firestore\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/firestore\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Blob\"), \" class can no longer be manually constructed.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All user code is now validated in \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"JavaScript\"), \". Passing incorrect data or querying chaining will now throw a JavaScript error. Ensure all queries are thoroughly tested.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Query\"), \" class has undergone a rewrite. Previously some invalid queries could be passed to the native SDKs causing a crash, these are now validated in JavaScript.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The where equal operator \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"=\"), \" has been deprecated. Please use \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"==\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The setting \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setTimestampsInSnapshotsEnabled\"), \" has been deprecated.\")), mdx(\"h3\", {\n    \"id\": \"dynamic-links\"\n  }, \"Dynamic Links\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/dynamic-links\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Module usage has been renamed from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"links()\"), \" to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"dynamicLinks()\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"onLink\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"getInitialLink\"), \" methods now return a \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"DynamicLink\"), \" object, rather than the string URL.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"builder\"), \" syntax has been deprecated in favor of simple objects. See \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"buildLink()\"), \" documentation for an example.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Added extra validation. Building a dynamic link with platform specific options will now error if not all required parameters are set.\")), mdx(\"h3\", {\n    \"id\": \"functions\"\n  }, \"Functions\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/functions\")), mdx(\"p\", null, \"No breaking changes.\"), mdx(\"h3\", {\n    \"id\": \"in-app-messaging\"\n  }, \"In-App Messaging\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/in-app-messaging\")), mdx(\"p\", null, \"This is a new module. See documentation for usage.\"), mdx(\"h3\", {\n    \"id\": \"instance-id\"\n  }, \"Instance ID\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/iid\")), mdx(\"p\", null, \"No breaking changes.\"), mdx(\"h3\", {\n    \"id\": \"notifications\"\n  }, \"Notifications\"), mdx(\"p\", null, \"Device-local notification APIs are not actually Firebase APIs at the same time they are very difficult to maintain.\"), mdx(\"p\", null, \"For these reasons the notifications package has been removed from react-native-firebase for versions 6 and higher.\"), mdx(\"p\", null, \"How to migrate: If you use device-local notification APIs and user-visible notifications in your app you will want to integrate a separate library that gives you access to device-local notification APIs. Many people have reported success with each of \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://notifee.app\"\n  }, \"https://notifee.app\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://wix.github.io/react-native-notifications\"\n  }, \"https://wix.github.io/react-native-notifications\"), \" and \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/zo0r/react-native-push-notification\"\n  }, \"https://github.com/zo0r/react-native-push-notification\")), mdx(\"h3\", {\n    \"id\": \"cloud-messaging\"\n  }, \"Cloud Messaging\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/messaging\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[android]\", \" The manually added \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"RNFirebaseMessagingService\"), \" service in your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"AndroidManifest.xml\"), \" file is no longer required - you can safely remove it.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[iOS]\", \" The manually added \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"RNFirebaseMessaging\"), \" usages in your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"AppDelegate\"), \" files are no longer required - you can safely remove them.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"builder\"), \" syntax has been deprecated in favor of simple objects. See \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"newRemoteMessage()\"), \" documentation for an example.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"subscribeToTopic('some-topic')\"), \" method must not include \\\"/\\\" in topic.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[iOS]\", \" The minimum supported iOS version is now 10\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"iOS 9 or lower only accounts for 0.% of all iPhone devices.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"To see a detailed device versions breakdown see \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://david-smith.org/iosversionstats/\"\n  }, \"this link\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Community contributions that add iOS 9 support are welcome.\")), mdx(\"h3\", {\n    \"id\": \"performance-monitoring\"\n  }, \"Performance Monitoring\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/perf\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Trace\"), \" & \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"HttpMetric\"), \" methods (except for \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"start\"), \" & \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"stop\"), \") are now synchronous and no longer return a Promise,\\nextra attributes/metrics now only get sent to native when you call stop.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.perf.Trace.incrementMetric\"), \" will now create a metric if it could not be found.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.perf.Trace.getMetric\"), \" will now return 0 if a metric could not be found.\")), mdx(\"h3\", {\n    \"id\": \"realtime-database\"\n  }, \"Realtime Database\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/database\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Reference\"), \" class has undergone a rewrite. In previous versions, chaining invalid methods together on a query was possible. In version 6, the functionality now replicates the Firebase Web SDK.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Please thoroughly test your database queries.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Internal JavaScript validation has been added and will throw a JavaScript error if methods are called with incorrect parameters.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All query based modifiers are now validated as per the Web SDK spec. In v5 it is possible to chain queries which are not allowed together causing native errors (e.g. \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \".orderByKey().orderByPriority()\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \".startAt('foo', 'bar').orderByKey()\"), \" etc). Doing so in v6 will now throw an error to keep it in-line with the Web SDK.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Reference.push\"), \" now correctly mimics the Web SDK, returning a thenable reference.\")), mdx(\"h3\", {\n    \"id\": \"remote-config\"\n  }, \"Remote Config\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/remote-config\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Module namespace has been renamed to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \".remoteConfig()\"), \" from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \".config()\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All Remote Config values can now be accessed synchronously in JS, see \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"getValue(key: string): ConfigValue\"), \" & \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"getAll(): ConfigValues\"), \" below.\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"These replace all the original async methods: \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"getValue\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"getValues\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"getKeysByPrefix\"), \".\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setDefaultsFromResource\"), \" now returns a Promise that resolves when completed, this will reject with code \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"config/resource_not_found\"), \" if the file could not be found.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setDefaultsFromResource\"), \" now expects a resource file name for Android to match iOS, formerly this required a resource id (something you would not have in RN as this was generated at build time by Android).\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"An example for both platforms can be found in the tests.\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"enableDeveloperMode\"), \" has been removed, you can now use \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setConfigSettings({ isDeveloperModeEnabled: boolean })\"), \" instead.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"setDefaults\"), \" now returns a Promise that resolves when completed.\")), mdx(\"h3\", {\n    \"id\": \"cloud-storage\"\n  }, \"Cloud Storage\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/storage\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Removed formerly deprecated \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"UploadTaskSnapshot.downloadUrl\"), \" property, use \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"StorageReference.getDownloadURL(): Promise<string>\"), \" instead.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"StorageReference.downloadFile()\"), \" is now deprecated and will be removed in a later release, please rename usages of this to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"writeToFile()\"), \" - renamed to match Native SDKs.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.storage.Native\"), \" has moved to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.utils.Native\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.utils.Native\"), \" is now deprecated and will be removed in a later release, please rename usages of this to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.utils.FilePath\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"firebase.utils.Native.*\"), \" some properties have been renamed and deprecated and will be removed in a later release, follow the in-app console warnings on how to migrate.\")), mdx(\"h3\", {\n    \"id\": \"ml\"\n  }, \"ML\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"@react-native-firebase/ml\")), mdx(\"p\", null, \"This is a new module. See documentation for usage.\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Migrating to v6","description":"Migrate to React Native Firebase v6","icon":null,"noindex":null},"excerpt":"Introduction This is a reference for upgrading from React Native Firebase v5.x.x to v6.x.x. Even though there is a lot to cover,\neach module…","tableOfContents":{"items":[{"url":"#introduction","title":"Introduction","items":[{"url":"#why-you-should-migrate","title":"Why you should migrate"},{"url":"#npm-dependency-changes","title":"NPM dependency changes"},{"url":"#removing-react-native-firebase","title":"Removing react-native-firebase","items":[{"url":"#removing-v5-from-javascript","title":"Removing v5 from JavaScript"},{"url":"#removing-v5-from-android","title":"Removing v5 from Android","items":[{"url":"#removing-from-gradle-settings","title":"Removing from Gradle Settings"},{"url":"#removing-from-android-manifest","title":"Removing from Android Manifest"},{"url":"#removing-native-dependencies","title":"Removing native dependencies"},{"url":"#removing-the-react-native-firebase-packages","title":"Removing the React Native Firebase packages"},{"url":"#cleaning-gradle","title":"Cleaning Gradle"}]},{"url":"#removing-v5-from-ios","title":"Removing v5 from iOS","items":[{"url":"#remove-the-rnfirebase-pod","title":"Remove the RNFirebase Pod"},{"url":"#remove-the-firebase-core-pod","title":"Remove the Firebase Core Pod"},{"url":"#remove-module-specific-pods","title":"Remove module specific Pods"}]},{"url":"#re-installing-pods","title":"Re-installing Pods"}]},{"url":"#installing-react-native-firebaseapp","title":"Installing @react-native-firebase/app"},{"url":"#specific-module-installation","title":"Specific module installation"},{"url":"#updating-project-code","title":"Updating project code"},{"url":"#module-breaking-changes","title":"Module Breaking Changes","items":[{"url":"#app","title":"App"},{"url":"#admob","title":"AdMob"},{"url":"#invites","title":"Invites"},{"url":"#analytics","title":"Analytics"},{"url":"#crashlytics","title":"Crashlytics"},{"url":"#firestore","title":"Firestore"},{"url":"#dynamic-links","title":"Dynamic Links"},{"url":"#functions","title":"Functions"},{"url":"#in-app-messaging","title":"In-App Messaging"},{"url":"#instance-id","title":"Instance ID"},{"url":"#notifications","title":"Notifications"},{"url":"#cloud-messaging","title":"Cloud Messaging"},{"url":"#performance-monitoring","title":"Performance Monitoring"},{"url":"#realtime-database","title":"Realtime Database"},{"url":"#remote-config","title":"Remote Config"},{"url":"#cloud-storage","title":"Cloud Storage"},{"url":"#ml","title":"ML"}]}]}]},"headings":[{"depth":1,"value":"Introduction"},{"depth":2,"value":"Why you should migrate"},{"depth":2,"value":"NPM dependency changes"},{"depth":2,"value":"Removing react-native-firebase"},{"depth":3,"value":"Removing v5 from JavaScript"},{"depth":3,"value":"Removing v5 from Android"},{"depth":4,"value":"Removing from Gradle Settings"},{"depth":4,"value":"Removing from Android Manifest"},{"depth":4,"value":"Removing native dependencies"},{"depth":4,"value":"Removing the React Native Firebase packages"},{"depth":4,"value":"Cleaning Gradle"},{"depth":3,"value":"Removing v5 from iOS"},{"depth":4,"value":"Remove the RNFirebase Pod"},{"depth":4,"value":"Remove the Firebase Core Pod"},{"depth":4,"value":"Remove module specific Pods"},{"depth":3,"value":"Re-installing Pods"},{"depth":2,"value":"Installing @react-native-firebase/app"},{"depth":2,"value":"Specific module installation"},{"depth":2,"value":"Updating project code"},{"depth":2,"value":"Module Breaking Changes"},{"depth":3,"value":"App"},{"depth":3,"value":"AdMob"},{"depth":3,"value":"Invites"},{"depth":3,"value":"Analytics"},{"depth":3,"value":"Crashlytics"},{"depth":3,"value":"Firestore"},{"depth":3,"value":"Dynamic Links"},{"depth":3,"value":"Functions"},{"depth":3,"value":"In-App Messaging"},{"depth":3,"value":"Instance ID"},{"depth":3,"value":"Notifications"},{"depth":3,"value":"Cloud Messaging"},{"depth":3,"value":"Performance Monitoring"},{"depth":3,"value":"Realtime Database"},{"depth":3,"value":"Remote Config"},{"depth":3,"value":"Cloud Storage"},{"depth":3,"value":"ML"}],"parent":{"__typename":"File","relativePath":"migrating-to-v6.md"}},"next":{"frontmatter":{"title":"FAQs and Tips"},"fields":{"slug":"/faqs-and-tips"}},"previous":{"frontmatter":{"title":"Release notes"},"fields":{"slug":"/releases"}},"sidebar":{"raw":"[[\"Getting Started\",\"/\"],[\"Migration Guide to v22\",\"/migrating-to-v22\"],[\"Migration Guide to v23\",\"/migrating-to-v23\"],[\"TypeScript\",\"/typescript\"],[\"Platforms\",\"/platforms\"],[\"Release Notes\",\"/releases\"],[\"FAQs and Tips\",\"/faqs-and-tips\"],[\"Feature Requests\",\"https://invertase.canny.io/react-native-firebase\"],[\"Contributing\",\"https://github.com/invertase/react-native-firebase/blob/main/CONTRIBUTING.md\"],[\"AI Logic\",[[\"Usage\",\"/ai/usage\"]],\"//firebase.google.com/static/images/icons/firebase-ai-logic.svg\"],[\"Analytics\",[[\"Usage\",\"/analytics/usage\"],[\"Screen Tracking\",\"/analytics/screen-tracking\"],[\"Building an Analytics Funnel\",\"https://blog.theodo.com/2018/01/building-google-analytics-funnel-firebase-react-native\"]],\"//firebase.google.com/static/images/products/icons/run_analytics.svg\"],[\"App Check\",[[\"Usage\",\"/app-check/usage\"]],\"//firebase.google.com/static/images/products/icons/build_app_check.svg\"],[\"App Distribution\",[[\"Usage\",\"/app-distribution/usage\"]],\"//firebase.google.com/static/images/products/icons/run_app_distribution.svg\"],[\"Authentication\",[[\"Usage\",\"/auth/usage\"],[\"Social Auth\",\"/auth/social-auth\"],[\"Phone Auth\",\"/auth/phone-auth\"],[\"OpenID Connect Auth\",\"/auth/oidc-auth\"],[\"Multi-factor Auth\",\"/auth/multi-factor-auth\"]],\"//firebase.google.com/static/images/products/icons/build_auth.svg\"],[\"Cloud Firestore\",[[\"Usage\",\"/firestore/usage\"],[\"Usage with Emulator\",\"/firestore/emulator\"],[\"Usage with FlatLists\",\"/firestore/usage-with-flatlists\"],[\"Implementing Pagination\",\"/firestore/pagination\"],[\"Building a \\\"TODO\\\" app\",\"https://invertase.io/blog/getting-started-with-cloud-firestore-on-react-native\"]],\"//firebase.google.com/static/images/products/icons/build_firestore.svg\"],[\"Cloud Functions\",[[\"Usage\",\"/functions/usage\"],[\"Writing & Deploying Functions\",\"/functions/writing-deploying-functions\"]],\"//firebase.google.com/static/images/products/icons/build_functions.svg\"],[\"Cloud Messaging\",[[\"Usage\",\"/messaging/usage\"],[\"iOS Project Setup\",\"/messaging/usage/ios-setup\"],[\"iOS Permissions\",\"/messaging/ios-permissions\"],[\"Notifications\",\"/messaging/notifications\"],[\"iOS Notification Images\",\"/messaging/ios-notification-images\"],[\"Server Integration\",\"/messaging/server-integration\"]],\"//firebase.google.com/static/images/products/icons/run_cloud_messaging.svg\"],[\"Cloud Storage\",[[\"Usage\",\"/storage/usage\"]],\"//firebase.google.com/static/images/products/icons/build_storage.svg\"],[\"Core / App\",[[\"Usage\",\"/app/usage\"],[\"JSON Config\",\"/app/json-config\"],[\"Utils\",\"/app/utils\"]],\"//static.invertase.io/assets/social/firebase-logo.png\"],[\"Crashlytics\",[[\"Usage\",\"/crashlytics/usage\"],[\"Viewing crash reports\",\"/crashlytics/crash-reports\"]],\"//firebase.google.com/static/images/products/icons/run_crashlytics.svg\"],[\"Realtime Database\",[[\"Usage\",\"/database/usage\"],[\"Offline Support\",\"/database/offline-support\"],[\"Presence Detection\",\"/database/presence-detection\"]],\"//firebase.google.com/static/images/products/icons/build_realtime_database.svg\"],[\"In-App Messaging\",[[\"Usage\",\"/in-app-messaging/usage\"]],\"//firebase.google.com/static/images/products/icons/run_in_app_messaging.svg\"],[\"Installations\",[[\"Usage\",\"/installations/usage\"]],\"//static.invertase.io/assets/social/firebase-logo.png\"],[\"ML\",[[\"Usage\",\"/ml/usage\"]],\"//firebase.google.com/static/images/products/icons/build_ml.svg\"],[\"Remote Config\",[[\"Usage\",\"/remote-config/usage\"]],\"//firebase.google.com/static/images/products/icons/run_remote_config.svg\"],[\"Performance Monitoring\",[[\"Usage\",\"/perf/usage\"],[\"Axios Integration\",\"/perf/axios-integration\"],[\"KY Integration\",\"/perf/ky-integration\"]],\"//firebase.google.com/static/images/products/icons/run_performance.svg\"],[\"VertexAi\",[[\"Usage\",\"/vertexai/usage\"]],\"//static.invertase.io/assets/social/firebase-logo.png\"],[\"Legacy docs\",[[\"Migrating to v6\",\"/migrating-to-v6\"],[\"Legacy Docs (<= v5)\",\"https://v5.rnfirebase.io/docs/v5.x.x/getting-started\"]],\"//static.invertase.io/assets/social/firebase-logo.png\"]]"}},"pageContext":{"id":"e2b0c51a-61a0-5e07-824f-687d66176504","next":"/faqs-and-tips","previous":"/releases"}},"staticQueryHashes":["3688227230"]}