CINXE.COM
Easily add sign-in to your iOS app with FirebaseUI
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Firebase"> <meta property="og:type" content="website"><meta name="theme-color" content="#a8c7fa"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/firebase/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/css/app.css"> <link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/css/dark-theme.css" disabled> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/favicon.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/touchicon-180.png"><link rel="canonical" href="https://firebase.google.com/docs/auth/ios/firebaseui"><link rel="search" type="application/opensearchdescription+xml" title="Firebase" href="https://firebase.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://firebase.google.com/docs/auth/ios/firebaseui" /><link rel="alternate" hreflang="x-default" href="https://firebase.google.com/docs/auth/ios/firebaseui" /><link rel="alternate" hreflang="ar" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=ar" /><link rel="alternate" hreflang="bn" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=fa" /><link rel="alternate" hreflang="fr" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=fr" /><link rel="alternate" hreflang="de" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=de" /><link rel="alternate" hreflang="he" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=he" /><link rel="alternate" hreflang="hi" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=hi" /><link rel="alternate" hreflang="id" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=id" /><link rel="alternate" hreflang="it" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=it" /><link rel="alternate" hreflang="ja" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=ja" /><link rel="alternate" hreflang="ko" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=ko" /><link rel="alternate" hreflang="pl" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=pt-br" /><link rel="alternate" hreflang="pt" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=pt" /><link rel="alternate" hreflang="ru" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=ru" /><link rel="alternate" hreflang="es" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=es" /><link rel="alternate" hreflang="es-419" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=es-419" /><link rel="alternate" hreflang="th" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=th" /><link rel="alternate" hreflang="tr" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=tr" /><link rel="alternate" hreflang="vi" href="https://firebase.google.com/docs/auth/ios/firebaseui?hl=vi" /><title>Easily add sign-in to your iOS app with FirebaseUI</title> <meta property="og:title" content="Easily add sign-in to your iOS app with FirebaseUI"><meta property="og:url" content="https://firebase.google.com/docs/auth/ios/firebaseui"><meta property="og:locale" content="en"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Easily add sign-in to your iOS app with FirebaseUI" } </script> <meta name="gtm_var" data-key="docType" data-value="how-to"> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="firebase-icy-theme" type="article" appearance layout="docs" concierge='closed' display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner" keep-tabs-visible> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Firebase"> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup.svg" class="devsite-site-logo" alt="Firebase"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab class="devsite-dropdown "> <a href="https://firebase.google.com/products-build" track-metadata-eventdetail="https://firebase.google.com/products-build" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" > Build </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Build" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products-build" track-metadata-position="nav - build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column firebase-dropdown firebase-dropdown--primary firebase-build"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Build</li> <li class="devsite-nav-description">Get to market quickly and securely with products that can scale globally </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products-build" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products-build" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build" tooltip > <div class="devsite-nav-item-title"> Go to Build </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column firebase-dropdown firebase-dropdown--secondary firebase-build"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Build Products</li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/app-check" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/app-check" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> App Check </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/app-hosting" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/app-hosting" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> App Hosting </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/auth" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/auth" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Authentication </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/functions" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/functions" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Cloud Functions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/storage" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/storage" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Cloud Storage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/data-connect" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/data-connect" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Data Connect </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/extensions" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/extensions" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Extensions </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/ml" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/ml" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Firebase ML </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/firestore" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/firestore" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Firestore </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/genkit" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/genkit" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Genkit </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/hosting" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/hosting" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Hosting </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/realtime-database" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/realtime-database" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Realtime Database </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/vertex-ai-in-firebase" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/vertex-ai-in-firebase" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Vertex AI in Firebase </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/generative-ai" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/generative-ai" track-metadata-position="nav - build" track-metadata-module="tertiary nav" track-metadata-module_headline="build products" tooltip > <div class="devsite-nav-item-title"> Generative AI </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://firebase.google.com/products-run" track-metadata-eventdetail="https://firebase.google.com/products-run" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - run" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" > Run </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Run" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products-run" track-metadata-position="nav - run" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column firebase-dropdown firebase-dropdown--primary firebase-run"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Run</li> <li class="devsite-nav-description">Run your app with confidence and deliver the best experience for your users </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products-run" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products-run" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run" tooltip > <div class="devsite-nav-item-title"> Go to Run </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column firebase-dropdown firebase-dropdown--secondary"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Run Products</li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/ab-testing" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/ab-testing" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> A/B Testing </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/app-distribution" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/app-distribution" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> App Distribution </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/cloud-messaging" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/cloud-messaging" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> Cloud Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/crashlytics" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/crashlytics" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> Crashlytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/analytics" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/analytics" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> Google Analytics </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/in-app-messaging" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/in-app-messaging" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> In-App Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/performance" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/performance" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> Performance Monitoring </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/remote-config" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/remote-config" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> Remote Config </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/products/test-lab" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/products/test-lab" track-metadata-position="nav - run" track-metadata-module="tertiary nav" track-metadata-module_headline="run products" tooltip > <div class="devsite-nav-item-title"> Test Lab </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://firebase.google.com/solutions" track-metadata-eventdetail="https://firebase.google.com/solutions" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - solutions" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" > Solutions </a> </tab> <tab > <a href="https://firebase.google.com/pricing" track-metadata-eventdetail="https://firebase.google.com/pricing" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - pricing" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Pricing" track-name="pricing" > Pricing </a> </tab> <tab class="devsite-dropdown devsite-active "> <a href="https://firebase.google.com/docs" track-metadata-eventdetail="https://firebase.google.com/docs" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - docs" track-metadata-module="primary nav" aria-label="Docs, selected" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" > Docs </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Docs" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs" track-metadata-position="nav - docs" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/guides" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/guides" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Fundamentals </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/build" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/build" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Build </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/run" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/run" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Run </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/reference" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/reference" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Reference </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/samples" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/samples" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Samples </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://firebase.google.com/community" track-metadata-eventdetail="https://firebase.google.com/community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Community" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/community/learn" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/community/learn" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Learn </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/community/events" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/community/events" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Events </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/community/stories" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/community/stories" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Stories </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://firebase.google.com/support" track-metadata-eventdetail="https://firebase.google.com/support" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - support" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" > Support </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Firebase" tenant-name="Firebase" > <form class="devsite-search-form" action="https://firebase.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-appearance-selector></devsite-appearance-selector> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//console.firebase.google.com" data-category="Site-Wide Custom Events" data-label="Site header link" > Go to console </a> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Documentation </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://firebase.google.com/docs" track-metadata-eventdetail="https://firebase.google.com/docs" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab class="devsite-dropdown "> <a href="https://firebase.google.com/docs/guides" track-metadata-eventdetail="https://firebase.google.com/docs/guides" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - fundamentals" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals" track-name="fundamentals" > Fundamentals </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Fundamentals" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/guides" track-metadata-position="nav - fundamentals" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals" track-name="fundamentals" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/ios/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/ios/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - Apple platforms (iOS+) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/android/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/android/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/web/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/web/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - Web </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/flutter/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/flutter/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - Flutter </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/cpp/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/cpp/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - C++ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/unity/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/unity/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - Unity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/admin/setup" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/admin/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Add Firebase - Server environments </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/projects/learn-more" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/projects/learn-more" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Manage Firebase projects </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/libraries" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/libraries" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Supported platforms & frameworks </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/emulator-suite" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/emulator-suite" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Use Emulator Suite </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/gemini-in-firebase" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/gemini-in-firebase" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> AI assistance with Gemini in Firebase </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-active "> <a href="https://firebase.google.com/docs/build" track-metadata-eventdetail="https://firebase.google.com/docs/build" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - build" track-metadata-module="primary nav" aria-label="Build, selected" data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" > Build </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Build" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/build" track-metadata-position="nav - build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/emulator-suite" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/emulator-suite" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Emulator Suite </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/auth" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/auth" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Authentication </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/app-check" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/app-check" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> App Check </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/data-connect" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/data-connect" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Data Connect </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/firestore" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/firestore" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Firestore </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/database" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/database" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Realtime Database </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/storage" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/storage" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Storage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/rules" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/rules" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Security Rules </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/app-hosting" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/app-hosting" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> App Hosting </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/hosting" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/hosting" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Hosting </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/functions" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/functions" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Cloud Functions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/extensions" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/extensions" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Extensions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/vertex-ai" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/vertex-ai" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Vertex AI in Firebase </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/genkit" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/genkit" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Genkit </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/ml" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/ml" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> ML </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://firebase.google.com/docs/run" track-metadata-eventdetail="https://firebase.google.com/docs/run" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - run" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" > Run </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Run" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/run" track-metadata-position="nav - run" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/test-lab" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/test-lab" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Test Lab </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/app-distribution" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/app-distribution" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> App Distribution </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/crashlytics" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/crashlytics" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Crashlytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/perf-mon" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/perf-mon" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Performance Monitoring </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/remote-config" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/remote-config" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Remote Config </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/ab-testing" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/ab-testing" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> A/B Testing </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/analytics" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/analytics" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Analytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/cloud-messaging" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/cloud-messaging" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Cloud Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/in-app-messaging" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/in-app-messaging" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> In-App Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/dynamic-links" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/dynamic-links" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Dynamic Links </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/admob" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/admob" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Google AdMob </div> </a> </li> <li class="devsite-nav-item"> <a href="https://firebase.google.com/docs/ads" track-type="nav" track-metadata-eventdetail="https://firebase.google.com/docs/ads" track-metadata-position="nav - run" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Google Ads </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://firebase.google.com/docs/reference" track-metadata-eventdetail="https://firebase.google.com/docs/reference" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" > Reference </a> </tab> <tab > <a href="https://firebase.google.com/docs/samples" track-metadata-eventdetail="https://firebase.google.com/docs/samples" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - samples" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Samples" track-name="samples" > Samples </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Firebase"> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup.svg" class="devsite-site-logo" alt="Firebase"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/products-build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Build </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" > <span class="devsite-nav-text" tooltip menu="Build"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Build"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/products-run" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Run" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Run </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" > <span class="devsite-nav-text" tooltip menu="Run"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Run"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/solutions" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Solutions" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Solutions </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/pricing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Pricing" track-name="pricing" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pricing" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Docs" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Docs </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" > <span class="devsite-nav-text" tooltip menu="Docs"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Docs"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/guides" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals" track-name="fundamentals" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fundamentals" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Fundamentals </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals" track-name="fundamentals" > <span class="devsite-nav-text" tooltip menu="Fundamentals"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Fundamentals"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/docs/build" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> Build </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Build" track-name="build" > <span class="devsite-nav-text" tooltip menu="Build"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Build"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/docs/run" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Run" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Run </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Run" track-name="run" > <span class="devsite-nav-text" tooltip menu="Run"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Run"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Samples" track-name="samples" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/community" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > <span class="devsite-nav-text" tooltip menu="Community"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Community"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Support </span> </a> </li> <li class="devsite-nav-item"> <a href="//console.firebase.google.com" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Go to console" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Go to console </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/docs/build" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/build" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/build" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Emulator Suite</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/emulator-suite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Connect your app and prototype</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/emulator-suite/connect_and_prototype" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/connect_and_prototype" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/connect_and_prototype" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/connect_auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/connect_auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/connect_auth" ><span class="devsite-nav-text" tooltip>Connect to the Authentication emulator</span></a></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/connect_rtdb" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/connect_rtdb" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/connect_rtdb" ><span class="devsite-nav-text" tooltip>Connect to the Realtime Database emulator</span></a></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/connect_firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/connect_firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/connect_firestore" ><span class="devsite-nav-text" tooltip>Connect to the Firestore emulator</span></a></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/connect_storage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/connect_storage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/connect_storage" ><span class="devsite-nav-text" tooltip>Connect to the Cloud Storage for Firebase emulator</span></a></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/use_hosting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/use_hosting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/use_hosting" ><span class="devsite-nav-text" tooltip>Use the Hosting emulator</span></a></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/use_app_hosting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/use_app_hosting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/use_app_hosting" ><span class="devsite-nav-text" tooltip>Use the App Hosting emulator</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/docs/emulator-suite/connect_functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/connect_functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/connect_functions" ><span class="devsite-nav-text" tooltip>Connect to the Cloud Functions emulator</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/docs/emulator-suite/use_extensions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/use_extensions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/use_extensions" ><span class="devsite-nav-text" tooltip>Use the Extensions emulator</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/emulator-suite/install_and_configure" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/emulator-suite/install_and_configure" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/emulator-suite/install_and_configure" ><span class="devsite-nav-text" tooltip>Install, configure and integrate</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Authentication</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/where-to-start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/where-to-start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/where-to-start" ><span class="devsite-nav-text" tooltip>Where do I start?</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/users" ><span class="devsite-nav-text" tooltip>Users in Firebase Projects</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>iOS+</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/ios/firebaseui" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/firebaseui" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/firebaseui" ><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/password-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/password-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/password-auth" ><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/email-link-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/email-link-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/email-link-auth" ><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/google-signin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/google-signin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/google-signin" ><span class="devsite-nav-text" tooltip>Google</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/facebook-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/facebook-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/facebook-login" ><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/apple" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/apple" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/apple" ><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/twitter-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/twitter-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/twitter-login" ><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/github-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/github-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/github-auth" ><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/microsoft-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/microsoft-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/microsoft-oauth" ><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/yahoo-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/yahoo-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/yahoo-oauth" ><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/game-center" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/game-center" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/game-center" ><span class="devsite-nav-text" tooltip>Game Center Sign-in</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/phone-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/phone-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/phone-auth" ><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/openid-connect" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/openid-connect" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/openid-connect" ><span class="devsite-nav-text" tooltip>OpenID Connect</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/custom-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/custom-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/custom-auth" ><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/anonymous-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/anonymous-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/anonymous-auth" ><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/single-sign-on" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/single-sign-on" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/single-sign-on" ><span class="devsite-nav-text" tooltip>Enabling cross-app authentication with shared Keychain</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/account-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/account-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/account-linking" ><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/multi-factor" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/multi-factor" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/multi-factor" ><span class="devsite-nav-text" tooltip>SMS Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/totp-mfa" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/totp-mfa" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/totp-mfa" ><span class="devsite-nav-text" tooltip>TOTP Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/passing-state-in-email-actions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/passing-state-in-email-actions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/passing-state-in-email-actions" ><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/ios/errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/ios/errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/ios/errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Android</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/android/firebaseui" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/firebaseui" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/firebaseui" ><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/password-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/password-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/password-auth" ><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/email-link-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/email-link-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/email-link-auth" ><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/google-signin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/google-signin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/google-signin" ><span class="devsite-nav-text" tooltip>Google</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/facebook-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/facebook-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/facebook-login" ><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/apple" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/apple" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/apple" ><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/twitter-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/twitter-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/twitter-login" ><span class="devsite-nav-text" tooltip>Twitter</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/github-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/github-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/github-auth" ><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/microsoft-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/microsoft-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/microsoft-oauth" ><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/yahoo-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/yahoo-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/yahoo-oauth" ><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/play-games" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/play-games" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/play-games" ><span class="devsite-nav-text" tooltip>Play Games Sign-in</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/phone-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/phone-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/phone-auth" ><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/openid-connect" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/openid-connect" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/openid-connect" ><span class="devsite-nav-text" tooltip>OpenID Connect</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/custom-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/custom-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/custom-auth" ><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/anonymous-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/anonymous-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/anonymous-auth" ><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/multi-factor" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/multi-factor" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/multi-factor" ><span class="devsite-nav-text" tooltip>SMS Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/totp-mfa" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/totp-mfa" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/totp-mfa" ><span class="devsite-nav-text" tooltip>TOTP Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/account-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/account-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/account-linking" ><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/android/passing-state-in-email-actions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/android/passing-state-in-email-actions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/android/passing-state-in-email-actions" ><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Flutter</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/flutter/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/password-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/password-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/password-auth" ><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/email-link-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/email-link-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/email-link-auth" ><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/federated-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/federated-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/federated-auth" ><span class="devsite-nav-text" tooltip>Federated Identity & Social</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/phone-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/phone-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/phone-auth" ><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/custom-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/custom-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/custom-auth" ><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/anonymous-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/anonymous-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/anonymous-auth" ><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/multi-factor" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/multi-factor" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/multi-factor" ><span class="devsite-nav-text" tooltip>Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/account-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/account-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/account-linking" ><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/passing-state-in-email-actions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/passing-state-in-email-actions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/passing-state-in-email-actions" ><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/flutter/errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/flutter/errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/flutter/errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Web</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/web/firebaseui" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/firebaseui" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/firebaseui" ><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/password-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/password-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/password-auth" ><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/email-link-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/email-link-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/email-link-auth" ><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/google-signin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/google-signin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/google-signin" ><span class="devsite-nav-text" tooltip>Google</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/facebook-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/facebook-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/facebook-login" ><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/apple" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/apple" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/apple" ><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/twitter-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/twitter-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/twitter-login" ><span class="devsite-nav-text" tooltip>Twitter</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/github-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/github-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/github-auth" ><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/microsoft-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/microsoft-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/microsoft-oauth" ><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/yahoo-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/yahoo-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/yahoo-oauth" ><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/phone-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/phone-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/phone-auth" ><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/openid-connect" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/openid-connect" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/openid-connect" ><span class="devsite-nav-text" tooltip>OpenID Connect</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/saml" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/saml" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/saml" ><span class="devsite-nav-text" tooltip>SAML</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/custom-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/custom-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/custom-auth" ><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/anonymous-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/anonymous-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/anonymous-auth" ><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/multi-factor" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/multi-factor" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/multi-factor" ><span class="devsite-nav-text" tooltip>SMS Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/totp-mfa" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/totp-mfa" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/totp-mfa" ><span class="devsite-nav-text" tooltip>TOTP Multi-factor Auth</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/account-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/account-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/account-linking" ><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/custom-dependencies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/custom-dependencies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/custom-dependencies" ><span class="devsite-nav-text" tooltip>Customize Dependencies</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/cordova" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/cordova" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/cordova" ><span class="devsite-nav-text" tooltip>OAuth Sign-In for Cordova</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/chrome-extension" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/chrome-extension" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/chrome-extension" ><span class="devsite-nav-text" tooltip>Sign in users from a Chrome extension</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/auth-state-persistence" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/auth-state-persistence" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/auth-state-persistence" ><span class="devsite-nav-text" tooltip>Auth State Persistence</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/passing-state-in-email-actions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/passing-state-in-email-actions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/passing-state-in-email-actions" ><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/docs/auth/web/service-worker-sessions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/service-worker-sessions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/service-worker-sessions" ><span class="devsite-nav-text" tooltip>Service Worker Sessions</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/auth/web/redirect-best-practices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/web/redirect-best-practices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/web/redirect-best-practices" ><span class="devsite-nav-text" tooltip>Best practices for signInWithRedirect flows</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>C++</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/cpp/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/password-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/password-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/password-auth" ><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/google-signin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/google-signin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/google-signin" ><span class="devsite-nav-text" tooltip>Google</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/docs/auth/cpp/play-games" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/play-games" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/play-games" ><span class="devsite-nav-text" tooltip>Play Games Sign-in</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/github-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/github-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/github-auth" ><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/facebook-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/facebook-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/facebook-login" ><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/apple" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/apple" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/apple" ><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/twitter-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/twitter-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/twitter-login" ><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/microsoft-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/microsoft-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/microsoft-oauth" ><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/yahoo-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/yahoo-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/yahoo-oauth" ><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/phone-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/phone-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/phone-auth" ><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/custom-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/custom-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/custom-auth" ><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/anonymous-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/anonymous-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/anonymous-auth" ><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/cpp/account-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/cpp/account-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/cpp/account-linking" ><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Unity</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/unity/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/password-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/password-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/password-auth" ><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/google-signin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/google-signin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/google-signin" ><span class="devsite-nav-text" tooltip>Google</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/docs/auth/unity/play-games" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/play-games" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/play-games" ><span class="devsite-nav-text" tooltip>Play Games Sign-in</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/github-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/github-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/github-auth" ><span class="devsite-nav-text" tooltip>GitHub Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/facebook-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/facebook-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/facebook-login" ><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/apple" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/apple" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/apple" ><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/twitter-login" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/twitter-login" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/twitter-login" ><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/microsoft-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/microsoft-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/microsoft-oauth" ><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/yahoo-oauth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/yahoo-oauth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/yahoo-oauth" ><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/phone-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/phone-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/phone-auth" ><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/custom-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/custom-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/custom-auth" ><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/anonymous-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/anonymous-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/anonymous-auth" ><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/unity/account-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/unity/account-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/unity/account-linking" ><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Admin</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/auth/admin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/manage-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/manage-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/manage-users" ><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/import-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/import-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/import-users" ><span class="devsite-nav-text" tooltip>Import Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/create-custom-tokens" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/create-custom-tokens" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/create-custom-tokens" ><span class="devsite-nav-text" tooltip>Create Custom Tokens</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/verify-id-tokens" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/verify-id-tokens" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/verify-id-tokens" ><span class="devsite-nav-text" tooltip>Verify ID Tokens</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/manage-mfa-users" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/manage-mfa-users" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/manage-mfa-users" ><span class="devsite-nav-text" tooltip>Manage Multi-factor Users</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/manage-sessions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/manage-sessions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/manage-sessions" ><span class="devsite-nav-text" tooltip>Manage User Sessions</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/manage-cookies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/manage-cookies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/manage-cookies" ><span class="devsite-nav-text" tooltip>Manage Session Cookies</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/custom-claims" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/custom-claims" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/custom-claims" ><span class="devsite-nav-text" tooltip>Control Access with Custom Claims</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/email-action-links" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/email-action-links" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/email-action-links" ><span class="devsite-nav-text" tooltip>Generating Email Action Links</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/admin/errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/admin/errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/admin/errors" ><span class="devsite-nav-text" tooltip>Errors</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/auth/custom-email-handler" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/custom-email-handler" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/custom-email-handler" ><span class="devsite-nav-text" tooltip>Customize the Email Action Handler</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/extend-with-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/extend-with-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/extend-with-functions" ><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/extend-with-blocking-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/extend-with-blocking-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/extend-with-blocking-functions" ><span class="devsite-nav-text" tooltip>Extend with blocking functions</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/email-custom-domain" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/email-custom-domain" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/email-custom-domain" ><span class="devsite-nav-text" tooltip>Email Custom Domains</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/case-studies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/case-studies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/case-studies" ><span class="devsite-nav-text" tooltip>Case Studies</span></a></li><li class="devsite-nav-item"><a href="/docs/auth/limits" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/auth/limits" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/auth/limits" ><span class="devsite-nav-text" tooltip>Usage Limits</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>App Check</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/app-check" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Get started</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Default providers</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/app-check/ios/devicecheck-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/ios/devicecheck-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/ios/devicecheck-provider" ><span class="devsite-nav-text" tooltip>iOS+ (DeviceCheck)</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/ios/app-attest-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/ios/app-attest-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/ios/app-attest-provider" ><span class="devsite-nav-text" tooltip>iOS+ (App Attest)</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/android/play-integrity-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/android/play-integrity-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/android/play-integrity-provider" ><span class="devsite-nav-text" tooltip>Android (Play Integrity)</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/android/safetynet-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/android/safetynet-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/android/safetynet-provider" ><span class="devsite-nav-text" tooltip>Android (SafetyNet, deprecated)</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/web/recaptcha-enterprise-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/web/recaptcha-enterprise-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/web/recaptcha-enterprise-provider" ><span class="devsite-nav-text" tooltip>Web (reCAPTCHA Enterprise)</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/web/recaptcha-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/web/recaptcha-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/web/recaptcha-provider" ><span class="devsite-nav-text" tooltip>Web (reCAPTCHA v3)</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/flutter/default-providers" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/flutter/default-providers" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/flutter/default-providers" ><span class="devsite-nav-text" tooltip>Flutter</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/cpp/default-providers" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/cpp/default-providers" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/cpp/default-providers" ><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/unity/default-providers" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/unity/default-providers" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/unity/default-providers" ><span class="devsite-nav-text" tooltip>Unity</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Custom providers</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/app-check/custom-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/custom-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/custom-provider" ><span class="devsite-nav-text" tooltip>Server implementation</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/ios/custom-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/ios/custom-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/ios/custom-provider" ><span class="devsite-nav-text" tooltip>iOS+ client implementation</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/android/custom-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/android/custom-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/android/custom-provider" ><span class="devsite-nav-text" tooltip>Android client implementation</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/web/custom-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/web/custom-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/web/custom-provider" ><span class="devsite-nav-text" tooltip>Web client implementation</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/cpp/custom-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/cpp/custom-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/cpp/custom-provider" ><span class="devsite-nav-text" tooltip>C++ client implementation</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/unity/custom-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/unity/custom-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/unity/custom-provider" ><span class="devsite-nav-text" tooltip>Unity client implementation</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Debug & test providers</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/app-check/ios/debug-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/ios/debug-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/ios/debug-provider" ><span class="devsite-nav-text" tooltip>Use the debug provider in iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/android/debug-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/android/debug-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/android/debug-provider" ><span class="devsite-nav-text" tooltip>Use the debug provider in Android</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/web/debug-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/web/debug-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/web/debug-provider" ><span class="devsite-nav-text" tooltip>Use the debug provider in web apps</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/flutter/debug-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/flutter/debug-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/flutter/debug-provider" ><span class="devsite-nav-text" tooltip>Use the debug provider with Flutter</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/cpp/debug-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/cpp/debug-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/cpp/debug-provider" ><span class="devsite-nav-text" tooltip>Use the debug provider with C++</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/unity/debug-provider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/unity/debug-provider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/unity/debug-provider" ><span class="devsite-nav-text" tooltip>Use the debug provider in Unity apps</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Monitor request metrics</span> </div></li><li class="devsite-nav-item"><a href="/docs/app-check/monitor-metrics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/monitor-metrics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/monitor-metrics" ><span class="devsite-nav-text" tooltip>Standard Firebase services</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/monitor-functions-metrics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/monitor-functions-metrics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/monitor-functions-metrics" ><span class="devsite-nav-text" tooltip>Cloud Functions for Firebase</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Enable enforcement</span> </div></li><li class="devsite-nav-item"><a href="/docs/app-check/enable-enforcement" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/enable-enforcement" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/enable-enforcement" ><span class="devsite-nav-text" tooltip>Standard Firebase services</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/cloud-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/cloud-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/cloud-functions" ><span class="devsite-nav-text" tooltip>Cloud Functions for Firebase</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Protect non-Firebase resources</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Send tokens from the client</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/app-check/ios/custom-resource" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/ios/custom-resource" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/ios/custom-resource" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/android/custom-resource" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/android/custom-resource" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/android/custom-resource" ><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/web/custom-resource" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/web/custom-resource" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/web/custom-resource" ><span class="devsite-nav-text" tooltip>Web</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/flutter/custom-resource" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/flutter/custom-resource" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/flutter/custom-resource" ><span class="devsite-nav-text" tooltip>Flutter</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/cpp/custom-resource" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/cpp/custom-resource" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/cpp/custom-resource" ><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/docs/app-check/unity/custom-resource" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/unity/custom-resource" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/unity/custom-resource" ><span class="devsite-nav-text" tooltip>Unity</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/app-check/custom-resource-backend" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-check/custom-resource-backend" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-check/custom-resource-backend" ><span class="devsite-nav-text" tooltip>Verify tokens on the backend</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Data Connect</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/data-connect" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/pricing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/pricing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/pricing" ><span class="devsite-nav-text" tooltip>Pricing and billing</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/quickstart" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/quickstart" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/quickstart" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/quickstart-local" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/quickstart-local" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/quickstart-local" ><span class="devsite-nav-text" tooltip>Get started (local development)</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Design schemas and operations</span> </div></li><li class="devsite-nav-item"><a href="/docs/data-connect/schemas-queries-mutations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/schemas-queries-mutations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/schemas-queries-mutations" ><span class="devsite-nav-text" tooltip>Understand GraphQL schemas, queries, and mutations</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/authorization-and-security" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/authorization-and-security" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/authorization-and-security" ><span class="devsite-nav-text" tooltip>Secure operations with authorization</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Develop and test with Data Connect</span> </div></li><li class="devsite-nav-item"><a href="/docs/data-connect/data-seeding-bulk-operations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/data-seeding-bulk-operations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/data-seeding-bulk-operations" ><span class="devsite-nav-text" tooltip>Seed test data and perform bulk operations</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/web-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/web-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/web-sdk" ><span class="devsite-nav-text" tooltip>Generate Web SDKs</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/android-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/android-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/android-sdk" ><span class="devsite-nav-text" tooltip>Generate Android SDKs</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/ios-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/ios-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/ios-sdk" ><span class="devsite-nav-text" tooltip>Generate iOS SDKs</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/flutter-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/flutter-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/flutter-sdk" ><span class="devsite-nav-text" tooltip>Generate Flutter SDKs</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/data-connect-emulator-suite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/data-connect-emulator-suite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/data-connect-emulator-suite" ><span class="devsite-nav-text" tooltip>Use the Data Connect emulator for CI/CD</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Manage Data Connect projects</span> </div></li><li class="devsite-nav-item"><a href="/docs/data-connect/manage-schemas-and-connectors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/manage-schemas-and-connectors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/manage-schemas-and-connectors" ><span class="devsite-nav-text" tooltip>Manage schemas and connectors</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/manage-services-and-databases" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/manage-services-and-databases" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/manage-services-and-databases" ><span class="devsite-nav-text" tooltip>Manage services and databases</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/admin-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/admin-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/admin-sdk" ><span class="devsite-nav-text" tooltip>Run privileged operations with the Firebase Admin SDK</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Data Connect solutions</span> </div></li><li class="devsite-nav-item"><a href="/docs/data-connect/solutions-vector-similarity-search" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/solutions-vector-similarity-search" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/solutions-vector-similarity-search" ><span class="devsite-nav-text" tooltip>Perform vector similarity search</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/ai-assistance" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/ai-assistance" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/ai-assistance" ><span class="devsite-nav-text" tooltip>Use AI assistance for queries and mutations</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>GraphQL language reference guides</span> </div></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/directive" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/directive" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/directive" ><span class="devsite-nav-text" tooltip>Directives reference</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/query" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/query" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/query" ><span class="devsite-nav-text" tooltip>Queries reference</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/mutation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/mutation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/mutation" ><span class="devsite-nav-text" tooltip>Mutations reference</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/object" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/object" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/object" ><span class="devsite-nav-text" tooltip>Objects reference</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/input_object" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/input_object" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/input_object" ><span class="devsite-nav-text" tooltip>Input objects reference</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/scalar" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/scalar" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/scalar" ><span class="devsite-nav-text" tooltip>Scalars reference</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/data-connect/gql/enum" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/data-connect/gql/enum" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/data-connect/gql/enum" ><span class="devsite-nav-text" tooltip>Enums reference</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Additional reference guides</span> </div></li><li class="devsite-nav-item"><a href="/docs/data-connect/cli-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/cli-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/cli-reference" ><span class="devsite-nav-text" tooltip>CLI reference</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/configuration-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/configuration-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/configuration-reference" ><span class="devsite-nav-text" tooltip>Configuration and security reference</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/cel-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/cel-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/cel-reference" ><span class="devsite-nav-text" tooltip>Common Expression Language (CEL) reference</span></a></li><li class="devsite-nav-item"><a href="/docs/data-connect/cloud-audit-logging" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/data-connect/cloud-audit-logging" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/data-connect/cloud-audit-logging" ><span class="devsite-nav-text" tooltip>Cloud Audit Logging reference</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Cloud Firestore</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/quickstart" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/quickstart" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/quickstart" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Understand Cloud Firestore</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/rtdb-vs-firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/rtdb-vs-firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/rtdb-vs-firestore" ><span class="devsite-nav-text" tooltip>Compare Cloud Firestore and Realtime Database</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/data-model" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/data-model" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/data-model" ><span class="devsite-nav-text" tooltip>Data model</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/data-types" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/data-types" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/data-types" ><span class="devsite-nav-text" tooltip>Data types</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/client/libraries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/client/libraries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/client/libraries" ><span class="devsite-nav-text" tooltip>SDKs and client libraries</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/index-overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/index-overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/index-overview" ><span class="devsite-nav-text" tooltip>Index types</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/locations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/locations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/locations" ><span class="devsite-nav-text" tooltip>Database locations</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/bundles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/bundles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/bundles" ><span class="devsite-nav-text" tooltip>Data bundles</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-databases" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-databases" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-databases" ><span class="devsite-nav-text" tooltip>Manage databases</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Add and manage data</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/structure-data" ><span class="devsite-nav-text" tooltip>Structure data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/add-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/add-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/add-data" ><span class="devsite-nav-text" tooltip>Add data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/transactions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/transactions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/transactions" ><span class="devsite-nav-text" tooltip>Transactions and batched writes</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/transaction-data-contention" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/transaction-data-contention" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/transaction-data-contention" ><span class="devsite-nav-text" tooltip>Data contention in transaction</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/delete-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/delete-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/delete-data" ><span class="devsite-nav-text" tooltip>Delete data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/using-console" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/using-console" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/using-console" ><span class="devsite-nav-text" tooltip>Manage Cloud Firestore with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/export-import" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/export-import" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/export-import" ><span class="devsite-nav-text" tooltip>Export and import data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/ttl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/ttl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/ttl" ><span class="devsite-nav-text" tooltip>Manage data retention with time-to-live policies</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/dataflow-connector" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/dataflow-connector" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/dataflow-connector" ><span class="devsite-nav-text" tooltip>Process data in bulk with Dataflow</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/move-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/move-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/move-data" ><span class="devsite-nav-text" tooltip>Move data between projects</span></a></li><li class="devsite-nav-item devsite-nav-preview"><a href="/docs/firestore/manage-data/bulk-delete" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/bulk-delete" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/bulk-delete" ><span class="devsite-nav-text" tooltip>Bulk delete data</span><span class="devsite-nav-icon material-icons" data-icon="preview" data-title="Preview" aria-hidden="true"></span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Read data</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/query-data/get-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/get-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/get-data" ><span class="devsite-nav-text" tooltip>Get data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/listen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/listen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/listen" ><span class="devsite-nav-text" tooltip>Get real-time updates</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/queries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/queries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/queries" ><span class="devsite-nav-text" tooltip>Perform simple and compound queries</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/order-limit-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/order-limit-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/order-limit-data" ><span class="devsite-nav-text" tooltip>Order and limit data</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Query with range & inequality filters on multiple fields</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/query-data/multiple-range-fields" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/multiple-range-fields" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/multiple-range-fields" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/multiple-range-optimize-indexes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/multiple-range-optimize-indexes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/multiple-range-optimize-indexes" ><span class="devsite-nav-text" tooltip>Optimize your queries</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/aggregation-queries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/aggregation-queries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/aggregation-queries" ><span class="devsite-nav-text" tooltip>Summarize data with aggregation queries</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/query-cursors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/query-cursors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/query-cursors" ><span class="devsite-nav-text" tooltip>Paginate data with query cursors</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/manage-data/enable-offline" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/manage-data/enable-offline" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/manage-data/enable-offline" ><span class="devsite-nav-text" tooltip>Access data offline</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/vector-search" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/vector-search" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/vector-search" ><span class="devsite-nav-text" tooltip>Search with vector embeddings</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-data/indexing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-data/indexing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-data/indexing" ><span class="devsite-nav-text" tooltip>Manage indexes</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Secure and validate data</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/security/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/get-started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/rules-structure" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/rules-structure" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/rules-structure" ><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/rules-conditions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/rules-conditions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/rules-conditions" ><span class="devsite-nav-text" tooltip>Writing conditions for Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/insecure-rules" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/insecure-rules" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/insecure-rules" ><span class="devsite-nav-text" tooltip>Fix insecure rules</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/test-rules-emulator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/test-rules-emulator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/test-rules-emulator" ><span class="devsite-nav-text" tooltip>Test your Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/rules-query" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/rules-query" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/rules-query" ><span class="devsite-nav-text" tooltip>Securely query data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/security/rules-fields" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/security/rules-fields" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/security/rules-fields" ><span class="devsite-nav-text" tooltip>Control access per field</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Solutions</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/solutions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Solutions using Firebase Extensions</span> </div></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/firestore/solutions/bigquery" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/bigquery" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/bigquery" ><span class="devsite-nav-text" tooltip>Integrate with BigQuery</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/firestore/solutions/ai-chatbot" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/ai-chatbot" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/ai-chatbot" ><span class="devsite-nav-text" tooltip>Implement an AI-driven chatbot</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/firestore/solutions/enriched-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/enriched-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/enriched-text" ><span class="devsite-nav-text" tooltip>Enrich handling of text</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/firestore/solutions/enriched-media" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/enriched-media" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/enriched-media" ><span class="devsite-nav-text" tooltip>Enhance value of media</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Solutions using guided custom implementations</span> </div></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/generative-ai-index" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/generative-ai-index" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/generative-ai-index" ><span class="devsite-nav-text" tooltip>Develop generative AI features</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/firestore-lite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/firestore-lite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/firestore-lite" ><span class="devsite-nav-text" tooltip>Firestore Lite Web SDK</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/aggregation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/aggregation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/aggregation" ><span class="devsite-nav-text" tooltip>Write-time aggregations</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/counters" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/counters" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/counters" ><span class="devsite-nav-text" tooltip>Distributed counters</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/search" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/search" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/search" ><span class="devsite-nav-text" tooltip>Full-text search</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/presence" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/presence" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/presence" ><span class="devsite-nav-text" tooltip>Build presence</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/role-based-access" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/role-based-access" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/role-based-access" ><span class="devsite-nav-text" tooltip>Secure data access for users and groups</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/delete-collections" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/delete-collections" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/delete-collections" ><span class="devsite-nav-text" tooltip>Delete data with a callable Cloud Function</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/schedule-export" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/schedule-export" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/schedule-export" ><span class="devsite-nav-text" tooltip>Schedule data exports</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/shard-timestamp" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/shard-timestamp" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/shard-timestamp" ><span class="devsite-nav-text" tooltip>Sharded timestamps</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/geoqueries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/geoqueries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/geoqueries" ><span class="devsite-nav-text" tooltip>Geo queries</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/serve-bundles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/serve-bundles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/serve-bundles" ><span class="devsite-nav-text" tooltip>Serve bundled Firestore content from a CDN</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Usage, limits, and pricing</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/quotas" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/quotas" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/quotas" ><span class="devsite-nav-text" tooltip>Usage and limits</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/monitor-usage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/monitor-usage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/monitor-usage" ><span class="devsite-nav-text" tooltip>Monitor usage</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/query-explain" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/query-explain" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/query-explain" ><span class="devsite-nav-text" tooltip>Explain query performance</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/reference/query-explain-report-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/reference/query-explain-report-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/reference/query-explain-report-reference" ><span class="devsite-nav-text" tooltip>Query Explain report reference</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/pricing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/pricing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/pricing" ><span class="devsite-nav-text" tooltip>Understand Cloud Firestore billing</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/billing-example" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/billing-example" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/billing-example" ><span class="devsite-nav-text" tooltip>Example Cloud Firestore costs</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/storage-size" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/storage-size" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/storage-size" ><span class="devsite-nav-text" tooltip>Understand storage size calculations</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Backups and point-in-time recovery</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/disaster-recovery" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/disaster-recovery" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/disaster-recovery" ><span class="devsite-nav-text" tooltip>Disaster recovery planning</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Scheduled backups</span> </div></li><li class="devsite-nav-item"><a href="/docs/firestore/backups" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/backups" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/backups" ><span class="devsite-nav-text" tooltip>Create a backup schedule and restore data</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/restore-in-place" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/restore-in-place" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/restore-in-place" ><span class="devsite-nav-text" tooltip>Perform an in-place restore</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Point-in-time recovery (PITR)</span> </div></li><li class="devsite-nav-item"><a href="/docs/firestore/pitr" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/pitr" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/pitr" ><span class="devsite-nav-text" tooltip>PITR overview</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/use-pitr" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/use-pitr" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/use-pitr" ><span class="devsite-nav-text" tooltip>Work with PITR</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Techniques and best practices</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/best-practices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/best-practices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/best-practices" ><span class="devsite-nav-text" tooltip>Best practices for Cloud Firestore</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/solutions/swift-codable-data-mapping" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/solutions/swift-codable-data-mapping" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/solutions/swift-codable-data-mapping" ><span class="devsite-nav-text" tooltip>Map data with Swift Codable</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/understand-reads-writes-scale" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/understand-reads-writes-scale" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/understand-reads-writes-scale" ><span class="devsite-nav-text" tooltip>Understand reads and writes at scale</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/real-time_queries_at_scale" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/real-time_queries_at_scale" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/real-time_queries_at_scale" ><span class="devsite-nav-text" tooltip>Understand real-time queries at scale</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Cloud Firestore integrations</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/use-rest-api" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/use-rest-api" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/use-rest-api" ><span class="devsite-nav-text" tooltip>Use the Cloud Firestore REST API</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/firestore-for-rtdb" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/firestore-for-rtdb" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/firestore-for-rtdb" ><span class="devsite-nav-text" tooltip>Use Cloud Firestore and Realtime Database</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/extend-with-functions-2nd-gen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/extend-with-functions-2nd-gen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/extend-with-functions-2nd-gen" ><span class="devsite-nav-text" tooltip>Extend with Cloud Functions for Firebase (2nd gen)</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/extend-with-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/extend-with-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/extend-with-functions" ><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/library-integrations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/library-integrations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/library-integrations" ><span class="devsite-nav-text" tooltip>Third-party library integrations</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>API reference</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/reference/android/com/google/firebase/firestore/package-summary" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/android/com/google/firebase/firestore/package-summary" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/android/com/google/firebase/firestore/package-summary" ><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/swift/firebasefirestore/api/reference/Classes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/swift/firebasefirestore/api/reference/Classes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/swift/firebasefirestore/api/reference/Classes" ><span class="devsite-nav-text" tooltip>Swift</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/ios/firebasefirestore/api/reference/Classes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/ios/firebasefirestore/api/reference/Classes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/ios/firebasefirestore/api/reference/Classes" ><span class="devsite-nav-text" tooltip>Objective-C</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/js/firestore_" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/js/firestore_" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/js/firestore_" ><span class="devsite-nav-text" tooltip>Web</span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="https://pub.dev/documentation/cloud_firestore/latest/" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://pub.dev/documentation/cloud_firestore/latest/" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://pub.dev/documentation/cloud_firestore/latest/" ><span class="devsite-nav-text" tooltip>Flutter</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/reference/functions/firebase-functions.firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/functions/firebase-functions.firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/functions/firebase-functions.firestore" ><span class="devsite-nav-text" tooltip>Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="//googleapis.dev/nodejs/firestore/latest/" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //googleapis.dev/nodejs/firestore/latest/" track-type="bookNav" track-name="click" track-metadata-eventdetail="//googleapis.dev/nodejs/firestore/latest/" ><span class="devsite-nav-text" tooltip>Node.js</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/admin/java/reference/com/google/firebase/cloud/FirestoreClient" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/admin/java/reference/com/google/firebase/cloud/FirestoreClient" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/admin/java/reference/com/google/firebase/cloud/FirestoreClient" ><span class="devsite-nav-text" tooltip>Java</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/admin/python/firebase_admin.firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/admin/python/firebase_admin.firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/admin/python/firebase_admin.firestore" ><span class="devsite-nav-text" tooltip>Python</span></a></li><li class="devsite-nav-item"><a href="//godoc.org/cloud.google.com/go/firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //godoc.org/cloud.google.com/go/firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="//godoc.org/cloud.google.com/go/firestore" ><span class="devsite-nav-text" tooltip>Go</span></a></li><li class="devsite-nav-item"><a href="//googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Firestore/" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Firestore/" track-type="bookNav" track-name="click" track-metadata-eventdetail="//googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Firestore/" ><span class="devsite-nav-text" tooltip>C#</span></a></li><li class="devsite-nav-item"><a href="//googleapis.github.io/google-cloud-php/#/docs/cloud-firestore/latest/firestore/readme" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //googleapis.github.io/google-cloud-php/#/docs/cloud-firestore/latest/firestore/readme" track-type="bookNav" track-name="click" track-metadata-eventdetail="//googleapis.github.io/google-cloud-php/#/docs/cloud-firestore/latest/firestore/readme" ><span class="devsite-nav-text" tooltip>PHP</span></a></li><li class="devsite-nav-item"><a href="//googleapis.github.io/google-cloud-ruby/docs/google-cloud-firestore/latest/Google/Firestore/V1beta1" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //googleapis.github.io/google-cloud-ruby/docs/google-cloud-firestore/latest/Google/Firestore/V1beta1" track-type="bookNav" track-name="click" track-metadata-eventdetail="//googleapis.github.io/google-cloud-ruby/docs/google-cloud-firestore/latest/Google/Firestore/V1beta1" ><span class="devsite-nav-text" tooltip>Ruby</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/cpp/namespace/firebase/firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/cpp/namespace/firebase/firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/cpp/namespace/firebase/firestore" ><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/unity/namespace/firebase/firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/unity/namespace/firebase/firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/unity/namespace/firebase/firestore" ><span class="devsite-nav-text" tooltip>Unity</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/reference/rest" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/reference/rest" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/reference/rest" ><span class="devsite-nav-text" tooltip>REST</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/reference/rpc" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/reference/rpc" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/reference/rpc" ><span class="devsite-nav-text" tooltip>RPC</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Samples</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/firestore/client/samples-ios" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/client/samples-ios" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/client/samples-ios" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/client/samples-android" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/client/samples-android" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/client/samples-android" ><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/docs/firestore/client/samples-web" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/firestore/client/samples-web" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/firestore/client/samples-web" ><span class="devsite-nav-text" tooltip>Web</span></a></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Realtime Database</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/database/rtdb-vs-firestore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rtdb-vs-firestore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rtdb-vs-firestore" ><span class="devsite-nav-text" tooltip>Choose a Database</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>iOS+</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/ios/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/ios/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/ios/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/ios/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/ios/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/ios/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/ios/read-and-write" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/ios/read-and-write" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/ios/read-and-write" ><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/ios/lists-of-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/ios/lists-of-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/ios/lists-of-data" ><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/ios/offline-capabilities" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/ios/offline-capabilities" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/ios/offline-capabilities" ><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Android</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/android/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/android/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/android/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/android/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/android/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/android/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/android/read-and-write" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/android/read-and-write" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/android/read-and-write" ><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/android/lists-of-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/android/lists-of-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/android/lists-of-data" ><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/android/offline-capabilities" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/android/offline-capabilities" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/android/offline-capabilities" ><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Web</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/web/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/web/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/web/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/web/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/web/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/web/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/web/read-and-write" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/web/read-and-write" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/web/read-and-write" ><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/web/lists-of-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/web/lists-of-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/web/lists-of-data" ><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/web/offline-capabilities" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/web/offline-capabilities" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/web/offline-capabilities" ><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Flutter</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/flutter/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/flutter/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/flutter/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/flutter/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/flutter/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/flutter/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/flutter/read-and-write" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/flutter/read-and-write" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/flutter/read-and-write" ><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/flutter/lists-of-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/flutter/lists-of-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/flutter/lists-of-data" ><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/flutter/offline-capabilities" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/flutter/offline-capabilities" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/flutter/offline-capabilities" ><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Admin</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/admin/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/admin/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/admin/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/admin/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/admin/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/admin/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/admin/save-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/admin/save-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/admin/save-data" ><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/admin/retrieve-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/admin/retrieve-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/admin/retrieve-data" ><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>REST</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/rest/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rest/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rest/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/rest/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rest/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rest/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/rest/save-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rest/save-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rest/save-data" ><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/rest/retrieve-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rest/retrieve-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rest/retrieve-data" ><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/rest/auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rest/auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rest/auth" ><span class="devsite-nav-text" tooltip>Authenticate REST Requests</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>C++</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/cpp/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/cpp/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/cpp/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/cpp/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/cpp/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/cpp/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/cpp/save-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/cpp/save-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/cpp/save-data" ><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/cpp/retrieve-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/cpp/retrieve-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/cpp/retrieve-data" ><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Unity</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/unity/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/unity/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/unity/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/unity/structure-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/unity/structure-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/unity/structure-data" ><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/unity/save-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/unity/save-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/unity/save-data" ><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/unity/retrieve-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/unity/retrieve-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/unity/retrieve-data" ><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Security & Rules</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/security" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/security" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/security" ><span class="devsite-nav-text" tooltip>Understand Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/database/security/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/security/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/security/get-started" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/database/security/core-syntax" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/security/core-syntax" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/security/core-syntax" ><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/database/security/rules-conditions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/security/rules-conditions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/security/rules-conditions" ><span class="devsite-nav-text" tooltip>Write Conditions for Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/database/security/indexing-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/security/indexing-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/security/indexing-data" ><span class="devsite-nav-text" tooltip>Index Data</span></a></li><li class="devsite-nav-item"><a href="/docs/database/rest/app-management" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/rest/app-management" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/rest/app-management" ><span class="devsite-nav-text" tooltip>Manage Rules via REST</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Usage and Performance</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/database/usage/billing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/billing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/billing" ><span class="devsite-nav-text" tooltip>Understand Billing</span></a></li><li class="devsite-nav-item"><a href="/docs/database/usage/limits" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/limits" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/limits" ><span class="devsite-nav-text" tooltip>Realtime Database Limits</span></a></li><li class="devsite-nav-item"><a href="/docs/database/usage/monitor-usage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/monitor-usage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/monitor-usage" ><span class="devsite-nav-text" tooltip>Monitor Database Usage</span></a></li><li class="devsite-nav-item"><a href="/docs/database/usage/monitor-performance" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/monitor-performance" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/monitor-performance" ><span class="devsite-nav-text" tooltip>Monitor Database Performance</span></a></li><li class="devsite-nav-item"><a href="/docs/database/usage/sharding" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/sharding" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/sharding" ><span class="devsite-nav-text" tooltip>Scale with Multiple Databases</span></a></li><li class="devsite-nav-item"><a href="/docs/database/usage/profile" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/profile" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/profile" ><span class="devsite-nav-text" tooltip>Profile Your Database</span></a></li><li class="devsite-nav-item"><a href="/docs/database/usage/optimize" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/usage/optimize" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/usage/optimize" ><span class="devsite-nav-text" tooltip>Optimize Database Performance</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/database/locations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/locations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/locations" ><span class="devsite-nav-text" tooltip>Locations</span></a></li><li class="devsite-nav-item"><a href="/docs/database/backups" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/backups" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/backups" ><span class="devsite-nav-text" tooltip>Automated Backups</span></a></li><li class="devsite-nav-item"><a href="/docs/database/extend-with-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/extend-with-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/extend-with-functions" ><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/docs/database/video-series" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/database/video-series" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/database/video-series" ><span class="devsite-nav-text" tooltip>Video series: Firebase for SQL Developers</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Storage</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>iOS+</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/ios/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/create-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/create-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/create-reference" ><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/upload-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/upload-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/upload-files" ><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/download-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/download-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/download-files" ><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/file-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/file-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/file-metadata" ><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/delete-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/delete-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/delete-files" ><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/list-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/list-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/list-files" ><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/ios/handle-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/ios/handle-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/ios/handle-errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Android</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/android/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/create-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/create-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/create-reference" ><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/upload-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/upload-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/upload-files" ><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/download-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/download-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/download-files" ><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/file-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/file-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/file-metadata" ><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/delete-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/delete-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/delete-files" ><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/list-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/list-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/list-files" ><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/android/handle-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/android/handle-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/android/handle-errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Web</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/web/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/create-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/create-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/create-reference" ><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/upload-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/upload-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/upload-files" ><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/download-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/download-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/download-files" ><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/file-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/file-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/file-metadata" ><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/delete-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/delete-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/delete-files" ><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/list-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/list-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/list-files" ><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/web/handle-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/web/handle-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/web/handle-errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Flutter</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/flutter/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/create-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/create-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/create-reference" ><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/upload-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/upload-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/upload-files" ><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/download-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/download-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/download-files" ><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/file-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/file-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/file-metadata" ><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/delete-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/delete-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/delete-files" ><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/list-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/list-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/list-files" ><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/flutter/handle-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/flutter/handle-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/flutter/handle-errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Admin</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/admin/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/admin/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/admin/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>C++</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/cpp/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/cpp/create-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/create-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/create-reference" ><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/cpp/upload-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/upload-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/upload-files" ><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/cpp/download-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/download-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/download-files" ><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/cpp/file-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/file-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/file-metadata" ><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/cpp/delete-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/delete-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/delete-files" ><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/cpp/handle-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/cpp/handle-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/cpp/handle-errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Unity</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/unity/start" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/start" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/start" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/unity/create-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/create-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/create-reference" ><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/unity/upload-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/upload-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/upload-files" ><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/unity/download-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/download-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/download-files" ><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/unity/file-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/file-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/file-metadata" ><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/unity/delete-files" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/delete-files" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/delete-files" ><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/unity/handle-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/unity/handle-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/unity/handle-errors" ><span class="devsite-nav-text" tooltip>Handle Errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Security & Rules</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/storage/security" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/security" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/security" ><span class="devsite-nav-text" tooltip>Understand Security</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/security/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/security/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/security/get-started" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/security/core-syntax" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/security/core-syntax" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/security/core-syntax" ><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/security/rules-conditions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/security/rules-conditions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/security/rules-conditions" ><span class="devsite-nav-text" tooltip>Write Conditions for Security Rules</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/storage/locations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/locations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/locations" ><span class="devsite-nav-text" tooltip>Locations</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/monitor-storage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/monitor-storage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/monitor-storage" ><span class="devsite-nav-text" tooltip>Monitor activity</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/extend-with-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/extend-with-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/extend-with-functions" ><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/gcp-integration" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/gcp-integration" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/gcp-integration" ><span class="devsite-nav-text" tooltip>Integrate with Google Cloud</span></a></li><li class="devsite-nav-item"><a href="/docs/storage/faqs-storage-changes-announced-sept-2024" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/storage/faqs-storage-changes-announced-sept-2024" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/storage/faqs-storage-changes-announced-sept-2024" ><span class="devsite-nav-text" tooltip>FAQs about pricing plan changes</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Security Rules</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/rules" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/get-started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Understand Security Rules</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/rules/rules-language" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/rules-language" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/rules-language" ><span class="devsite-nav-text" tooltip>Security Rules language</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/rules-behavior" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/rules-behavior" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/rules-behavior" ><span class="devsite-nav-text" tooltip>How Security Rules work</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/rules-and-auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/rules-and-auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/rules-and-auth" ><span class="devsite-nav-text" tooltip>Security Rules and Firebase Authentication</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Write Security Rules</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/rules/basics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/basics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/basics" ><span class="devsite-nav-text" tooltip>Basic Security Rules</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/insecure-rules" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/insecure-rules" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/insecure-rules" ><span class="devsite-nav-text" tooltip>Avoid insecure rules</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/data-validation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/data-validation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/data-validation" ><span class="devsite-nav-text" tooltip>Data validation</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Test Security Rules</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/rules/emulator-setup" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/emulator-setup" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/emulator-setup" ><span class="devsite-nav-text" tooltip>Set up the emulator</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/unit-tests" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/unit-tests" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/unit-tests" ><span class="devsite-nav-text" tooltip>Build unit tests</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/emulator-reports" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/emulator-reports" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/emulator-reports" ><span class="devsite-nav-text" tooltip>Generate test reports</span></a></li><li class="devsite-nav-item"><a href="/docs/rules/simulator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/simulator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/simulator" ><span class="devsite-nav-text" tooltip>Quickly validate Security Rules</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/rules/manage-deploy" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/rules/manage-deploy" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/rules/manage-deploy" ><span class="devsite-nav-text" tooltip>Manage and deploy Security Rules</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>App Hosting</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/app-hosting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Discover</span> </div></li><li class="devsite-nav-item"><a href="/docs/app-hosting/about-app-hosting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/about-app-hosting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/about-app-hosting" ><span class="devsite-nav-text" tooltip>How App Hosting works</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/build" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/build" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/build" ><span class="devsite-nav-text" tooltip>The App Hosting build process</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/costs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/costs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/costs" ><span class="devsite-nav-text" tooltip>App Hosting costs</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/product-comparison" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/product-comparison" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/product-comparison" ><span class="devsite-nav-text" tooltip>Related serverless solutions</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Get started</span> </div></li><li class="devsite-nav-item"><a href="/docs/app-hosting/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/get-started" ><span class="devsite-nav-text" tooltip>Deploy a basic app</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/multiple-environments" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/multiple-environments" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/multiple-environments" ><span class="devsite-nav-text" tooltip>Deploy multiple environments</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/monorepos" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/monorepos" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/monorepos" ><span class="devsite-nav-text" tooltip>Deploy a monorepo app</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Develop</span> </div></li><li class="devsite-nav-item"><a href="/docs/app-hosting/configure" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/configure" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/configure" ><span class="devsite-nav-text" tooltip>Configure and manage backends</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/custom-domain" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/custom-domain" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/custom-domain" ><span class="devsite-nav-text" tooltip>Connect a custom domain</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/apphosting/rest" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/apphosting/rest" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/apphosting/rest" ><span class="devsite-nav-text" tooltip>API Reference</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Monitor, log and debug</span> </div></li><li class="devsite-nav-item"><a href="/docs/app-hosting/rollouts" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/rollouts" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/rollouts" ><span class="devsite-nav-text" tooltip>Manage rollouts and releases</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/emulate" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/emulate" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/emulate" ><span class="devsite-nav-text" tooltip>Test your app locally</span></a></li><li class="devsite-nav-item"><a href="/docs/app-hosting/logging" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/app-hosting/logging" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/app-hosting/logging" ><span class="devsite-nav-text" tooltip>Write and view logs</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Hosting</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/hosting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/use-cases" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/use-cases" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/use-cases" ><span class="devsite-nav-text" tooltip>Explore use cases</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/quickstart" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/quickstart" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/quickstart" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/hosting/test-preview-deploy" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/test-preview-deploy" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/test-preview-deploy" ><span class="devsite-nav-text" tooltip>Test, preview, then deploy</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/hosting/github-integration" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/github-integration" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/github-integration" ><span class="devsite-nav-text" tooltip>Deploy via GitHub pull requests</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/multisites" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/multisites" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/multisites" ><span class="devsite-nav-text" tooltip>Share project resources across multiple sites</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/custom-domain" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/custom-domain" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/custom-domain" ><span class="devsite-nav-text" tooltip>Connect a custom domain</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/full-config" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/full-config" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/full-config" ><span class="devsite-nav-text" tooltip>Configure hosting behavior</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/i18n-rewrites" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/i18n-rewrites" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/i18n-rewrites" ><span class="devsite-nav-text" tooltip>Configure i18n rewrites</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/reserved-urls" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/reserved-urls" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/reserved-urls" ><span class="devsite-nav-text" tooltip>Add SDKs using reserved URLs</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Serve dynamic content and host microservices</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/hosting/serverless-overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/serverless-overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/serverless-overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/functions" ><span class="devsite-nav-text" tooltip>Use Cloud Functions for Firebase</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/cloud-run" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/cloud-run" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/cloud-run" ><span class="devsite-nav-text" tooltip>Use Cloud Run</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/manage-cache" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/manage-cache" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/manage-cache" ><span class="devsite-nav-text" tooltip>Manage cache behavior</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable devsite-nav-beta"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Integrate web frameworks</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/hosting/frameworks/frameworks-overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/frameworks/frameworks-overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/frameworks/frameworks-overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/frameworks/angular" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/frameworks/angular" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/frameworks/angular" ><span class="devsite-nav-text" tooltip>Integrate Angular Universal</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/frameworks/nextjs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/frameworks/nextjs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/frameworks/nextjs" ><span class="devsite-nav-text" tooltip>Integrate Next.js</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/frameworks/flutter" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/frameworks/flutter" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/frameworks/flutter" ><span class="devsite-nav-text" tooltip>Integrate Flutter</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/frameworks/express" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/frameworks/express" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/frameworks/express" ><span class="devsite-nav-text" tooltip>Integrate other frameworks with Express.js</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/hosting/manage-hosting-resources" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/manage-hosting-resources" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/manage-hosting-resources" ><span class="devsite-nav-text" tooltip>Manage live & preview channels, releases, and versions</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/hosting/web-request-logs-and-metrics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/web-request-logs-and-metrics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/web-request-logs-and-metrics" ><span class="devsite-nav-text" tooltip>Monitor web request data with Cloud Logging</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/usage-quotas-pricing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/usage-quotas-pricing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/usage-quotas-pricing" ><span class="devsite-nav-text" tooltip>Usage, quotas, and pricing</span></a></li><li class="devsite-nav-item"><a href="/docs/hosting/api-deploy" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/hosting/api-deploy" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/hosting/api-deploy" ><span class="devsite-nav-text" tooltip>Deploy using the REST API</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Cloud Functions</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/version-comparison" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/version-comparison" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/version-comparison" ><span class="devsite-nav-text" tooltip>1st and 2nd gen version comparison</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/use-cases" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/use-cases" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/use-cases" ><span class="devsite-nav-text" tooltip>Explore use cases</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/get-started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/2nd-gen-upgrade" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/2nd-gen-upgrade" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/2nd-gen-upgrade" ><span class="devsite-nav-text" tooltip>Upgrade to 2nd gen</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Call functions directly</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/functions/callable" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/callable" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/callable" ><span class="devsite-nav-text" tooltip>Call functions from your app</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/http-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/http-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/http-events" ><span class="devsite-nav-text" tooltip>Call functions via HTTP requests</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/task-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/task-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/task-functions" ><span class="devsite-nav-text" tooltip>Enqueue functions with Cloud Tasks</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/schedule-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/schedule-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/schedule-functions" ><span class="devsite-nav-text" tooltip>Run functions on a schedule</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Trigger background functions</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/functions/alert-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/alert-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/alert-events" ><span class="devsite-nav-text" tooltip>Firebase Alert triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/custom-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/custom-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/custom-events" ><span class="devsite-nav-text" tooltip>Custom event/extension triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/auth-blocking-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/auth-blocking-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/auth-blocking-events" ><span class="devsite-nav-text" tooltip>Blocking Auth triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/auth-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/auth-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/auth-events" ><span class="devsite-nav-text" tooltip>Authentication triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/analytics-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/analytics-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/analytics-events" ><span class="devsite-nav-text" tooltip>Analytics triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/firestore-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/firestore-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/firestore-events" ><span class="devsite-nav-text" tooltip>Cloud Firestore triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/database-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/database-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/database-events" ><span class="devsite-nav-text" tooltip>Realtime Database triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/rc-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/rc-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/rc-events" ><span class="devsite-nav-text" tooltip>Remote Config triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/gcp-storage-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/gcp-storage-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/gcp-storage-events" ><span class="devsite-nav-text" tooltip>Cloud Storage triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/pubsub-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/pubsub-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/pubsub-events" ><span class="devsite-nav-text" tooltip>Pub/Sub triggers</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/test-lab-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/test-lab-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/test-lab-events" ><span class="devsite-nav-text" tooltip>Test Lab triggers</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Write functions</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/functions/manage-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/manage-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/manage-functions" ><span class="devsite-nav-text" tooltip>Manage deployment and runtime options</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/typescript" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/typescript" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/typescript" ><span class="devsite-nav-text" tooltip>Write functions in TypeScript</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/terminate-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/terminate-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/terminate-functions" ><span class="devsite-nav-text" tooltip>Sync, async, and promises</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/retries" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/retries" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/retries" ><span class="devsite-nav-text" tooltip>Retry asynchronous functions</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/config-env" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/config-env" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/config-env" ><span class="devsite-nav-text" tooltip>Configure your environment</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/organize-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/organize-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/organize-functions" ><span class="devsite-nav-text" tooltip>Organize functions</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/handle-dependencies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/handle-dependencies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/handle-dependencies" ><span class="devsite-nav-text" tooltip>Handling dependencies</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/networking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/networking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/networking" ><span class="devsite-nav-text" tooltip>Optimizing networking</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/tips" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/tips" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/tips" ><span class="devsite-nav-text" tooltip>Tips & tricks</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Test functions</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/functions/local-emulator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/local-emulator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/local-emulator" ><span class="devsite-nav-text" tooltip>Run functions locally</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/unit-testing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/unit-testing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/unit-testing" ><span class="devsite-nav-text" tooltip>Unit testing functions</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/local-shell" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/local-shell" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/local-shell" ><span class="devsite-nav-text" tooltip>Test functions interactively</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Monitor functions</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/functions/writing-and-viewing-logs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/writing-and-viewing-logs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/writing-and-viewing-logs" ><span class="devsite-nav-text" tooltip>Write and view logs</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/reporting-errors" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/reporting-errors" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/reporting-errors" ><span class="devsite-nav-text" tooltip>Report errors</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>API Reference</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/reference/functions/2nd-gen/node/firebase-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/functions/2nd-gen/node/firebase-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/functions/2nd-gen/node/firebase-functions" ><span class="devsite-nav-text" tooltip>Node.js 2nd gen</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/functions/firebase-functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/functions/firebase-functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/functions/firebase-functions" ><span class="devsite-nav-text" tooltip>Node.js 1st gen</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/functions/test/test" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/functions/test/test" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/functions/test/test" ><span class="devsite-nav-text" tooltip>Node.js Test SDK</span></a></li><li class="devsite-nav-item"><a href="/docs/reference/functions/2nd-gen/python" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/reference/functions/2nd-gen/python" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/reference/functions/2nd-gen/python" ><span class="devsite-nav-text" tooltip>Python</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/callable-reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/callable-reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/callable-reference" ><span class="devsite-nav-text" tooltip>Protocol specification for https.onCall</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/functions/functions-and-firebase" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/functions-and-firebase" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/functions-and-firebase" ><span class="devsite-nav-text" tooltip>Cloud Run functions and Firebase</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/locations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/locations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/locations" ><span class="devsite-nav-text" tooltip>Cloud Functions locations</span></a></li><li class="devsite-nav-item"><a href="/docs/functions/quotas" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/functions/quotas" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/functions/quotas" ><span class="devsite-nav-text" tooltip>Quotas and limits</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Extensions</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/extensions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/samples" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/samples" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/samples" ><span class="devsite-nav-text" tooltip>Use case examples</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Use an extension in your project</span> </div></li><li class="devsite-nav-item"><a href="/docs/extensions/overview-use-extensions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/overview-use-extensions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/overview-use-extensions" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/install-extensions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/install-extensions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/install-extensions" ><span class="devsite-nav-text" tooltip>Install an extension</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/manage-installed-extensions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/manage-installed-extensions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/manage-installed-extensions" ><span class="devsite-nav-text" tooltip>Manage installed extensions</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/permissions-granted-to-extension" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/permissions-granted-to-extension" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/permissions-granted-to-extension" ><span class="devsite-nav-text" tooltip>Permissions granted to an extension</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/manifest" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/manifest" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/manifest" ><span class="devsite-nav-text" tooltip>Manage configurations with manifests</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Extensions by Firebase</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Trigger Email</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/extensions/official/firestore-send-email" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/official/firestore-send-email" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/official/firestore-send-email" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/official/firestore-send-email/templates" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/official/firestore-send-email/templates" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/official/firestore-send-email/templates" ><span class="devsite-nav-text" tooltip>Use Handlebars templates</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/official/firestore-send-email/delivery-status" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/official/firestore-send-email/delivery-status" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/official/firestore-send-email/delivery-status" ><span class="devsite-nav-text" tooltip>Manage delivery status</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Delete User Data</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/extensions/official/delete-user-data" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/official/delete-user-data" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/official/delete-user-data" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Firestore Bundle Builder</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/extensions/official/firestore-bundle-builder" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/official/firestore-bundle-builder" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/official/firestore-bundle-builder" ><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/official/firestore-bundle-builder/reference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/official/firestore-bundle-builder/reference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/official/firestore-bundle-builder/reference" ><span class="devsite-nav-text" tooltip>Reference</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-external"><a href="https://github.com/firebase/extensions/tree/master/storage-resize-images#resize-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://github.com/firebase/extensions/tree/master/storage-resize-images#resize-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://github.com/firebase/extensions/tree/master/storage-resize-images#resize-images" ><span class="devsite-nav-text" tooltip>Resize Images</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="https://github.com/firebase/extensions/tree/master/firestore-bigquery-export#export-collections-to-bigquery" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://github.com/firebase/extensions/tree/master/firestore-bigquery-export#export-collections-to-bigquery" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://github.com/firebase/extensions/tree/master/firestore-bigquery-export#export-collections-to-bigquery" ><span class="devsite-nav-text" tooltip>Export Collections to BigQuery</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="https://github.com/firebase/extensions/tree/master/firestore-translate-text#translate-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://github.com/firebase/extensions/tree/master/firestore-translate-text#translate-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://github.com/firebase/extensions/tree/master/firestore-translate-text#translate-text" ><span class="devsite-nav-text" tooltip>Translate Text</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="https://github.com/firebase/extensions/tree/master/firestore-counter#distributed-counter" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://github.com/firebase/extensions/tree/master/firestore-counter#distributed-counter" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://github.com/firebase/extensions/tree/master/firestore-counter#distributed-counter" ><span class="devsite-nav-text" tooltip>Distributed Counter</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="https://github.com/firebase/extensions/tree/master/firestore-shorten-urls-bitly#shorten-urls" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://github.com/firebase/extensions/tree/master/firestore-shorten-urls-bitly#shorten-urls" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://github.com/firebase/extensions/tree/master/firestore-shorten-urls-bitly#shorten-urls" ><span class="devsite-nav-text" tooltip>Shorten URLs</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="https://github.com/firebase/extensions/tree/master/rtdb-limit-child-nodes#limit-child-nodes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://github.com/firebase/extensions/tree/master/rtdb-limit-child-nodes#limit-child-nodes" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://github.com/firebase/extensions/tree/master/rtdb-limit-child-nodes#limit-child-nodes" ><span class="devsite-nav-text" tooltip>Limit Child Nodes</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Build & publish extensions</span> </div></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/get-started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/functions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/functions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/functions" ><span class="devsite-nav-text" tooltip>Write functions</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/parameters" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/parameters" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/parameters" ><span class="devsite-nav-text" tooltip>Set up parameters</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/lifecycle-events" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/lifecycle-events" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/lifecycle-events" ><span class="devsite-nav-text" tooltip>Handle lifecycle events</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/user-hooks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/user-hooks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/user-hooks" ><span class="devsite-nav-text" tooltip>Add user hooks</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/access" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/access" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/access" ><span class="devsite-nav-text" tooltip>Set up appropriate access</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/user-documentation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/user-documentation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/user-documentation" ><span class="devsite-nav-text" tooltip>Create user documentation</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/register" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/register" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/register" ><span class="devsite-nav-text" tooltip>Register as a publisher</span></a></li><li class="devsite-nav-item"><a href="/docs/extensions/publishers/upload-and-publish" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/publishers/upload-and-publish" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/publishers/upload-and-publish" ><span class="devsite-nav-text" tooltip>Publish an extension</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/extensions/reference/extension-yaml" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/extensions/reference/extension-yaml" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/extensions/reference/extension-yaml" ><span class="devsite-nav-text" tooltip>Reference for extension.yaml</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/terms/extensions/publisher" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /terms/extensions/publisher" track-type="bookNav" track-name="click" track-metadata-eventdetail="/terms/extensions/publisher" ><span class="devsite-nav-text" tooltip>Firebase Extensions Publisher Agreement</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>BUILD WITH AI</span> </div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Vertex AI in Firebase (Gemini API)</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/vertex-ai" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/get-started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Learn about the models & API</span> </div></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/gemini-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/gemini-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/gemini-models" ><span class="devsite-nav-text" tooltip>Gemini models</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/gemini-api" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/gemini-api" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/gemini-api" ><span class="devsite-nav-text" tooltip>Gemini API</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/input-file-requirements" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/input-file-requirements" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/input-file-requirements" ><span class="devsite-nav-text" tooltip>Supported file types & requirements</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Use capabilities of the SDKs</span> </div></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/text-gen-from-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/text-gen-from-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/text-gen-from-text" ><span class="devsite-nav-text" tooltip>Generate text (text-only input)</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/text-gen-from-multimodal" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/text-gen-from-multimodal" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/text-gen-from-multimodal" ><span class="devsite-nav-text" tooltip>Generate text (multimodal input)</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/structured-output" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/structured-output" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/structured-output" ><span class="devsite-nav-text" tooltip>Generate structured output (JSON)</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/chat" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/chat" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/chat" ><span class="devsite-nav-text" tooltip>Multi-turn chat</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/function-calling" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/function-calling" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/function-calling" ><span class="devsite-nav-text" tooltip>Function calling</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/count-tokens" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/count-tokens" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/count-tokens" ><span class="devsite-nav-text" tooltip>Count tokens & billable characters</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/ref-docs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/ref-docs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/ref-docs" ><span class="devsite-nav-text" tooltip>SDK reference docs</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Control content generation</span> </div></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/control-content-gen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/control-content-gen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/control-content-gen" ><span class="devsite-nav-text" tooltip>Overview of options</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/prompt-design" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/prompt-design" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/prompt-design" ><span class="devsite-nav-text" tooltip>Understand prompt design</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/model-parameters" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/model-parameters" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/model-parameters" ><span class="devsite-nav-text" tooltip>Configure model parameters</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/safety-settings" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/safety-settings" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/safety-settings" ><span class="devsite-nav-text" tooltip>Use safety settings</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/system-instructions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/system-instructions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/system-instructions" ><span class="devsite-nav-text" tooltip>Set system instructions</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Get ready for production</span> </div></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/production-checklist" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/production-checklist" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/production-checklist" ><span class="devsite-nav-text" tooltip>Production checklist</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/app-check" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/app-check" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/app-check" ><span class="devsite-nav-text" tooltip>Prevent API abuse with App Check</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/locations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/locations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/locations" ><span class="devsite-nav-text" tooltip>Set a location</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/monitoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/monitoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/monitoring" ><span class="devsite-nav-text" tooltip>Monitor costs, usage, & metrics</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/pricing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/pricing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/pricing" ><span class="devsite-nav-text" tooltip>Understand pricing</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/quotas" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/quotas" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/quotas" ><span class="devsite-nav-text" tooltip>Understand quotas</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Solutions</span> </div></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/solutions/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/solutions/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/solutions/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/solutions/cloud-storage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/solutions/cloud-storage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/solutions/cloud-storage" ><span class="devsite-nav-text" tooltip>Include large files in requests with Cloud Storage</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/solutions/remote-config" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/solutions/remote-config" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/solutions/remote-config" ><span class="devsite-nav-text" tooltip>Dynamically update your app with Remote Config</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Additional information</span> </div></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/migrate-to-vertex-ai" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/migrate-to-vertex-ai" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/migrate-to-vertex-ai" ><span class="devsite-nav-text" tooltip>Migrate from Google AI to Vertex AI</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/migrate-to-ga" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/migrate-to-ga" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/migrate-to-ga" ><span class="devsite-nav-text" tooltip>Migrate to GA version of Vertex AI in Firebase</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/faq-and-troubleshooting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/faq-and-troubleshooting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/faq-and-troubleshooting" ><span class="devsite-nav-text" tooltip>FAQ and troubleshooting</span></a></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/data-governance" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/data-governance" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/data-governance" ><span class="devsite-nav-text" tooltip>Data governance</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/vertex-ai/feedback" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/vertex-ai/feedback" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/vertex-ai/feedback" ><span class="devsite-nav-text" tooltip>Give feedback</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Genkit</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/genkit" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/get-started" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/devtools" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/devtools" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/devtools" ><span class="devsite-nav-text" tooltip>Developer tools</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Building AI workflows</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit/models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/models" ><span class="devsite-nav-text" tooltip>Generating content</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/flows" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/flows" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/flows" ><span class="devsite-nav-text" tooltip>Creating flows</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/dotprompt" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/dotprompt" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/dotprompt" ><span class="devsite-nav-text" tooltip>Managing prompts with Dotprompt</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/chat" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/chat" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/chat" ><span class="devsite-nav-text" tooltip>Persistent chat sessions</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/tool-calling" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/tool-calling" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/tool-calling" ><span class="devsite-nav-text" tooltip>Tool calling</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/rag" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/rag" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/rag" ><span class="devsite-nav-text" tooltip>Retrieval-augmented generation (RAG)</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/multi-agent" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/multi-agent" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/multi-agent" ><span class="devsite-nav-text" tooltip>Multi-agent systems</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/evaluation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/evaluation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/evaluation" ><span class="devsite-nav-text" tooltip>Evaluation</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/monitoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/monitoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/monitoring" ><span class="devsite-nav-text" tooltip>Observability & monitoring</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Deploying AI workflows</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit/firebase" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/firebase" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/firebase" ><span class="devsite-nav-text" tooltip>Deploy with Firebase</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/cloud-run" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/cloud-run" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/cloud-run" ><span class="devsite-nav-text" tooltip>Deploy with Cloud Run</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/deploy-node" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/deploy-node" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/deploy-node" ><span class="devsite-nav-text" tooltip>Deploy to any Node.js platform</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/auth" ><span class="devsite-nav-text" tooltip>Authorization and integrity</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Writing plugins</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit/plugin-authoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugin-authoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugin-authoring" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugin-authoring-evaluator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugin-authoring-evaluator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugin-authoring-evaluator" ><span class="devsite-nav-text" tooltip>Writing an Evaluator Plugin</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Official plugins</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/google-genai" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/google-genai" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/google-genai" ><span class="devsite-nav-text" tooltip>Google AI for Developers</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/vertex-ai" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/vertex-ai" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/vertex-ai" ><span class="devsite-nav-text" tooltip>Google Cloud Vertex AI</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/ollama" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/ollama" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/ollama" ><span class="devsite-nav-text" tooltip>Ollama</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/chroma" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/chroma" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/chroma" ><span class="devsite-nav-text" tooltip>Chroma DB</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/pinecone" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/pinecone" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/pinecone" ><span class="devsite-nav-text" tooltip>Pinecone</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/templates/pgvector" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/templates/pgvector" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/templates/pgvector" ><span class="devsite-nav-text" tooltip>pgvector (code template)</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/firebase" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/firebase" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/firebase" ><span class="devsite-nav-text" tooltip>Firebase</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit/plugins/google-cloud" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/plugins/google-cloud" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/plugins/google-cloud" ><span class="devsite-nav-text" tooltip>Google Cloud</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/genkit/nextjs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/nextjs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/nextjs" ><span class="devsite-nav-text" tooltip>Using Genkit with Next.js</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/genkit/migrating-from-0.5" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/migrating-from-0.5" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/migrating-from-0.5" ><span class="devsite-nav-text" tooltip>Migrate from Genkit 0.5</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/docs/genkit/feedback" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit/feedback" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit/feedback" ><span class="devsite-nav-text" tooltip>Connect with us</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-alpha"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Genkit (Go alpha)</span><span class="devsite-nav-icon material-icons" data-icon="alpha" data-title="Alpha" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/genkit-go/get-started-go" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/get-started-go" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/get-started-go" ><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Building AI workflows</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit-go/models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/models" ><span class="devsite-nav-text" tooltip>Generating content</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/flows" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/flows" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/flows" ><span class="devsite-nav-text" tooltip>Creating flows</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/auth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/auth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/auth" ><span class="devsite-nav-text" tooltip>Adding authentication to flows</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/prompts" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/prompts" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/prompts" ><span class="devsite-nav-text" tooltip>Prompting models</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/dotprompt" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/dotprompt" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/dotprompt" ><span class="devsite-nav-text" tooltip>Managing prompts</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/rag" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/rag" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/rag" ><span class="devsite-nav-text" tooltip>Retrieval-augmented generation (RAG)</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/monitoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/monitoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/monitoring" ><span class="devsite-nav-text" tooltip>Observability & monitoring</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Deploying AI workflows</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit-go/cloud-run" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/cloud-run" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/cloud-run" ><span class="devsite-nav-text" tooltip>Deploy with Cloud Run</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/deploy" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/deploy" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/deploy" ><span class="devsite-nav-text" tooltip>Deploy with any hosting service</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Writing plugins</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugin-authoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugin-authoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugin-authoring" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugin-authoring-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugin-authoring-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugin-authoring-models" ><span class="devsite-nav-text" tooltip>Writing a model plugin</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugin-authoring-telemetry" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugin-authoring-telemetry" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugin-authoring-telemetry" ><span class="devsite-nav-text" tooltip>Writing a telemetry plugin</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Official plugins</span> </div></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugins/google-genai" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugins/google-genai" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugins/google-genai" ><span class="devsite-nav-text" tooltip>Google AI for Developers</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugins/vertex-ai" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugins/vertex-ai" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugins/vertex-ai" ><span class="devsite-nav-text" tooltip>Google Cloud Vertex AI</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugins/ollama" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugins/ollama" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugins/ollama" ><span class="devsite-nav-text" tooltip>Ollama</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugins/pinecone" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugins/pinecone" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugins/pinecone" ><span class="devsite-nav-text" tooltip>Pinecone</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/pgvector" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/pgvector" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/pgvector" ><span class="devsite-nav-text" tooltip>pgvector (code template)</span></a></li><li class="devsite-nav-item"><a href="/docs/genkit-go/plugins/google-cloud" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/genkit-go/plugins/google-cloud" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/genkit-go/plugins/google-cloud" ><span class="devsite-nav-text" tooltip>Google Cloud</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Reference</span> </div></li><li class="devsite-nav-item devsite-nav-external"><a href="https://pkg.go.dev/github.com/firebase/genkit/go" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://pkg.go.dev/github.com/firebase/genkit/go" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://pkg.go.dev/github.com/firebase/genkit/go" ><span class="devsite-nav-text" tooltip>Genkit packages</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Firebase ML</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/codelabs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/codelabs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/codelabs" ><span class="devsite-nav-text" tooltip>Codelabs</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Custom Models</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Use a custom model</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/use-custom-models" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/ios/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/use-custom-models" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/use-custom-models" ><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/flutter/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/flutter/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/flutter/use-custom-models" ><span class="devsite-nav-text" tooltip>Flutter</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/ml/manage-hosted-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/manage-hosted-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/manage-hosted-models" ><span class="devsite-nav-text" tooltip>Deploy & manage custom models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Migrate from the legacy API</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/migrate-from-legacy-api" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/migrate-from-legacy-api" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/migrate-from-legacy-api" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/migrate-from-legacy-api" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/migrate-from-legacy-api" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/migrate-from-legacy-api" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Use Cloud Vision APIs</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Recognize text</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/recognize-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/recognize-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/recognize-text" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/ios/recognize-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/recognize-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/recognize-text" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/recognize-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/recognize-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/recognize-text" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Label images</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/label-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/label-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/label-images" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/ios/label-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/label-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/label-images" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/label-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/label-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/label-images" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Recognize landmarks</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/recognize-landmarks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/recognize-landmarks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/recognize-landmarks" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/ios/recognize-landmarks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/recognize-landmarks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/recognize-landmarks" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/recognize-landmarks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/recognize-landmarks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/recognize-landmarks" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Deprecated Vision SDKs</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Recognize text</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/recognize-text-deprecated" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/recognize-text-deprecated" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/recognize-text-deprecated" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/recognize-text-deprecated" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/recognize-text-deprecated" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/recognize-text-deprecated" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Label images</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/label-images-deprecated" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/label-images-deprecated" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/label-images-deprecated" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/label-images-deprecated" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/label-images-deprecated" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/label-images-deprecated" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Recognize landmarks</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/recognize-landmarks-deprecated" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/recognize-landmarks-deprecated" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/recognize-landmarks-deprecated" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/recognize-landmarks-deprecated" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/recognize-landmarks-deprecated" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/recognize-landmarks-deprecated" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Cloud AutoML Vision Edge (deprecated)</span> </div></li><li class="devsite-nav-item"><a href="/docs/ml/automl-image-labeling" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/automl-image-labeling" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/automl-image-labeling" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/train-image-labeler" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/train-image-labeler" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/train-image-labeler" ><span class="devsite-nav-text" tooltip>Train image labeling models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Label images with your models</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/label-images-with-automl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/label-images-with-automl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/label-images-with-automl" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/label-images-with-automl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/label-images-with-automl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/label-images-with-automl" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/ml/train-object-detector" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/train-object-detector" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/train-object-detector" ><span class="devsite-nav-text" tooltip>Train object detection models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Detect objects with your models</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/detect-objects-with-automl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/detect-objects-with-automl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/detect-objects-with-automl" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/detect-objects-with-automl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/detect-objects-with-automl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/detect-objects-with-automl" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/ml/migrate-automl-datasets" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/migrate-automl-datasets" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/migrate-automl-datasets" ><span class="devsite-nav-text" tooltip>Migrate datasets</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Advanced Topics</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>A/B test two versions of a model</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/ab-test-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/ab-test-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/ab-test-models" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/ab-test-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/ab-test-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/ab-test-models" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Prepare for Production</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Protect your Cloud credentials</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml/ios/secure-api-key" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/ios/secure-api-key" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/ios/secure-api-key" ><span class="devsite-nav-text" tooltip>iOS+</span></a></li><li class="devsite-nav-item"><a href="/docs/ml/android/secure-api-key" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml/android/secure-api-key" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml/android/secure-api-key" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Legacy Documentation</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>ML Kit for Firebase</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit" ><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Vision</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Recognize text</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/recognize-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/recognize-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/recognize-text" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/recognize-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/recognize-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/recognize-text" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/recognize-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/recognize-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/recognize-text" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Detect faces</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/detect-faces" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/detect-faces" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/detect-faces" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/face-detection-concepts" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/face-detection-concepts" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/face-detection-concepts" ><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/detect-faces" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/detect-faces" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/detect-faces" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/detect-faces" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/detect-faces" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/detect-faces" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Scan barcodes</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/read-barcodes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/read-barcodes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/read-barcodes" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/read-barcodes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/read-barcodes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/read-barcodes" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/read-barcodes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/read-barcodes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/read-barcodes" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Label images</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/label-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/label-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/label-images" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/label-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/label-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/label-images" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/label-images" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/label-images" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/label-images" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Detect and track objects</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/object-detection" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/object-detection" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/object-detection" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/detect-objects" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/detect-objects" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/detect-objects" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/detect-objects" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/detect-objects" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/detect-objects" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Recognize landmarks</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/recognize-landmarks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/recognize-landmarks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/recognize-landmarks" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/recognize-landmarks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/recognize-landmarks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/recognize-landmarks" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/recognize-landmarks" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/recognize-landmarks" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/recognize-landmarks" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>AutoML Vision Edge</span> </div></li><li class="devsite-nav-item"><a href="/docs/ml-kit/automl-image-labeling" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/automl-image-labeling" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/automl-image-labeling" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/train-image-labeler" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/train-image-labeler" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/train-image-labeler" ><span class="devsite-nav-text" tooltip>Train image labeling models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Label images with your models</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/label-images-with-automl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/label-images-with-automl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/label-images-with-automl" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/label-images-with-automl" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/label-images-with-automl" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/label-images-with-automl" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/ml-kit/migrate-automl-datasets" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/migrate-automl-datasets" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/migrate-automl-datasets" ><span class="devsite-nav-text" tooltip>Migrate datasets</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Natural Language</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Identify the language of text</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/identify-languages" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/identify-languages" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/identify-languages" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/identify-languages" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/identify-languages" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/identify-languages" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/identify-languages" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/identify-languages" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/identify-languages" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Translate text</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/translation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/translation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/translation" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/translate-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/translate-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/translate-text" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/translate-text" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/translate-text" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/translate-text" ><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/translation-terms" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/translation-terms" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/translation-terms" ><span class="devsite-nav-text" tooltip>Usage guidelines</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Generate smart replies</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/generate-smart-replies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/generate-smart-replies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/generate-smart-replies" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/generate-smart-replies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/generate-smart-replies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/generate-smart-replies" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/generate-smart-replies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/generate-smart-replies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/generate-smart-replies" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Custom Models</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Use a custom model</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/use-custom-models" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/use-custom-models" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/use-custom-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/use-custom-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/use-custom-models" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item"><a href="/docs/ml-kit/manage-hosted-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/manage-hosted-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/manage-hosted-models" ><span class="devsite-nav-text" tooltip>Manage hosted custom models</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Use a custom TensorFlow Lite build</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/use-custom-tflite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/use-custom-tflite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/use-custom-tflite" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/use-custom-tflite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/use-custom-tflite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/use-custom-tflite" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Advanced Topics</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>A/B test two versions of a model</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/ab-test-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/ab-test-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/ab-test-models" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/ab-test-models" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/ab-test-models" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/ab-test-models" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Prepare for Production</span> </div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Reduce app package size</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/android/reduce-app-size" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/reduce-app-size" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/reduce-app-size" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Protect your Cloud credentials</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/ml-kit/ios/secure-api-key" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/ios/secure-api-key" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/ios/secure-api-key" ><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/docs/ml-kit/android/secure-api-key" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/ml-kit/android/secure-api-key" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/ml-kit/android/secure-api-key" ><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></div></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>RELATED PRODUCTS</span> </div></li> <li class="devsite-nav-item"><a href="//firebase.google.com/docs/cloud-messaging/" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //firebase.google.com/docs/cloud-messaging/" track-type="bookNav" track-name="click" track-metadata-eventdetail="//firebase.google.com/docs/cloud-messaging/" ><span class="devsite-nav-text" tooltip>Cloud Messaging</span></a></li> <li class="devsite-nav-item"><a href="//firebase.google.com/docs/remote-config/" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: //firebase.google.com/docs/remote-config/" track-type="bookNav" track-name="click" track-metadata-eventdetail="//firebase.google.com/docs/remote-config/" ><span class="devsite-nav-text" tooltip>Remote Config</span></a></li> </ul> <ul class="devsite-nav-list" menu="Build" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build </span> </span> </li> <li class="devsite-nav-item"> <a href="/products-build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Go to Build" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Go to Build </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build Products </span> </span> </li> <li class="devsite-nav-item"> <a href="/products/app-check" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Check" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Check </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/app-hosting" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Hosting" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Hosting </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/auth" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Authentication" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Authentication </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/functions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Functions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud Functions </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/storage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Storage" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud Storage </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/data-connect" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Data Connect" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Data Connect </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/extensions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Extensions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Extensions </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/ml" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firebase ML" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Firebase ML </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/firestore" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firestore" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Firestore </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/genkit" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Genkit" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Genkit </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/hosting" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hosting" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Hosting </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/realtime-database" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Realtime Database" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Realtime Database </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/vertex-ai-in-firebase" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Vertex AI in Firebase" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Vertex AI in Firebase </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/generative-ai" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Generative AI" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Generative AI </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Run" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Run </span> </span> </li> <li class="devsite-nav-item"> <a href="/products-run" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Go to Run" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Go to Run </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Run Products </span> </span> </li> <li class="devsite-nav-item"> <a href="/products/ab-testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: A/B Testing" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > A/B Testing </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/app-distribution" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Distribution" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Distribution </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/cloud-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/crashlytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Crashlytics" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Crashlytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/analytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Analytics" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Analytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/in-app-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: In-App Messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > In-App Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/performance" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance Monitoring" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Performance Monitoring </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/remote-config" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Remote Config" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Remote Config </span> </a> </li> <li class="devsite-nav-item"> <a href="/products/test-lab" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test Lab" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Test Lab </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Docs" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fundamentals" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Fundamentals </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Build </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/run" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Run" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Run </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Community" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/community/learn" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/events" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Events" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Events </span> </a> </li> <li class="devsite-nav-item"> <a href="/community/stories" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Stories" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Stories </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Fundamentals" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/docs/ios/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Apple platforms (iOS+)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - Apple platforms (iOS+) </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/android/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/web/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Web" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - Web </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/flutter/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Flutter" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - Flutter </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/cpp/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - C++" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - C++ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/unity/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Unity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - Unity </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/admin/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Server environments" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Add Firebase - Server environments </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/projects/learn-more" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Manage Firebase projects" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Manage Firebase projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/libraries" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Supported platforms & frameworks" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Supported platforms & frameworks </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/emulator-suite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use Emulator Suite" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Use Emulator Suite </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/gemini-in-firebase" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: AI assistance with Gemini in Firebase" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > AI assistance with Gemini in Firebase </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Build" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/docs/emulator-suite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Emulator Suite" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Emulator Suite </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/auth" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Authentication" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Authentication </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/app-check" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Check" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Check </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/data-connect" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Data Connect" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Data Connect </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/firestore" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firestore" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Firestore </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/database" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Realtime Database" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Realtime Database </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/storage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Storage" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Storage </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/rules" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security Rules" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Security Rules </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/app-hosting" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Hosting" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Hosting </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/hosting" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hosting" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Hosting </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/functions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Functions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud Functions </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/extensions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Extensions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Extensions </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/vertex-ai" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Vertex AI in Firebase" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Vertex AI in Firebase </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/genkit" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Genkit" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Genkit </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/ml" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ML" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ML </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Run" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/docs/test-lab" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test Lab" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Test Lab </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/app-distribution" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Distribution" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Distribution </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/crashlytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Crashlytics" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Crashlytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/perf-mon" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance Monitoring" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Performance Monitoring </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/remote-config" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Remote Config" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Remote Config </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/ab-testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: A/B Testing" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > A/B Testing </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/analytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Analytics" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Analytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/cloud-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/in-app-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: In-App Messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > In-App Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/dynamic-links" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Dynamic Links" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Dynamic Links </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/admob" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AdMob" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google AdMob </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/ads" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Ads" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Ads </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav > <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /styles/docs.css */ .center { text-align: center } /* Used in AdMob code examples */ .oldcode { opacity: .40; /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); /* IE <= 7 */ filter:alpha(opacity=40); } .newcode { font-weight: bold; } /* Device Screenshots */ .deviceshot { max-width: 700px; max-height: 400px; } /* Start Changelog styles */ .badge { position: relative; top: -3px; border-radius: 16px; display: inline-block; width: 110px; height: 32px; line-height: 32px; margin-right: 10px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; color: var(--tenant-inverted-text-color); } .checklist > ul { padding-left: 125px; } .checklist > ul > li { list-style-type: none; margin-bottom: 22px; } .changelog > ul { padding-left: 0; } .changelog > ul > li { list-style-type: none; margin-bottom: 22px; } .firebase-support-release-page .changelog > ul { list-style-type: none; padding-left: 125px; } .firebase-release-roundup .changelog > ul { list-style-type: disc outside; padding-left: 40px; } .firebase-release-roundup .changelog > ul > li { list-style-type: disc outside; margin-bottom: 12px; } .generic-android::before, .generic-ios::before, .generic-mobile::before, .generic-web::before, .generic-flutter::before, .generic-unity::before, .generic-cpp::before, .generic-all::before, .release-changed::before, .release-deprecated::before, .release-feature::before, .release-fixed::before, .release-important::before, .release-issue::before, .release-removed::before, .release-unchanged::before, .release-android::before, .release-android-bom::before, .release-ios::before, .release-javascript::before, .release-flutter::before, .release-unity::before, .release-cpp::before, .release-admin::before, .release-functions::before, .release-cli::before, .release-rules::before { display: block; float: left; width: 110px; height: 32px; margin-left: -125px; margin-right: 10px; border-radius: 16px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; color: var(--tenant-inverted-text-color); } .generic-android::before { content: "Android"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #839e2e; } .generic-ios::before { text-transform: none; content: "iOS+"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #003fdd; } .generic-mobile::before { content: "Mobile"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #f4b400; } .generic-web::before { content: "Web"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #7e57c2; } .generic-flutter::before { content: "Flutter"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #29b6f6; } .generic-unity::before { content: "Unity"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #7f6545; } .generic-cpp::before { content: "C++"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #ff8c00; } .generic-all::before { content: "All"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #ccc; } .release-changed::before { content: "changed"; background-color: #ff6961; padding-top: 4px; } .release-deprecated::before { content: "deprecated"; background-color: #d70015; padding-top: 4px; } .release-feature::before { content: "feature"; background-color: #0f9d58; padding-top: 4px; } .release-fixed::before { content: "fixed"; background-color: #4285f4; padding-top: 4px; } .release-important::before { content: "important"; background-color: #d70015; padding-top: 4px; } .release-issue::before { content: "issue"; background-color: #d70015; padding-top: 4px; } .release-removed::before { content: "removed"; background-color: #546e7a; padding-top: 4px; } .release-unchanged::before { content: "no change"; background-color: #ccc; padding-top: 4px; } .release-android::before { content: "Android"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #839e2e; } .release-android-bom::before { content: "Android BoM"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #839e2e; } .release-ios::before { text-transform: none; content: "iOS+"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #003fdd; } .release-javascript::before { content: "JavaScript"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #7e57c2; } .release-flutter::before { content: "Flutter"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #29b6f6; } .release-unity::before { content: "Unity"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #7f6545; } .release-cpp::before { content: "C++"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #ff8c00; } .release-admin::before { content: "Admin"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #909090; } .release-functions::before { content: "Functions"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #2c384a; } .release-cli::before { text-transform: none; content: "CLI"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #f4b400; } .release-rules::before { content: "Rules"; color: var(--tenant-secondary-text-color); border: 5px solid; border-color: #002991; } /* End Changelog styles */ /* Docs Overview page styles */ .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 64px; width: 64px; margin: 10px 16px 0 -16px; } .firebase-docs-overview .devsite-landing-row h2 { margin: 80px 0 -40px; } .devsite-landing-row-3-up .docs-landing-row-item { width: calc((100% - 80px)/2); display: inline-block; } .docs-landing-icon { font-size: 48px; height: 48px; margin: 11px; width: 48px; } .firebase-reference-list { display: -ms-flex; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; list-style: none; margin: 0 0 40px; padding: 0; } .firebase-reference-list-item { -ms-flex: 0 0 50%; flex: 0 0 50%; margin: 40px 0 0; padding: 0; } .firebase-reference-list-item > a { -ms-flex-align: center; align-items: center; display: -ms-flex; display: flex; } .firebase-reference-list-item > a:not(:hover) h3 { color: var(--tenant-primary-text-color); } .firebase-reference-list-item > a:not(:hover) li, .firebase-reference-list-item > a:not(:hover) p { color: var(--tenant-secondary-text-color); } .firebase-reference-list-item .docs-landing-icon { -ms-flex-align: center; align-items: center; background-color: var(--tenant-docs-landing-icon-background, #f5f5f5); border-radius: 50%; -ms-flex: 0 0 88px; flex: 0 0 88px; height: 88px; -ms-justify-content: center; justify-content: center; margin: 0 16px 0 0; padding: 20px; } .firebase-reference-list-item h3 { -ms-flex: 0 0 auto; flex: 0 0 auto; font-size: 18px; line-height: 28px; margin: 0; } .firebase-reference-list-item ul { list-style: none; padding: 0; } .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 88px; width: auto; } .firebase-reference-list-item.docs-android .docs-landing-icon { color: #00bfa5; } .firebase-reference-list-item.docs-cpp .docs-landing-icon { color: #fd8c09; } .firebase-reference-list-item.docs-ios .docs-landing-icon { color: #16aaca; } .firebase-reference-list-item.docs-unity .docs-landing-icon { color: #000; } .firebase-reference-list-item.docs-web .docs-landing-icon { color: #c52062; } .firebase-reference-list-item.docs-http .docs-landing-icon { color: #3f51b5; } @media (max-width: 1000px) { .firebase-reference-list { -ms-flex-direction: column; flex-direction: column; } } /* end Docs Overview page styles */ /* Full-page platform selector for Crashlytics docs */ /* Note: h3 in selector content must include hide-from-toc */ .full-page-selector, .full-page-selector-content { border: none; font-size: inherit; } .full-page-selector > .kd-buttonbar { margin: 32px 0; } .full-page-selector > section { display: none; } .full-page-selector-content > .selected { padding: 0; font-size: inherit; } .full-page-selector-content > .kd-buttonbar { display: none; } .select-page { display: none; } .select-page + .ds-selector-tabs, .after-selection ~ .ds-selector-tabs { border: none; font-size: inherit; } .select-page + .ds-selector-tabs > .kd-buttonbar { margin: 32px 0; } .select-page + .ds-selector-tabs > section { display: none; } .after-selection ~ .ds-selector-tabs > .selected { padding: 0; font-size: inherit; } .after-selection ~ .ds-selector-tabs > section p { line-height: 24px; } .after-selection ~ .ds-selector-tabs > .kd-buttonbar { display: none; } /* End full-page platform selector */ /* Custom beta and alpha indicators */ .devsite-nav-icon[data-icon="alpha"]::before { content: url(data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'><path d='M13.2,15c-0.3-0.9-0.6-1.7-0.9-2.6L12.1,12c0-0.1-0.1-0.3-0.1-0.4c-1.2,2.1-2.4,2.9-4.5,2.9C4.8,14.5,3,12.6,3,9s1.8-5.5,4.5-5.5c2.1,0,3.4,0.8,4.5,2.9L12.1,6l0.1-0.4c0.4-1.1,0.7-1.9,0.9-2.6h2.2c-0.4,0.8-0.7,1.7-1.2,3.2L14,6.6c-0.3,0.8-0.5,1.6-0.8,2.4c0.3,0.7,0.6,1.5,0.8,2.4l0.1,0.4c0.5,1.5,0.8,2.4,1.2,3.2C15.4,15,13.2,15,13.2,15z M7.5,5.5C5.9,5.5,5,6.5,5,9s0.9,3.5,2.5,3.5C9,12.5,9.9,11.6,11,9C9.9,6.4,9,5.5,7.5,5.5z' fill='%2354617d'/></svg>); } .color-scheme--dark .devsite-nav-icon[data-icon="alpha"]::before { content: url(data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'><path d='M13.2,15c-0.3-0.9-0.6-1.7-0.9-2.6L12.1,12c0-0.1-0.1-0.3-0.1-0.4c-1.2,2.1-2.4,2.9-4.5,2.9C4.8,14.5,3,12.6,3,9s1.8-5.5,4.5-5.5c2.1,0,3.4,0.8,4.5,2.9L12.1,6l0.1-0.4c0.4-1.1,0.7-1.9,0.9-2.6h2.2c-0.4,0.8-0.7,1.7-1.2,3.2L14,6.6c-0.3,0.8-0.5,1.6-0.8,2.4c0.3,0.7,0.6,1.5,0.8,2.4l0.1,0.4c0.5,1.5,0.8,2.4,1.2,3.2C15.4,15,13.2,15,13.2,15z M7.5,5.5C5.9,5.5,5,6.5,5,9s0.9,3.5,2.5,3.5C9,12.5,9.9,11.6,11,9C9.9,6.4,9,5.5,7.5,5.5z' fill='%239eabc3'/></svg>); } .devsite-nav-icon[data-icon="beta"]::before { content: url(data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'><path d='M12.2,7.7c1.8,1.2,2.3,3.7,1.1,5.6c-0.7,1.1-2,1.8-3.3,1.8H7v2H5V4c0-1.1,0.9-2,2-2h2.5C11.4,2,13,3.6,13,5.5C13,6.3,12.7,7.1,12.2,7.7z M7,13h3c1.1,0,2-0.9,2-2s-0.9-2-2-2H7V13z M7,7h2.5C10.3,7,11,6.3,11,5.5S10.3,4,9.5,4H7V7z' fill='%2354617d'/></svg>); } .color-scheme--dark .devsite-nav-icon[data-icon="beta"]::before { content: url(data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'><path d='M12.2,7.7c1.8,1.2,2.3,3.7,1.1,5.6c-0.7,1.1-2,1.8-3.3,1.8H7v2H5V4c0-1.1,0.9-2,2-2h2.5C11.4,2,13,3.6,13,5.5C13,6.3,12.7,7.1,12.2,7.7z M7,13h3c1.1,0,2-0.9,2-2s-0.9-2-2-2H7V13z M7,7h2.5C10.3,7,11,6.3,11,5.5S10.3,4,9.5,4H7V7z' fill='%239eabc3'/></svg>); } .firebase-platform-label { font: 500 12px/24px Roboto,sans-serif; } /* Full-page platform selector dropdown */ /* Note: use menu variables in _elements.html file */ .full-page-selector-dropdown { border: none; position: relative; float: left; display: inline-block; } .full-page-selector-dropdown > .ds-selector-tabs { display: none; position: absolute; min-width: 160px; z-index: 1; } .full-page-selector-dropdown:hover .ds-selector-tabs { display: block; margin: 0; } .full-page-selector-dropdown:hover .kd-tabbutton { display: block; border: none; height: inherit; text-align: left; } .full-page-selector-dropdown:hover .kd-buttonbar { border: none; height: inherit; } .full-page-selector-dropdown h3:hover { color: var(--tenant-inverted-text-color); background-color: #039be5; } .full-page-selector-dropdown:hover .devsite-overflow-menu-button { display: none; } img.white-bg { padding: 5px; border-radius: 2px; background-color: #fff; } </style><style> h2 { clear: both; } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://firebase.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Firebase" > Firebase </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Docs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://firebase.google.com/docs/build" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="" > Build </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/icon.svg" project-support-url="https://firebase.google.com/support/" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Easily add sign-in to your iOS app with FirebaseUI </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> </p> <p><img src="/static/docs/auth/images/firebaseui-ios.png" class="attempt-right" style="max-width: calc((100% - 40px)/3);"></p> <p><a href="https://github.com/firebase/firebaseui-ios">FirebaseUI</a> is a library built on top of the Firebase Authentication SDK that provides drop-in UI flows for use in your app. FirebaseUI provides the following benefits:</p> <ul> <li><strong>Multiple providers</strong>: sign-in flows for email/password, email link, phone authentication, Google Sign-In, Facebook Login, and Twitter Login.</li> <li><strong>Account management</strong>: flows to handle account management tasks, such as account creation and password resets.</li> <li><strong>Anonymous account linking</strong>: flows to automatically link anonymous accounts to identity providers.</li> <li><strong>Customizable</strong>: customize the look of FirebaseUI to match your app. Also, because FirebaseUI is open source, you can fork the project and customize it exactly to your needs.</li> </ul> <h2 id="before_you_begin" data-text="Before you begin" tabindex="-1">Before you begin</h2> <aside class="note"> <b>Note:</b> Firebase supports both CocoaPods and Swift Package Manager. If you choose to install Firebase using <a href="/docs/ios/swift-package-manager">Swift Package Manager</a>, you can skip CocoaPods-related steps, like modifying Podfiles and running the <code translate="no" dir="ltr">pod</code> command. </aside> <ol> <li><p><a href="/docs/ios/setup">Add Firebase to your Apple project</a>.</p></li> <li><p>Add FirebaseUI to your Podfile:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">pod 'FirebaseUI' </code></pre> <p>If you prefer, you can add only the Auth component and the providers you want to use:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">pod 'FirebaseUI/Auth' pod 'FirebaseUI/Google' pod 'FirebaseUI/Facebook' pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc pod 'FirebaseUI/Phone' </code></pre></li> <li><p>If you haven't yet connected your app to your Firebase project, do so from the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>.</p></li> </ol> <h2 id="set_up_sign-in_methods" data-text="Set up sign-in methods" tabindex="-1">Set up sign-in methods</h2> <p>Before you can use Firebase to sign in users, you must enable and configure the sign-in methods you want to support.</p> <h3 id="email_address_and_password" data-text="Email address and password" tabindex="-1">Email address and password</h3> <p>In the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>, open the <strong>Authentication</strong> section and enable email and password authentication.</p> <h3 id="email_link_authentication" data-text="Email link authentication" tabindex="-1">Email link authentication</h3> <ol> <li><p>In the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>, open the <strong>Authentication</strong> section. On the <strong>Sign in method</strong> tab, enable the <strong>Email/Password</strong> provider. Note that email or password sign-in must be enabled to use email link sign-in.</p></li> <li><p>In the same section, enable <strong>Email link (passwordless sign-in)</strong> sign-in method and click <strong>Save</strong>.</p></li> <li><p>You can enable email link sign in by initializing an <code translate="no" dir="ltr">FUIEmailAuth</code> instance with <code translate="no" dir="ltr">FIREmailLinkAuthSignInMethod</code>. You will also need to provide a valid <code translate="no" dir="ltr">FIRActionCodeSettings</code> object with <code translate="no" dir="ltr">handleCodeInApp</code> set to true.</p></li> </ol> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">var actionCodeSettings = ActionCodeSettings() actionCodeSettings.url = URL(string: "https://example.appspot.com") actionCodeSettings.handleCodeInApp = true actionCodeSettings.setAndroidPackageName("com.firebase.example", installIfNotAvailable: false, minimumVersion: "12") let provider = FUIEmailAuth(authUI: FUIAuth.defaultAuthUI()!, signInMethod: FIREmailLinkAuthSignInMethod, forceSameDevice: false, allowNewEmailAccounts: true, actionCodeSetting: actionCodeSettings) </code></pre></section> <section><h3 id="objective-c" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; actionCodeSettings.URL = [NSURL URLWithString:@"https://example.appspot.com"]; actionCodeSettings.handleCodeInApp = YES; [actionCodeSettings setAndroidPackageName:@"com.firebase.example" installIfNotAvailable:NO minimumVersion:@"12"]; id<FUIAuthProvider> provider = [[FUIEmailAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI] signInMethod:FIREmailLinkAuthSignInMethod forceSameDevice:NO allowNewEmailAccounts:YES actionCodeSetting:actionCodeSettings]; </code></pre></section> </div> <ol> <li><p>Additionally, you need to whitelist the URL you pass to the iniatializer. You can do so in the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>, open the <strong>Authentication</strong> section. On the <strong>Sign in method</strong> tab, add the URL under <strong>Authorized domains</strong>.</p></li> <li><p>Once you catch the deep link, you will need to pass it to the auth UI so it can be handled.</p></li> </ol> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_1" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication) </code></pre></section> <section><h3 id="objective-c_1" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication]; </code></pre></section> </div> <ol> <li>Email link sign-in in FirebaseUI-iOS is compatible with <a href="https://github.com/firebase/FirebaseUI-Android/tree/master/auth#configuring-email-link-sign-in">FirebaseUI-Android</a> and <a href="https://github.com/firebase/firebaseui-web#email-link-authentication">FirebaseUI-web</a> where one user starting the flow from FirebaseUI-Android can open the link and complete sign-in with FirebaseUI-web. The same is true for the opposite flow.</li> </ol> <h3 id="apple" data-text="Apple" tabindex="-1">Apple</h3> <ol> <li><p>Follow the <strong>Before you begin</strong> and <strong>Comply with Apple anonymized data requirements</strong> sections in the Firebase <a href="/docs/auth/ios/apple">Sign in with Apple</a> guide.</p></li> <li><p>Add the Sign in with Apple capability to your entitlements file.</p></li> <li><p>Initialize an OAuth provider instance configured for Sign in with Apple:</p> <p><div class="ds-selector-tabs"> <section> <h4 id="swift_2" data-text="Swift" tabindex="-1">Swift</h4> <pre class="prettyprint" translate="no" dir="ltr"> provider = FUIOAuth.appleAuthProvider() </pre> </section> <section> <h4 id="objective-c_2" data-text="Objective-C" tabindex="-1">Objective-C</h4> <pre class="prettyprint" translate="no" dir="ltr"> FUIOAuth *provider = [FUIOAuth appleAuthProvider]; </pre> </section> </div></p></li> </ol> <h3 id="google" data-text="Google" tabindex="-1">Google</h3> <ol> <li>Set up the Google Sign-in using this <a href="/docs/auth/ios/google-signin">tutorial</a></li> </ol> <h3 id="facebook" data-text="Facebook" tabindex="-1">Facebook</h3> <ol> <li><p>Set up the Facebook Login SDK by following <a href="https://developers.facebook.com/docs/ios/getting-started">Facebook's getting started page</a>.</p></li> <li><p>In the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>, open the <strong>Authentication</strong> section and enable Facebook. To enable Facebook sign-in, you must provide your Facebook App ID and App Secret, which you can get in the Facebook Developers console.</p></li> <li><p>Enable keychain sharing in your Xcode project from the <strong>Project Settings > Capabilities</strong> screen.</p></li> <li><p>Add <code translate="no" dir="ltr">fb<var translate="no">FACEBOOK_APP_ID</var></code> as a URL scheme in your Xcode project.</p></li> <li><p>Add your Facebook App ID and display name to the <code translate="no" dir="ltr">Info.plist</code> file:</p> <table> <thead> <tr> <th>Key</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td>FacebookAppID</td> <td><code translate="no" dir="ltr"><var translate="no">FACEBOOK_APP_ID</var></code> (for example, <code translate="no" dir="ltr">1234567890</code>)</td> </tr> <tr> <td>FacebookDisplayName</td> <td>The name of your app</td> </tr> </tbody> </table></li> <li><p>Initialize a Facebook provider instance:</p> <p><div class="ds-selector-tabs"> <section> <h4 id="swift_3" data-text="Swift" tabindex="-1">Swift</h4> <pre class="prettyprint" translate="no" dir="ltr"> provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI()) </pre> </section> <section> <h4 id="objective-c_3" data-text="Objective-C" tabindex="-1">Objective-C</h4> <pre class="prettyprint" translate="no" dir="ltr"> FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]]; </pre> </section> </div></p></li> <li><p>If you want to use <a href="https://developers.facebook.com/docs/facebook-login/limited-login/ios">Facebook Limited Login</a>, set the <code translate="no" dir="ltr">useLimitedLogin</code> property on the <code translate="no" dir="ltr">FUIFacebookAuth</code> instance.</p> <p><div class="ds-selector-tabs"> <section> <h4 id="swift_4" data-text="Swift" tabindex="-1">Swift</h4> <pre class="prettyprint" translate="no" dir="ltr"> provider.useLimitedLogin = true </pre> </section> <section> <h4 id="objective-c_4" data-text="Objective-C" tabindex="-1">Objective-C</h4> <pre class="prettyprint" translate="no" dir="ltr"> provider.useLimitedLogin = YES; </pre> </section> </div></p></li> </ol> <h3 id="twitter" data-text="Twitter" tabindex="-1">Twitter</h3> <ol> <li><p>In the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>, open the <strong>Authentication</strong> section and enable Twitter. To enable Twitter sign-in, you must provide your Twitter API consumer key and secret, which you can get in the Twitter Application Management console.</p></li> <li><p>Initialize an OAuth provider instance configured for Twitter login:</p> <p><div class="ds-selector-tabs"> <section> <h4 id="swift_5" data-text="Swift" tabindex="-1">Swift</h4> <pre class="prettyprint" translate="no" dir="ltr"> provider = FUIOAuth.twitterAuthProvider() </pre> </section> <section> <h4 id="objective-c_5" data-text="Objective-C" tabindex="-1">Objective-C</h4> <pre class="prettyprint" translate="no" dir="ltr"> FUIOAuth *provider = [FUIOAuth twitterAuthProvider]; </pre> </section> </div></p></li> </ol> <h3 id="phone_number" data-text="Phone number" tabindex="-1">Phone number</h3> <ol> <li><p>In the <a href="//console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick"><span class="notranslate">Firebase</span> console</a>, open the <strong>Authentication</strong> section and enable phone number sign-in.</p></li> <li><p>Firebase must be able to verify that phone number sign-in requests are coming from your app. One of the ways this is accomplished is through APNs notifications. See <a href="/docs/auth/ios/phone-auth#enable-app-verification">Enable app verification</a> for details.</p> <p>To enable APNs notifications for use with <span class="notranslate">Firebase Authentication</span>:</p> <ol> <li><p>In Xcode, <a href="http://help.apple.com/xcode/mac/current/#/dev11b059073?sub=dev73a37248c">enable push notifications</a> for your project.</p></li> <li><p> Upload your APNs authentication key to Firebase. If you don't already have an APNs authentication key, make sure to create one in the <a href="https://developer.apple.com/membercenter/index.action">Apple Developer Member Center</a>.</p> <ol> <li> <p> Inside your project in the <span class="notranslate">Firebase</span> console, select the gear icon, select <strong>Project Settings</strong>, and then select the <strong>Cloud Messaging</strong> tab. </p> </li> <li> <p> In <strong>APNs authentication key</strong> under <strong>iOS app configuration</strong>, click the <strong>Upload</strong> button. </p> </li> <li> <p> Browse to the location where you saved your key, select it, and click <strong>Open</strong>. Add the key ID for the key (available in the <a href="https://developer.apple.com/membercenter/index.action"> Apple Developer Member Center</a>) and click <strong>Upload</strong>. </p> </li> </ol> <p>If you already have an APNs certificate, you can upload the certificate instead.</p></li> </ol></li> <li><p>When APNs notifications can't be received on a device, Firebase uses reCAPTCHA to verify requests.</p> <p>To enable reCAPTCHA verification, do the following in Xcode:</p> <ol> <li>Open your project configuration: double-click the project name in the left tree view. Select your app from the <b>TARGETS</b> section, then select the <b>Info</b> tab, and expand the <b>URL Types</b> section. </li> <li>Click the <b>+</b> button, and add your Encoded App ID as a URL scheme. You can find your Encoded App ID on the <a href="//console.firebase.google.com/project/_/settings/general/">General Settings</a> page of the Firebase console, in the section for your iOS app. Leave the other fields blank. <p>When completed, your config should look something similar to the following (but with your application-specific values):</p> <img src="/static/docs/auth/images/app-id-url-scheme.png" alt="Screenshot of Xcode's custom URL scheme setup interface" class="screenshot"> </li> </ol></li> <li><p><strong>Optional</strong>: Firebase uses method swizzling to automatically obtain your app's APNs token, to handle the silent push notifications that Firebase sends to your app, and to automatically intercept the custom scheme redirect from the reCAPTCHA verification page during verification.</p> <p>If you prefer not to use swizzling, see <a href="/docs/auth/ios/phone-auth#appendix-using-phone-sign-in-without-swizzling">Appendix: Using phone sign-in without swizzling</a> in Firebase SDK authentication docs.</p></li> </ol> <h2 id="sign_in" data-text="Sign in" tabindex="-1">Sign in</h2> <p>To kick off the FirebaseUI sign in flow, first initialize FirebaseUI:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_6" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">import FirebaseAuthUI /* ... */ FirebaseApp.configure() let authUI = FUIAuth.defaultAuthUI() // You need to adopt a FUIAuthDelegate protocol to receive callback authUI.delegate = self </code></pre></section> <section><h3 id="objective-c_6" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">@import FirebaseAuthUI; ... [FIRApp configure]; FUIAuth *authUI = [FUIAuth defaultAuthUI]; // You need to adopt a FUIAuthDelegate protocol to receive callback authUI.delegate = self; </code></pre></section> </div> <p>Then, configure FirebaseUI to use the sign-in methods you want to support:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_7" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">import FirebaseAuthUI import FirebaseFacebookAuthUI import FirebaseGoogleAuthUI import FirebaseOAuthUI import FirebasePhoneAuthUI let providers: [FUIAuthProvider] = [ FUIGoogleAuth(), FUIFacebookAuth(), FUITwitterAuth(), FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()), ] self.authUI.providers = providers </code></pre></section> <section><h3 id="objective-c_7" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">@import FirebaseAuthUI; @import FirebaseFacebookAuthUI; @import FirebaseGoogleAuthUI; @import FirebaseOAuthUI; @import FirebasePhoneAuthUI; ... NSArray<id<FUIAuthProvider>> *providers = @[ [[FUIGoogleAuth alloc] init], [[FUIFacebookAuth alloc] init], [[FUITwitterAuth alloc] init], [[FUIPhoneAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]] ]; _authUI.providers = providers; </code></pre></section> </div> <p>If you enabled Google or Facebook sign-in, implement a handler for the result of the Google and Facebook sign-up flows:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_8" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String? if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false { return true } // other URL handling goes here. return false } </code></pre></section> <section><h3 id="objective-c_8" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey]; return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication]; } </code></pre></section> </div> <p>Finally, get an instance of <code translate="no" dir="ltr">AuthViewController</code> from <code translate="no" dir="ltr">FUIAuth</code>. You can then either present it as the first view controller of your app or present it from another view controller in your app.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_9" data-text="Swift" tabindex="-1">Swift</h3><p>To get the sign-in method selector:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">let authViewController = authUI.authViewController() </code></pre> <p>If you only use phone number sign-in, you can display the phone number sign-in view directly instead:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil) </code></pre></section> <section><h3 id="objective-c_9" data-text="Objective-C" tabindex="-1">Objective-C</h3><p>To get the sign-in method selector:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">UINavigationController *authViewController = [authUI authViewController]; </code></pre> <p>If you only use phone number sign-in, you can display the phone number sign-in view directly instead:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject; [phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil]; </code></pre></section> </div> <p>After you present the authentication view and the user signs in, the result is returned to the FirebaseUI Auth delegate in the <code translate="no" dir="ltr">didSignInWithUser:error:</code> method:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_10" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) { // handle user and error as necessary } </code></pre></section> <section><h3 id="objective-c_10" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr"> - (void)authUI:(FUIAuth *)authUI didSignInWithUser:(nullable FIRUser *)user error:(nullable NSError *)error { // Implement this method to handle signed in user or error if any. } </code></pre></section> </div> <h2 id="sign_out" data-text="Sign Out" tabindex="-1">Sign Out</h2> <p>FirebaseUI provides convenience methods to sign out of Firebase Authentication as well as all social identity providers:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_11" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">authUI.signOut() </code></pre></section> <section><h3 id="objective-c_11" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">[authUI signOut]; </code></pre></section> </div> <h2 id="customization" data-text="Customization" tabindex="-1">Customization</h2> <p>You can customize the sign-in screens by subclassing FirebaseUI's view controllers and specifying them in <code translate="no" dir="ltr">FUIAuth</code>'s delegate methods:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_12" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">func authPickerViewController(forAuthUI authUI: FUIAuth) -> FUIAuthPickerViewController { return FUICustomAuthPickerViewController(nibName: "FUICustomAuthPickerViewController", bundle: Bundle.main, authUI: authUI) } func emailEntryViewController(forAuthUI authUI: FUIAuth) -> FUIEmailEntryViewController { return FUICustomEmailEntryViewController(nibName: "FUICustomEmailEntryViewController", bundle: Bundle.main, authUI: authUI) } func passwordRecoveryViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordRecoveryViewController { return FUICustomPasswordRecoveryViewController(nibName: "FUICustomPasswordRecoveryViewController", bundle: Bundle.main, authUI: authUI, email: email) } func passwordSignInViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignInViewController { return FUICustomPasswordSignInViewController(nibName: "FUICustomPasswordSignInViewController", bundle: Bundle.main, authUI: authUI, email: email) } func passwordSignUpViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignUpViewController { return FUICustomPasswordSignUpViewController(nibName: "FUICustomPasswordSignUpViewController", bundle: Bundle.main, authUI: authUI, email: email) } func passwordVerificationViewController(forAuthUI authUI: FUIAuth, email: String, newCredential: AuthCredential) -> FUIPasswordVerificationViewController { return FUICustomPasswordVerificationViewController(nibName: "FUICustomPasswordVerificationViewController", bundle: Bundle.main, authUI: authUI, email: email, newCredential: newCredential) } </code></pre></section> <section><h3 id="objective-c_12" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">- (FUIAuthPickerViewController *)authPickerViewControllerForAuthUI:(FUIAuth *)authUI { return [[FUICustomAuthPickerViewController alloc] initWithNibName:@"FUICustomAuthPickerViewController" bundle:[NSBundle mainBundle] authUI:authUI]; } - (FUIEmailEntryViewController *)emailEntryViewControllerForAuthUI:(FUIAuth *)authUI { return [[FUICustomEmailEntryViewController alloc] initWithNibName:@"FUICustomEmailEntryViewController" bundle:[NSBundle mainBundle] authUI:authUI]; } - (FUIPasswordSignInViewController *)passwordSignInViewControllerForAuthUI:(FUIAuth *)authUI email:(NSString *)email { return [[FUICustomPasswordSignInViewController alloc] initWithNibName:@"FUICustomPasswordSignInViewController" bundle:[NSBundle mainBundle] authUI:authUI email:email]; } - (FUIPasswordSignUpViewController *)passwordSignUpViewControllerForAuthUI:(FUIAuth *)authUI email:(NSString *)email { return [[FUICustomPasswordSignUpViewController alloc] initWithNibName:@"FUICustomPasswordSignUpViewController" bundle:[NSBundle mainBundle] authUI:authUI email:email]; } - (FUIPasswordRecoveryViewController *)passwordRecoveryViewControllerForAuthUI:(FUIAuth *)authUI email:(NSString *)email { return [[FUICustomPasswordRecoveryViewController alloc] initWithNibName:@"FUICustomPasswordRecoveryViewController" bundle:[NSBundle mainBundle] authUI:authUI email:email]; } - (FUIPasswordVerificationViewController *)passwordVerificationViewControllerForAuthUI:(FUIAuth *)authUI email:(NSString *)email newCredential:(FIRAuthCredential *)newCredential { return [[FUICustomPasswordVerificationViewController alloc] initWithNibName:@"FUICustomPasswordVerificationViewController" bundle:[NSBundle mainBundle] authUI:authUI email:email newCredential:newCredential]; } </code></pre></section> </div> <p>You can customize the URL to your app's terms of service, which is linked on the account creation screen:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_13" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">let kFirebaseTermsOfService = URL(string: "https://example.com/terms")! authUI.tosurl = kFirebaseTermsOfService </code></pre></section> <section><h3 id="objective-c_13" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"]; </code></pre></section> </div> <p>Finally, you can customize the messages and prompts shown to your users by specifying a custom bundle:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="swift_14" data-text="Swift" tabindex="-1">Swift</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle. </code></pre></section> <section><h3 id="objective-c_14" data-text="Objective-C" tabindex="-1">Objective-C</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle. </code></pre></section> </div> <h2 id="next-steps" data-text="Next Steps" tabindex="-1">Next Steps</h2> <ul> <li>For more information on using and customizing FirebaseUI, see the <a href="//github.com/firebase/FirebaseUI-iOS/blob/master/Auth/README.md">README</a> file on GitHub.</li> <li>If you find and issue in FirebaseUI and would like to report it, use the <a href="//github.com/firebase/FirebaseUI-iOS/issues">GitHub issue tracker</a>.</li> </ul> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/icon.svg" project-support-url="https://firebase.google.com/support/" > <button> Send feedback </button> </devsite-feedback> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-11-21 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/icon.svg" project-support-url="https://firebase.google.com/support/" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-11-21 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Learn</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/docs/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Developer guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/docs/reference/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > SDK & API reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/docs/samples/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Samples </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/docs/libraries/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Libraries </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//github.com/firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > GitHub </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Stay connected</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//firebase.blog" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Check out the blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.reddit.com/r/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Find us on Reddit </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//x.com/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Follow on X </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.youtube.com/user/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Subscribe on YouTube </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/events" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Attend an event </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/support/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Contact support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//stackoverflow.com/questions/tagged/firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//firebase.community/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Slack community </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//groups.google.com/forum/#!forum/firebase-talk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Google group </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/support/releases" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Release notes </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/brand-guidelines/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Brand guidelines </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/support/faq/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > FAQs </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup-google-for-developers-dark-theme.svg" media="(prefers-color-scheme: none)" class="devsite-dark-theme" loading="lazy" alt="Google Developers"> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/terms/" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [], "ga4p": [], "gtm": [{"id": "GTM-N84485", "purpose": 0}], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Firebase", "signedIn": "False", "tenant": "firebase", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <firebase-gtm></firebase-gtm> <firebase-utm></firebase-utm> <script nonce="maaUPighf85XCiANfX7P/heoXYNV7M"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/js/app_loader.js', '[4,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase","https://firebase-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/firebase/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/favicon.png","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","firebase.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Search__enable_ai_eligibility_checks","Cloud__enable_cloudx_ping","Profiles__enable_profile_collections","MiscFeatureFlags__developers_footer_image","Cloud__enable_cloudx_experiment_ids","DevPro__enable_developer_subscriptions","Profiles__enable_recognition_badges","Cloud__enable_cloud_facet_chat","MiscFeatureFlags__developers_footer_dark_image","BookNav__enable_tenant_cache_key","MiscFeatureFlags__emergency_css","Cloud__enable_free_trial_server_call","MiscFeatureFlags__enable_project_variables","Search__enable_suggestions_from_borg","Profiles__require_profile_eligibility_for_signin","MiscFeatureFlags__enable_variable_operator","Profiles__enable_awarding_url","MiscFeatureFlags__enable_dark_theme","TpcFeatures__enable_mirror_tenant_redirects","Cloud__enable_cloud_shell","Analytics__enable_clearcut_logging","Profiles__enable_complete_playlist_endpoint","CloudShell__cloud_code_overflow_menu","CloudShell__cloud_shell_button","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__enable_explain_this_code","MiscFeatureFlags__enable_firebase_utm","Significatio__enable_by_tenant","Cloud__enable_cloud_dlp_service","Concierge__enable_pushui","MiscFeatureFlags__enable_view_transitions","Profiles__enable_dashboard_curated_recommendations","DevPro__enable_cloud_innovators_plus","Concierge__enable_concierge","Cloud__enable_cloud_shell_fte_user_flow","TpcFeatures__enable_required_headers","Search__enable_dynamic_content_confidential_banner","Profiles__enable_public_developer_profiles","Profiles__enable_completecodelab_endpoint","Experiments__reqs_query_experiments","Profiles__enable_release_notes_notifications","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_page_saving","Profiles__enable_developer_profiles_callout","Cloud__enable_llm_concierge_chat","Search__enable_page_map","Search__enable_ai_search_summaries"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[4,"firebase","Firebase","firebase.google.com",null,"firebase-dot-devsite-v2-prod.appspot.com",null,null,[1,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1]],null,null,null,[1,null,1],[1,1,null,null,1]],null,[68,null,null,null,null,null,"/images/lockup.svg","/images/touchicon-180.png",null,null,null,1,1,1,null,null,null,null,null,null,null,2,null,null,null,"/images/lockup.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,20,22,23,29,37],null,[[],[1,1]],[[null,null,null,null,["UA-24532603-9"],["GTM-N84485"],null,null,null,null,[["UA-24532603-9",1]],[["GTM-N84485",1]],1],[[46,8],[2,5],[17,1],[16,2],[36,4]],null,1],null,4],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>