CINXE.COM
Get started with Cloud Storage on Android | Cloud Storage for Firebase
<!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/storage/android/start"><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/storage/android/start" /><link rel="alternate" hreflang="x-default" href="https://firebase.google.com/docs/storage/android/start" /><link rel="alternate" hreflang="ar" href="https://firebase.google.com/docs/storage/android/start?hl=ar" /><link rel="alternate" hreflang="bn" href="https://firebase.google.com/docs/storage/android/start?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://firebase.google.com/docs/storage/android/start?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://firebase.google.com/docs/storage/android/start?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://firebase.google.com/docs/storage/android/start?hl=fa" /><link rel="alternate" hreflang="fr" href="https://firebase.google.com/docs/storage/android/start?hl=fr" /><link rel="alternate" hreflang="de" href="https://firebase.google.com/docs/storage/android/start?hl=de" /><link rel="alternate" hreflang="he" href="https://firebase.google.com/docs/storage/android/start?hl=he" /><link rel="alternate" hreflang="hi" href="https://firebase.google.com/docs/storage/android/start?hl=hi" /><link rel="alternate" hreflang="id" href="https://firebase.google.com/docs/storage/android/start?hl=id" /><link rel="alternate" hreflang="it" href="https://firebase.google.com/docs/storage/android/start?hl=it" /><link rel="alternate" hreflang="ja" href="https://firebase.google.com/docs/storage/android/start?hl=ja" /><link rel="alternate" hreflang="ko" href="https://firebase.google.com/docs/storage/android/start?hl=ko" /><link rel="alternate" hreflang="pl" href="https://firebase.google.com/docs/storage/android/start?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://firebase.google.com/docs/storage/android/start?hl=pt-br" /><link rel="alternate" hreflang="pt" href="https://firebase.google.com/docs/storage/android/start?hl=pt" /><link rel="alternate" hreflang="ru" href="https://firebase.google.com/docs/storage/android/start?hl=ru" /><link rel="alternate" hreflang="es" href="https://firebase.google.com/docs/storage/android/start?hl=es" /><link rel="alternate" hreflang="es-419" href="https://firebase.google.com/docs/storage/android/start?hl=es-419" /><link rel="alternate" hreflang="th" href="https://firebase.google.com/docs/storage/android/start?hl=th" /><link rel="alternate" hreflang="tr" href="https://firebase.google.com/docs/storage/android/start?hl=tr" /><link rel="alternate" hreflang="vi" href="https://firebase.google.com/docs/storage/android/start?hl=vi" /><title>Get started with Cloud Storage on Android | Cloud Storage for Firebase</title> <meta property="og:title" content="Get started with Cloud Storage on Android | Cloud Storage for Firebase"><meta property="og:url" content="https://firebase.google.com/docs/storage/android/start"><meta property="og:locale" content="en"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Documentation", "item": "https://firebase.google.com/docs" },{ "@type": "ListItem", "position": 2, "name": "Cloud Storage for Firebase", "item": "https://firebase.google.com/docs/storage" },{ "@type": "ListItem", "position": 3, "name": "Get started with Cloud Storage on Android", "item": "https://firebase.google.com/docs/storage/android/start" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="firebase-icy-theme" type="guide" 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="Cloud Storage for 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" aria-label="Lower header breadcrumb"> <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="Firebase Documentation" > Documentation </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/storage" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Cloud Storage for Firebase" > Cloud Storage for Firebase </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> <div class="devsite-banner devsite-banner-announcement nocontent" > <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <style> .devsite-banner-announcement a:link:not(.button), .devsite-banner-announcement a:visited:not(.button) { background: 0; } .devsite-banner-announcement a:hover, .devsite-banner-announcement a:focus { text-decoration: none; } .devsite-banner-announcement .devsite-banner-message-text { margin: 0 auto; } </style> Watch demos on how to build & run AI-powered apps with Firebase at Demo Day '24. <a href="https://firebase.google.com/demo-day/2024?utm_source=firesite&utm_medium=referral&utm_campaign=day_of_firesite_banner&utm_content=" target="_blank" rel="noreferrer noopener">Watch now.</a> </div> </div> </div> <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="Firebase Documentation" > Documentation </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/storage" 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="Cloud Storage for Firebase" > Cloud Storage for 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/build" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > Build </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Cloud Storage for 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://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/touchicon-180.png" project-support-url="https://firebase.google.com/support/" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Get started with Cloud Storage on Android </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> <div class="video-wrapper"> <iframe class="devsite-embedded-youtube-video" data-video-id="r4HgdJKM5ko" data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen> </iframe> </div> <p><span class="notranslate">Cloud Storage for Firebase</span> lets you upload and share user generated content, such as images and video, which allows you to build rich media content into your apps. Your data is stored in a <a href="//cloud.google.com/storage" class="external"><span class="notranslate">Google Cloud Storage</span></a> bucket — an exabyte scale object storage solution with high availability and global redundancy. <span class="notranslate">Cloud Storage for Firebase</span> lets you securely upload these files directly from mobile devices and web browsers, handling spotty networks with ease.</p> <h2 id="before-you-begin" data-text="Before you begin" tabindex="-1">Before you begin</h2> <ol> <li><p>If you haven't already, make sure you've completed the <a href="/docs/android/setup">getting started guide for Android apps</a>. This includes:</p> <ul> <li><p>Creating a Firebase project.</p></li> <li><p>Registering your Android app with the project, and connecting your app to Firebase by adding the Firebase dependencies, the Google services plugin, and your Firebase config file (<code translate="no" dir="ltr">google-services.json</code>) to your app.</p></li> </ul></li> <li><p>Make sure your Firebase project is on the <a href="/pricing">pay-as-you-go Blaze pricing plan</a>. If you're new to Firebase and Google Cloud, check if you're eligible for a <a href="/support/faq#pricing-free-trial">$300 credit</a>.</p></li> </ol> <aside class="note"><b>Important</b>: The following changes to pricing plan requirements are happening for <span class="notranslate">Cloud Storage for Firebase</span>. Learn more in the <a href="/docs/storage/faqs-storage-changes-announced-sept-2024">FAQs</a>. <ul> <li><strong>Starting <nobr>October 30, 2024</nobr></strong>, your Firebase project must be on the <a href="/pricing">pay-as-you-go Blaze pricing plan</a> to provision a new <span class="notranslate">Cloud Storage for Firebase</span> default bucket. The bucket can optionally use the <a href="https://cloud.google.com/storage/pricing#cloud-storage-always-free" class="external">"Always Free" tier</a> for <span class="notranslate">Google Cloud Storage</span>. </li> <li><strong>Starting <nobr>October 1, 2025</nobr></strong>, your Firebase project must be on the <a href="/pricing">pay-as-you-go Blaze pricing plan</a> to maintain access to your default bucket and all other <span class="notranslate">Cloud Storage</span> resources. Any <nobr><code translate="no" dir="ltr">*.appspot.com</code></nobr> default bucket will maintain its current no-cost level of usage even on the Blaze pricing plan. </li> </ul> </aside> <h2 id="create-default-bucket" data-text="Create a default Cloud Storage bucket" tabindex="-1">Create a default <span class="notranslate">Cloud Storage</span> bucket</h2> <ol> <li><p>From the navigation pane of 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>, select <strong>Storage</strong>.</p> <p>If your project is not yet on the pay-as-you-go Blaze pricing plan, then you'll be prompted to upgrade your project.</p></li> <li><p>Click <strong>Get started</strong>.</p></li> <li><p>Select a <a href="/docs/storage/locations">location</a> for your default bucket.</p> <ul> <li><p>Buckets in <nobr><code translate="no" dir="ltr">US-CENTRAL1</code></nobr>, <nobr><code translate="no" dir="ltr">US-EAST1</code></nobr>, and <nobr><code translate="no" dir="ltr">US-WEST1</code></nobr> can take advantage of the <a href="https://cloud.google.com/storage/pricing#cloud-storage-always-free" class="external">"Always Free" tier</a> for <span class="notranslate">Google Cloud Storage</span>. Buckets in all other locations follow <a href="https://cloud.google.com/storage/pricing" class="external"><span class="notranslate">Google Cloud Storage</span> pricing and usage</a>.</p></li> <li><p>If you'd like, you can later <a href="#use_multiple_storage_buckets">create multiple buckets</a>, each with its own location.</p></li> </ul></li> <li><p>Configure the <span class="notranslate">Firebase Security Rules</span> for your default bucket. During development, consider <a href="#set_up_public_access">setting up your rules for public access</a>.</p></li> <li><p>Click <strong>Done</strong>.</p></li> </ol> <p>You can now view the bucket in the <a href="https://console.firebase.google.com/project/_/storage/" class="external"><span class="notranslate">Cloud Storage</span> <em>Files</em> tab</a> of the <span class="notranslate">Firebase</span> console. Your default bucket name format is <nobr><code translate="no" dir="ltr"><var translate="no">PROJECT_ID</var>.firebasestorage.app</code></nobr>.</p> <aside class="note"><strong>Note:</strong><span> Starting <nobr>October 30, 2024</nobr>, all new default <span class="notranslate">Cloud Storage</span> buckets have the name format <nobr><code translate="no" dir="ltr"><var translate="no">PROJECT_ID</var>.firebasestorage.app</code></nobr>. Any default buckets created <em>before</em> that date have the name format <nobr><code translate="no" dir="ltr"><var translate="no">PROJECT_ID</var>.appspot.com</code></nobr>. Learn more in the <a href="/docs/storage/faqs-storage-changes-announced-sept-2024#all-changes-default-storage-bucket">FAQs</a>.</span></aside> <h2 id="set_up_public_access" data-text="Set up public access" tabindex="-1">Set up public access</h2> <p><span class="notranslate">Cloud Storage for Firebase</span> provides a declarative rules language that lets you define how your data should be structured, how it should be indexed, and when your data can be read from and written to. By default, read and write access to <span class="notranslate">Cloud Storage</span> is restricted so only authenticated users can read or write data. To get started without setting up <a href="/docs/auth"><span class="notranslate">Authentication</span></a>, you can <a href="/docs/storage/security/rules-conditions#public">configure your rules for public access</a>.</p> <p>This does make <span class="notranslate">Cloud Storage</span> open to anyone, even people not using your app, so be sure to restrict your <span class="notranslate">Cloud Storage</span> again when you set up authentication.</p> <h2 id="add-sdk" data-text="Add the Cloud Storage SDK to your app" tabindex="-1">Add the <span class="notranslate">Cloud Storage</span> SDK to your app</h2> In your <b>module (app-level) Gradle file</b> (usually <code translate="no" dir="ltr"><project>/<app-module>/build.gradle.kts</code> or <code translate="no" dir="ltr"><project>/<app-module>/build.gradle</code>), add the dependency for the <span class="notranslate">Cloud Storage</span> library for Android. We recommend using the <a href="/docs/android/learn-more#bom"><span class="notranslate">Firebase Android BoM</span></a> to control library versioning. </p> <div></div><devsite-code><pre class="devsite-click-to-copy devsite-code-highlight" translate="no" dir="ltr" is-upgraded syntax="Carbon"><span class="devsite-syntax-nx">dependencies</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><strong><span class="devsite-syntax-c1">// Import the <span class="notranslate">BoM</span> for the Firebase platform</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-nx">implementation</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-nx">platform</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"com.google.firebase:firebase-bom:33.6.0"</span><span class="devsite-syntax-p">))</span></strong> <span class="devsite-syntax-w"> </span><strong><span class="devsite-syntax-c1">// Add the dependency for the <span class="notranslate">Cloud Storage</span> library</span></strong> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// When using the <span class="notranslate">BoM</span>, you don't specify versions in Firebase library dependencies</span> <span class="devsite-syntax-w"> </span><strong><span class="devsite-syntax-nx">implementation</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"com.google.firebase:firebase-storage"</span><span class="devsite-syntax-p">)</span></strong> <span class="devsite-syntax-p">}</span></pre></devsite-code> <p>By using the <a href="/docs/android/learn-more#bom"><span class="notranslate">Firebase Android BoM</span></a>, your app will always use compatible versions of Firebase Android libraries. </p> <devsite-expandable> <p class="showalways"><em>(Alternative)</em> Add Firebase library dependencies <em>without</em> using the <span class="notranslate">BoM</span> </p> <p>If you choose not to use the <span class="notranslate">Firebase BoM</span>, you must specify each Firebase library version in its dependency line.</p> <p><strong>Note that if you use <em>multiple</em> Firebase libraries in your app, we strongly recommend using the <span class="notranslate">BoM</span> to manage library versions, which ensures that all versions are compatible.</strong> </p> <div></div><devsite-code><pre class="devsite-click-to-copy devsite-code-highlight" translate="no" dir="ltr" is-upgraded syntax="Groovy"><span class="devsite-syntax-n">dependencies</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><strong><span class="devsite-syntax-c1">// Add the dependency for the <span class="notranslate">Cloud Storage</span> library</span></strong> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// When NOT using the <span class="notranslate">BoM</span>, you must specify versions in Firebase library dependencies</span> <span class="devsite-syntax-w"> </span><strong><span class="devsite-syntax-n">implementation</span><span class="devsite-syntax-o">(</span><span class="devsite-syntax-s2">"com.google.firebase:firebase-storage:21.0.1"</span><span class="devsite-syntax-o">)</span></strong> <span class="devsite-syntax-o">}</span></pre></devsite-code> </devsite-expandable> <b>Looking for a Kotlin-specific library module?</b> Starting in <a href="/support/release-notes/android#2023-10-30">October 2023 (<span class="notranslate">Firebase BoM</span> 32.5.0)</a>, both Kotlin and Java developers can depend on the main library module (for details, see the <a href="/docs/android/kotlin-migration">FAQ about this initiative</a>). </p> <h2 id="set-up-cloud-storage" data-text="Set up Cloud Storage in your app" tabindex="-1">Set up <span class="notranslate">Cloud Storage</span> in your app</h2> <ol> <li><p>Make sure the Firebase config file (<code translate="no" dir="ltr">google-services.json</code>) in your app's codebase is updated with the name of your default <span class="notranslate">Cloud Storage</span> bucket.</p> <ol> <li><p><a href="https://support.google.com/firebase/answer/7015592#android" class="external">Obtain your updated config file.</a>.</p></li> <li><p>Use this downloaded config file to <em>replace</em> the existing <code translate="no" dir="ltr">google-services.json</code> file in your app's module (app-level) directory.</p> <p>Make sure that you only have this most recent downloaded config file in your app and that its filename isn't appended with additional characters, like <code translate="no" dir="ltr">(2)</code>.</p></li> </ol> <aside class="note"><strong>Note:</strong><span> Alternatively to replacing your config file, you can explicitly specify the bucket name when you create an instance of <code translate="no" dir="ltr">FirebaseStorage</code> (see next step). You can find the bucket name in the <a href="https://console.firebase.google.com/project/_/storage/" class="external"><span class="notranslate">Cloud Storage</span> <em>Files</em> tab</a> of the <span class="notranslate">Firebase</span> console.</span></aside></li> <li><p>Access your <span class="notranslate">Cloud Storage</span> bucket by creating an instance of <code translate="no" dir="ltr">FirebaseStorage</code>:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="kotlin+ktx" data-text=" Kotlin+KTX " tabindex="-1"> <span class="two-line-tab notranslate"><span tab-label="Android" class="notranslate">Kotlin+KTX</span></span> </h3><p><div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" data-code-snippet="true" data-github-path="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt" data-region-tag="storage_field_initialization" is-upgraded syntax="Kotlin"><span class="devsite-syntax-n">storage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Firebase</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">storage<div class="devsite-github-link nocode no-select"><a target="_top" href="https://github.com/firebase/snippets-android/blob/9b6f346bf60b9fa28f7f73f483f462177d268f16/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L37-L37" class="gc-analytics-event" data-category="github_link" data-label="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#storage_field_initialization" >StorageActivity</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">kt</span></a></div></pre></devsite-code> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Kotlin"><span class="devsite-syntax-c1">// Alternatively, explicitly specify the bucket name URL.</span> <span class="devsite-syntax-c1">// val storage = Firebase.storage("gs://<var translate="no">BUCKET_NAME</var>")</span></pre></devsite-code></p></section> <section><h3 id="java" data-text=" Java " tabindex="-1"> <span class="two-line-tab notranslate"><span tab-label="Android" class="notranslate">Java</span></span> </h3><p><div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" data-code-snippet="true" data-github-path="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java" data-region-tag="storage_field_initialization" is-upgraded syntax="Java"><span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">storage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">getInstance</span><span class="devsite-syntax-p">();</span><div class="devsite-github-link nocode no-select"><a target="_top" href="https://github.com/firebase/snippets-android/blob/9b6f346bf60b9fa28f7f73f483f462177d268f16/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L66-L66" class="gc-analytics-event" data-category="github_link" data-label="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#storage_field_initialization" ><span class="devsite-syntax-n">StorageActivity</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">java</span></a></div></pre></devsite-code> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Java"><span class="devsite-syntax-c1">// Alternatively, explicitly specify the bucket name URL.</span> <span class="devsite-syntax-c1">// FirebaseStorage storage = FirebaseStorage.getInstance("gs://<var translate="no">BUCKET_NAME</var>");</span></pre></devsite-code></p></section> </div></li> </ol> <p>You're ready to start using <span class="notranslate">Cloud Storage</span>!</p> <p>Next step? Learn how to <a href="/docs/storage/android/create-reference">create a <span class="notranslate">Cloud Storage</span> reference</a>.</p> <h2 id="advanced_setup" data-text="Advanced setup" tabindex="-1">Advanced setup</h2> <p>There are a few use cases that require additional setup:</p> <ul> <li>Using <span class="notranslate">Cloud Storage</span> buckets in <a href="//cloud.google.com/storage/docs/bucket-locations" class="external">multiple geographic regions</a> </li> <li>Using <span class="notranslate">Cloud Storage</span> buckets in <a href="//cloud.google.com/storage/docs/storage-classes" class="external">different storage classes</a> </li> <li>Using <span class="notranslate">Cloud Storage</span> buckets with multiple authenticated users in the same app</li> </ul> <p>The first use case is perfect if you have users across the world, and want to store their data near them. For example, you can create buckets in the US, Europe, and Asia to store data for users in those regions to reduce latency.</p> <p>The second use case is helpful if you have data with different access patterns. For example: you can set up a multi-regional or regional bucket that stores pictures or other frequently accessed content, and a nearline or coldline bucket that stores user backups or other infrequently accessed content.</p> <p>In either of these use cases, you'll want to <a href="/docs/storage/android/start#use_multiple_storage_buckets">use multiple <span class="notranslate">Cloud Storage</span> buckets</a>.</p> <p>The third use case is useful if you're building an app, like Google Drive, which lets users have multiple logged in accounts (for instance, a personal account and a work account). You can <a href="/docs/storage/android/start#use_a_custom_firebaseapp">use a custom Firebase App</a> instance to authenticate each additional account.</p> <h3 id="use_multiple_storage_buckets" data-text="Use multiple Cloud Storage buckets" tabindex="-1">Use multiple <span class="notranslate">Cloud Storage</span> buckets</h3> <p>If you want to use a <span class="notranslate">Cloud Storage</span> bucket other than the default bucket described earlier in this guide, or use multiple <span class="notranslate">Cloud Storage</span> buckets in a single app, you can create an instance of <code translate="no" dir="ltr">FirebaseStorage</code> that references your custom bucket:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="kotlin+ktx_1" data-text=" Kotlin+KTX " tabindex="-1"> <span class="two-line-tab notranslate"><span tab-label="Android" class="notranslate">Kotlin+KTX</span></span> </h3><div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" data-code-snippet="true" data-github-path="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt" data-region-tag="storage_non_default_bucket" is-upgraded syntax="Kotlin"><span class="devsite-syntax-c1">// Get a non-default Storage bucket</span> <span class="devsite-syntax-kd">val</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nv">storage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Firebase</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">storage</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"gs://my-custom-bucket"</span><span class="devsite-syntax-p">)</span><div class="devsite-github-link nocode no-select"><a target="_top" href="https://github.com/firebase/snippets-android/blob/9b6f346bf60b9fa28f7f73f483f462177d268f16/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L418-L419" class="gc-analytics-event" data-category="github_link" data-label="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#storage_non_default_bucket" ><span class="devsite-syntax-n">StorageActivity</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">kt</span></a></div></pre></devsite-code></section> <section><h3 id="java_1" data-text=" Java " tabindex="-1"> <span class="two-line-tab notranslate"><span tab-label="Android" class="notranslate">Java</span></span> </h3><div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" data-code-snippet="true" data-github-path="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java" data-region-tag="storage_non_default_bucket" is-upgraded syntax="Java"><span class="devsite-syntax-c1">// Get a non-default Storage bucket</span> <span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">storage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">getInstance</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"gs://my-custom-bucket"</span><span class="devsite-syntax-p">);</span><div class="devsite-github-link nocode no-select"><a target="_top" href="https://github.com/firebase/snippets-android/blob/9b6f346bf60b9fa28f7f73f483f462177d268f16/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L538-L539" class="gc-analytics-event" data-category="github_link" data-label="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#storage_non_default_bucket" ><span class="devsite-syntax-n">StorageActivity</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">java</span></a></div></pre></devsite-code></section> </div> <h3 id="working_with_imported_buckets" data-text="Working with imported buckets" tabindex="-1">Working with imported buckets</h3> <p>When importing an existing <span class="notranslate">Cloud Storage</span> bucket into Firebase, you'll have to grant Firebase the ability to access these files using the <code translate="no" dir="ltr">gsutil</code> tool, included in the <a href="//cloud.google.com/sdk/docs/" class="external"><span class="notranslate">Google Cloud</span> SDK</a>:</p> <div></div><devsite-code><pre class="devsite-terminal" translate="no" dir="ltr" is-upgraded> gsutil -m acl ch -r -u service-<var translate="no">PROJECT_NUMBER</var>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<var translate="no">BUCKET_NAME</var> </pre></devsite-code> <p>You can find your project number as described in the <a href="/docs/projects/learn-more#project-number">introduction to Firebase projects</a>.</p> <p>This does not affect newly created buckets, as those have the default access control set to allow Firebase. This is a temporary measure, and will be performed automatically in the future.</p> <h3 id="use_a_custom_firebase_app" data-text="Use a custom Firebase App" tabindex="-1">Use a custom Firebase App</h3> <p>If you're building a more complicated app using a custom <code translate="no" dir="ltr">FirebaseApp</code>, you can create an instance of <code translate="no" dir="ltr">FirebaseStorage</code> initialized with that app:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="kotlin+ktx_2" data-text=" Kotlin+KTX " tabindex="-1"> <span class="two-line-tab notranslate"><span tab-label="Android" class="notranslate">Kotlin+KTX</span></span> </h3><div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" data-code-snippet="true" data-github-path="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt" data-region-tag="storage_custom_app" is-upgraded syntax="Kotlin"><span class="devsite-syntax-c1">// Get the default bucket from a custom FirebaseApp</span> <span class="devsite-syntax-kd">val</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nv">storage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Firebase</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">storage</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">customApp</span><span class="devsite-syntax-o">!!</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-c1">// Get a non-default bucket from a custom FirebaseApp</span> <span class="devsite-syntax-kd">val</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nv">customStorage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">Firebase</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">storage</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">customApp</span><span class="devsite-syntax-p">,</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s">"gs://my-custom-bucket"</span><span class="devsite-syntax-p">)</span><div class="devsite-github-link nocode no-select"><a target="_top" href="https://github.com/firebase/snippets-android/blob/9b6f346bf60b9fa28f7f73f483f462177d268f16/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#L427-L431" class="gc-analytics-event" data-category="github_link" data-label="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/kotlin/StorageActivity.kt#storage_custom_app" ><span class="devsite-syntax-n">StorageActivity</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">kt</span></a></div></pre></devsite-code></section> <section><h3 id="java_2" data-text=" Java " tabindex="-1"> <span class="two-line-tab notranslate"><span tab-label="Android" class="notranslate">Java</span></span> </h3><div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" data-code-snippet="true" data-github-path="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java" data-region-tag="storage_custom_app" is-upgraded syntax="Java"><span class="devsite-syntax-c1">// Get the default bucket from a custom FirebaseApp</span> <span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">storage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">getInstance</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">customApp</span><span class="devsite-syntax-p">);</span> <span class="devsite-syntax-c1">// Get a non-default bucket from a custom FirebaseApp</span> <span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">customStorage</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">FirebaseStorage</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">getInstance</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">customApp</span><span class="devsite-syntax-p">,</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s">"gs://my-custom-bucket"</span><span class="devsite-syntax-p">);</span><div class="devsite-github-link nocode no-select"><a target="_top" href="https://github.com/firebase/snippets-android/blob/9b6f346bf60b9fa28f7f73f483f462177d268f16/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#L547-L551" class="gc-analytics-event" data-category="github_link" data-label="firebase/snippets-android/storage/app/src/main/java/com/google/firebase/referencecode/storage/StorageActivity.java#storage_custom_app" ><span class="devsite-syntax-n">StorageActivity</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">java</span></a></div></pre></devsite-code></section> </div> <h2 id="next_steps" data-text="Next steps" tabindex="-1">Next steps</h2> <ul> <li><p>Prepare to launch your app:</p> <ul> <li><p>Enable <a href="/docs/app-check/android"><span class="notranslate">App Check</span></a> to help ensure that only your apps can access your storage buckets. </li> <li><p>Set up <a href="/docs/projects/billing/avoid-surprise-bills#set-up-budget-alert-emails">budget alerts</a> for your project in the <span class="notranslate">Google Cloud</span> console.</p></li> <li><p>Monitor the <a href="//console.firebase.google.com/project/_/usage" class="external"><em>Usage and billing</em> dashboard</a> in the <span class="notranslate">Firebase</span> console to get an overall picture of your project's usage across multiple Firebase services. You can also visit the <a href="//console.firebase.google.com/project/_/storage/usage"><span class="notranslate">Cloud Storage</span> <em>Usage</em> dashboard</a> for more detailed usage information. </p></li> <li><p>Review the <a href="/support/guides/launch-checklist">Firebase launch checklist</a>.</p></li> </ul></li> </ul> <devsite-hats-survey class="nocontent" hats-id="Eo9GZTcG10ncf3CThQj0SEgFWynR" listnr-id="5244646"></devsite-hats-survey> </div> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Cloud Storage for 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://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/touchicon-180.png" project-support-url="https://firebase.google.com/support/" > <button> Send feedback </button> </devsite-feedback> <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="Cloud Storage for 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://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/firebase/images/touchicon-180.png" 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": "guide", "projectName": "Cloud Storage for 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="960U+g9gRzEyU7dajFTIBzConULXuc"> (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,["CloudShell__cloud_shell_button","Search__enable_ai_eligibility_checks","Profiles__require_profile_eligibility_for_signin","Cloud__enable_cloud_shell","MiscFeatureFlags__developers_footer_dark_image","Experiments__reqs_query_experiments","MiscFeatureFlags__enable_variable_operator","Cloud__enable_cloudx_experiment_ids","DevPro__enable_developer_subscriptions","MiscFeatureFlags__enable_view_transitions","MiscFeatureFlags__enable_dark_theme","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__emergency_css","Cloud__enable_cloudx_ping","Search__enable_ai_search_summaries","Cloud__enable_cloud_shell_fte_user_flow","MiscFeatureFlags__developers_footer_image","Profiles__enable_profile_collections","MiscFeatureFlags__enable_project_variables","Cloud__enable_free_trial_server_call","Profiles__enable_developer_profiles_callout","Search__enable_page_map","Cloud__enable_llm_concierge_chat","Search__enable_dynamic_content_confidential_banner","TpcFeatures__enable_mirror_tenant_redirects","MiscFeatureFlags__enable_explain_this_code","Profiles__enable_complete_playlist_endpoint","Concierge__enable_concierge","Analytics__enable_clearcut_logging","Profiles__enable_public_developer_profiles","Profiles__enable_page_saving","Cloud__enable_cloud_dlp_service","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_awarding_url","CloudShell__cloud_code_overflow_menu","Concierge__enable_pushui","Search__enable_suggestions_from_borg","Profiles__enable_release_notes_notifications","Profiles__enable_completecodelab_endpoint","Profiles__enable_recognition_badges","Significatio__enable_by_tenant","BookNav__enable_tenant_cache_key","DevPro__enable_cloud_innovators_plus","Cloud__enable_legacy_calculator_redirect","TpcFeatures__enable_required_headers","Cloud__enable_cloud_facet_chat","Profiles__enable_dashboard_curated_recommendations"],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],[16,2],[17,1],[36,4]],null,1],null,4],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>