{"componentChunkName":"component---src-templates-documentation-tsx","path":"/migrating-to-v23","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 v23\",\n  \"description\": \"Migrate to React Native Firebase v23.\",\n  \"previous\": \"/migrate-to-v22\",\n  \"next\": \"/typescript\"\n};\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\": \"firebase-crashlytics\"\n  }, \"Firebase Crashlytics\"), mdx(\"p\", null, \"Modular API method \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"isCrashlyticsCollectionEnabled(crashlytics)\"), \" has been removed, please use the property on Crashlytics instance\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"getCrashlytics().isCrashlyticsCollectionEnabled\"), \" instead.\"), mdx(\"h1\", {\n    \"id\": \"firebase-auth\"\n  }, \"Firebase Auth\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"MultiFactorUser.enrolledFactor\"), \" has been removed, please use \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"MultiFactorUser.enrolledFactors\"), \". See 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\"\n  }, \"const\"), \" credential \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"await\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"signInWithEmailAndPassword\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"getAuth\"), 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 string\"\n  }, \"'dummy@example.com'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'password'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"const\"), \" multiFactorUser \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" credential\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property-access\"\n  }, \"user\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property-access\"\n  }, \"multiFactor\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"// Use below - remove any instances of `multiFactorUser.enrolledFactor`\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token console class-name\"\n  }, \"console\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token method function property-access\"\n  }, \"log\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"multiFactorUser\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token property-access\"\n  }, \"enrolledFactors\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\")), mdx(\"h1\", {\n    \"id\": \"firebase-app\"\n  }, \"Firebase App\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"gaMeasurementId\"), \" property from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"FirebaseOptions\"), \" has been replaced with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"measurementId\"), \" to match Firebase web JS SDK.\")), mdx(\"h1\", {\n    \"id\": \"firebase-dynamic-links\"\n  }, \"Firebase Dynamic Links\"), mdx(\"p\", null, \"\\u26A0\\uFE0F \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"REMOVED\"), \" \\u26A0\\uFE0F\"), mdx(\"p\", null, \"Firebase Dynamic Links has been Removed\"), mdx(\"p\", null, \"This package has been deprecated and removed from the React Native Firebase repository.\"), mdx(\"h2\", {\n    \"id\": \"why-was-it-deprecated\"\n  }, \"Why was it deprecated?\"), mdx(\"p\", null, \"Firebase Dynamic Links has been deprecated by Google and will be shut down on August 25th, 2025. For more information about the deprecation and migration options, please visit:\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"a\", {\n    parentName: \"strong\",\n    \"href\": \"https://firebase.google.com/support/dynamic-links-faq\"\n  }, \"Firebase Dynamic Links Deprecation FAQ\"))), mdx(\"h2\", {\n    \"id\": \"migration-options\"\n  }, \"Migration Options\"), mdx(\"p\", null, \"The deprecation FAQ provides detailed guidance on how to migrate from Firebase Dynamic Links, including:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Full feature parity\"), \": Use alternative deep-linking service providers\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Simple deep-linking\"), \": Migrate to App Links and Universal Links. \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://firebase.google.com/support/guides/app-links-universal-links\"\n  }, \"See Firebase documentation\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"No replacement needed\"), \": Remove the package entirely\")), mdx(\"h2\", {\n    \"id\": \"timeline\"\n  }, \"Timeline\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"August 25th, 2025\"), \": Firebase Dynamic Links service will be completely shut down\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All existing links will stop working\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"All APIs will return error responses\")), mdx(\"p\", null, \"Please refer to the official deprecation FAQ for complete migration guidance and support.\"), mdx(\"h1\", {\n    \"id\": \"android-platform\"\n  }, \"Android Platform\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Android \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"minSdk\"), \" has been bumped from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"21\"), \" to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"23\"), \" (except Auth which already had a \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"minSdk\"), \" of \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"23\"), \").\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Auth play services has been bumped from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"21.3.0\"), \" to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"21.4.0\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Crashlytics gradle plugin has been bumped from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"3.0.4\"), \" to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"3.0.5\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Performance gradle plugin has been bumped from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"1.4.2\"), \" to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"2.0.0\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"App distribution gradle plugin has been bumped from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"5.1.0\"), \" to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"5.1.1\"), \".\")), mdx(\"p\", null, \"#\\xA0iOS platform\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Minimum iOS deployment target has now been bumped to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"15\"), \" from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"13\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Minimum Xcode version required for iOS development is now Xcode \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"16.2\"), \", previous was Xcode \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"15.2\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"gaMeasurementId\"), \" property from \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"FirebaseOptions\"), \" (now \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"measurementId\"), \" in React Native Firebase) has been removed from firebase-ios-sdk as it wasn't used.\")), mdx(\"h1\", {\n    \"id\": \"web-platform\"\n  }, \"Web platform\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Firebase JS SDK has been bumped to \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"12.0.0\"), \" which now requires a minimum of Node.js \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"20\"), \" and a minimum of \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ES2020\"), \".\\n\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://firebase.google.com/support/release-notes/js#version_1200_-_july_17_2025\"\n  }, \"See release notes\"), \".\")));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Migrating to v23","description":"Migrate to React Native Firebase v23.","icon":null,"noindex":null},"excerpt":"Firebase Crashlytics Modular API method  isCrashlyticsCollectionEnabled(crashlytics)  has been removed, please use the property on…","tableOfContents":{"items":[{"url":"#firebase-crashlytics","title":"Firebase Crashlytics"},{"url":"#firebase-auth","title":"Firebase Auth"},{"url":"#firebase-app","title":"Firebase App"},{"url":"#firebase-dynamic-links","title":"Firebase Dynamic Links","items":[{"url":"#why-was-it-deprecated","title":"Why was it deprecated?"},{"url":"#migration-options","title":"Migration Options"},{"url":"#timeline","title":"Timeline"}]},{"url":"#android-platform","title":"Android Platform"},{"url":"#web-platform","title":"Web platform"}]},"headings":[{"depth":1,"value":"Firebase Crashlytics"},{"depth":1,"value":"Firebase Auth"},{"depth":1,"value":"Firebase App"},{"depth":1,"value":"Firebase Dynamic Links"},{"depth":2,"value":"Why was it deprecated?"},{"depth":2,"value":"Migration Options"},{"depth":2,"value":"Timeline"},{"depth":1,"value":"Android Platform"},{"depth":1,"value":"Web platform"}],"parent":{"__typename":"File","relativePath":"migrating-to-v23.md"}},"next":{"frontmatter":{"title":"TypeScript"},"fields":{"slug":"/typescript"}},"previous":null,"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":"be954609-28a6-5f27-8074-c135b3af4515","next":"/typescript","previous":"/migrate-to-v22"}},"staticQueryHashes":["3688227230"]}