Note that the complete deletion of a project requires 30 days
and counts toward your quota until it is fully deleted.

How many Firebase apps can I
have in a project?

A project is a container for apps across iOS, Android and web.
While there is no restriction on number of apps within a project,
adding an app can create one or more underlying OAuth 2.0 client
IDs. There is a limit of around 30 client IDs that can be created
within a single project.

You should ensure that all apps within a project are platform
variants of the same application from an end user perspective. For
example, if you develop a white label application, each
independently labelled app should have its own Firebase project.

Do I need to provide a SHA-1
when adding an Android app?

A SHA-1 is only required if you are using either
Firebase Invites or Firebase Dynamic Links. Adding a SHA-1 to your
project simplifies the Google Sign-In configuration with
Firebase Authentication.

If you're not using these features, you don't have to provide a
SHA-1.

How do I resolve this
error: "An OAuth2 client already exists for this package name and
SHA-1 in another project"?

This error occurs if we detect that another Firebase or Google
Cloud project contains an OAuth 2.0 client ID with the package name
and SHA-1 that you specified. You can resolve this by following
the instructions here.

How is my Firebase
console language determined?

The language setting for the Firebase console is based on
the language selected in your Google
account settings under "Account Preferences" >
"Language and Input Tools".

The Firebase console is available in the following
languages:

English

Brazilian Portuguese

French

German

Indonesian

Japanese

Korean

Russian

Simplified Chinese

Spanish

Traditional Chinese

What roles and permissions
does the Firebase console support?

The Firebase console and Google Cloud console use the same
underlying roles and permissions. At a high-level, these are owner,
editor, and viewer.

A project owner can add other members to the
project, link other Google services such as
Play/AdMob/Ads/BigQuery and has full edit access on the
project.

A project editor has full edit access on the
project.

A project viewer has only read access on the
project. Note that our UI currently does not hide/disable edit UI
controls for project viewers, but these operations will fail for
users with viewer role.

What are the
prerequisites for linking Play/AdMob/AdWords/BigQuery to my Firebase
project?

For linking your Play account, you need to be
both a Firebase project owner and a Play account owner.

For linking your AdMob app, you need to be
both a Firebase project owner and an AdMob administrator.

For linking your AdWords account, you need to
be both a Firebase project owner and an AdWords administrator.

For linking your BigQuery project, you need to
be the Firebase project owner.

What are the
supported browsers for accessing Firebase console?

The Firebase console can be accessed from recent versions of
popular desktop browsers such as Chrome, Firefox, Safari and Edge.
Mobile browsers are currently not fully supported.

What open source notices
should I include in my app?

On iOS, the Firebase pod contains a NOTICES file which includes
the relevant entries. The Android SDK contains contains a helper
activity for showing license information.

What versions of Xcode does Firebase support?

Firebase supports up to two major versions of Xcode, not including versions of Xcode
that Apple no longer supports. For example, starting in March 2019, Apple requires at
least iOS 12 on all iOS apps, meaning Xcode 9 support will be dropped and Xcode 10 will
be the only major version supported.

Changes to support for specific minor or patch versions of Xcode
(for example, 9.2.0 to 9.4.1) are determined based on the needs of the Firebase iOS
SDK and a survey of developer usage. These changes are reflected in the
Firebase iOS SDK release notes
and on the Firebase iOS SDK setup page.

Firebase's paid infrastructure products are the Realtime Database,
Storage, functions, Hosting, Test Lab, and
phone authentication. We offer a free tier for all of these
features.

Firebase also has many free products:
Analytics, Cloud Messaging, the Notifications composer,
Remote Config, App Indexing, Dynamic Links, Invites, and
Crash Reporting. You can use an unlimited amount
of any of these products in all plans, including our free Spark
plan. In addition, all Authentication features beyond phone
authentication are free.

How do I know which plan is right for me?

Our Spark plan is a great place to develop your app for free,
whether a hobby project or the next big start-up. You get all the
free Firebase features (Analytics, the Notifications composer,
Crash Reporting, and so on) and generous amounts of our paid
infrastructure features. However, if you exceed your Spark plan
resources in a calendar month, your app will be shut off for the
remainder of that month. In addition, Google
Cloud Platform features are not available in the Spark tier.

Our Flame plan is designed for early-stage startups and small-
production apps looking for a predictable, low price but with
more capacity than our free-tier offers for the Realtime Database,
Storage, or Hosting resources. Like the Spark plan,
Google Cloud Platform is not available on the Flame plan.
Exceeding your plan resources in any month will cause your app to
be shut off for the remainder of that month.

Our Blaze plan is designed for large-scale production apps and
apps that cannot accept downtime for exceeding plan limits. The
Blaze plan also allows you to extend your app with paid Google
Cloud Platform features. You pay only for the resources that you
consume, allowing you to scale with demand. We strive to make our
Blaze plan prices competitive with industry-leading cloud
providers.

How is the free usage in the Blaze plan different from the free
usage in the Spark plan?

Free usage on the Blaze plan is calculated daily. Usage limits
also differ from the Spark plan for Cloud Functions, phone
authentication and Test Lab.

For Cloud Functions, free usage on the Blaze plan is
calculated at the billing account level, not the project level
and has the following limits:

2M invocations/month

400K GB-seconds/month

200K CPU-seconds/month

5 GB of networking egress/month

For phone authentication, free usage on the Blaze plan is calculated
monthly.

For Test Lab, free usage on the Blaze plan has the following
limits:

30 physical device minutes/day

60 virtual device minutes/day

Does the free usage quota reset when I change from a Spark to a
Blaze plan?

Free usage from the Spark plan is included in the Blaze plan.
Free usage does not reset when moving to a Blaze plan.

What is a "simultaneous database connection"?

A simultaneous connection is equivalent to one mobile device,
browser tab, or server app connected to the database. Firebase
imposes hard limits on the number of simultaneous
connections to your app's database. These limits are in place to
protect both Firebase and our users from abuse.

The Spark plan limit is 100 and cannot be raised. The Flame and
Blaze plans have a limit of 100,000 simultaneous connections per
database.

This limit isn't the same as the total number of users of your
app, because your users don't all connect at once. If you need
more than 100,000 simultaneous connections, please read
Scale with Multiple Databases.

What happens if I exceed Spark or Flame plan storage or download
limits for Realtime Database?

To provide you with a predictable price, the resources
available to you in the Spark and Flame plans are capped. This
means
that when you exceed any plan limit in any month, your app will be
turned off to prevent any further resource usage and additional
charges.

What happens if I exceed Spark plan simultaneous connection limits
for Realtime Database?

When your app reaches its concurrents limit on the Spark plan, any
subsequent connections will be rejected until some of the existing
connections are closed. The app will continue to work for users
who are connected.

What happens if I exceed Spark or Flame plan upload, download or
storage limits for Cloud Storage?

When you exceed limits for Cloud Storage in a
project on the Spark or Flame plan, the result depends on the
type of limit that you exceed:

If you exceed the GB stored limit, you will
not be able to store any more data in that project unless you
remove some of the data stored or upgrade to a plan that provides
more storage space, or unlimited storage space.

If you exceed the GB downloaded limit, your
app will not be able to download more data until the next day
(starting at midnight, US Pacific Time), unless you upgrade to a
plan with less restrictive limits, or with no limits.

If you exceed the upload or download operations
limit, your app will not be able to upload or download more data
until the next day (starting at midnight, US Pacific Time), unless
you upgrade to a plan with less restrictive limits, or with no
limits.

How does Firebase's integration with Google Cloud Platform work?

Firebase is deeply integrated with
Google Cloud
Platform. Projects are shared between Firebase and Google
Cloud Platform, so projects can have Firebase services and Google
Cloud Platform services enabled. You can access the same project
from the Firebase console or the Google Cloud Console.
Specifically:

Certain Firebase features are backed directly by Google Cloud
Platform, such as Firebase Storage. The list of features backed
by Google Cloud Platform will continue to grow over time.

Many of your settings, including collaborators and billing
information, are shared by Firebase and Google Cloud Platform.
Your usage of both Firebase and Google Cloud Plaform appears on
the same bill.

In addition, when you upgrade to the Blaze plan,
you can use any of Google Cloud Platform's world-class
Infrastructure-as-a-Service and APIs directly inside
your Firebase project, at standard
Google Cloud Platform pricing.
You can
also export data from Google Analytics for Firebase directly to
BigQuery for analysis. To learn more, see
Link BigQuery with Firebase.

There are many security-enhancing, latency-improving, and
time-saving benefits to using Google Cloud Platform with Firebase
(versus other, cloud services that are not co-located). Check out
the Google Cloud
Platform site for more details.

What happens to my Firebase project if I add or remove billing
accounts for that project in the Google Cloud Console?

If a billing account is added to a project in the Google Cloud
Console, the same project will automatically be upgraded to the
Firebase Blaze plan if that project is currently on the Spark or
Flame plan.

In contrast, if an existing active billing account is removed from
a project in the Google Cloud Console, that project will be
downgraded to the Firebase Spark plan.

Can I upgrade, downgrade, or cancel at any time?

Yes, you can upgrade, downgrade, or cancel at any time. Note that
we don't provide prorated refunds for downgrades or cancellations.
This means that if you downgrade or cancel before the end of your
billing period, you still pay for the remainder of the month.

What kind of support will I receive?

All Firebase apps, including free plans, come with email support
from Firebase staff during US Pacific business hours. All accounts
are limited to ten technical (troubleshooting) questions per
year, but have unlimited support for billing-related issues,
account-related issues, and incident reports.

Can I cap usage on the Blaze plan?

No, you cannot currently cap your Blaze plan usage. We are
evaluating options for supporting caps on Blaze plan usage.

Blaze users can define a budget for their project or account,
and receive alerts as their spending approaches those limits.
For more information see
Set Budget Alerts.

Are Flame plan fees prorated if I sign up or downgrade partway
through the month?

Yes for upgrades and no for downgrades. You can upgrade or
downgrade at any time. Upgrades are prorated, and downgrades are
not prorated. If you sign up for the Flame plan partway through
the month, you will be charged only for the remainder of the
month. However, if you downgrade partway through the month, you'll
be charged for the remainder of the month (this is to prevent
abuse).

Do you offer open-source, nonprofit, or educational discounts?

Our Spark and Flame plans can be used by any type of individual or
organization, including nonprofits, schools, and open-source
projects. Since these plans already include generous quotas, we
don't offer any special discounts or plans for open-source,
nonprofit, or educational projects.

Our Blaze plan is suitable for enterprises of all sizes, and our
SLA
meets or exceeds the industry standard for cloud infrastructure.
However, we do not currently offer Enterprise contracts, pricing,
or support, nor do we offer dedicated infrastructure hosting
(that is, on-premises installations) for services like our
Realtime Database. We are hard at work adding some of these features.

Do you offer ad-hoc pricing? I only want pay-as-you-go for one or
two features.

We offer ad-hoc pricing in the Blaze plan, where you pay only for
the features you use.

How do the paid Firebase plans work with Ads? Are there
free advertising credits with paid plans?

The Firebase pricing plans are separate from Ads, so
there are no free advertising credits. As a Firebase developer,
you are able to "link" your Ads account to Firebase to
support conversion tracking.

All ads campaigns are managed directly in Ads, and
Ads billing is managed from the Ads Console.

Analytics: Why is Google Analytics for
Firebase a recommended part of using Firebase products?

Google Analytics for Firebase is a free and unlimited analytics solution
that works with Firebase features to deliver powerful insights. It
enables you to view event logs in Firebase Crash Reporting,
notification effectiveness in Firebase Notifications, deep
link performance for Firebase Dynamic Links, and in-app purchase
data from Google Play. It powers advanced audience targeting in
Firebase Remote Config, Firebase Notifications, and more.

Google Analytics for Firebase acts as a layer of intelligence in the
Firebase console to provide you with more actionable insights about
how to develop a high quality app, grow your user base, and
earn more money.

Google Analytics for Firebase is a part of the core Firebase SDK.
Integrating Google Analytics for Firebase is fast and easy. To get started,
read the documentation.

Analytics: How do I segment users who have have
not met some criterion?

You can reframe the problem by "negatively targeting" these users.
For example, reframe the problem as "Don't show ads to people who
have bought something", and form an
audience
of those users to target.

Analytics: How
do I control how my Analytics data is shared with rest of
Firebase?

By default, your Google Analytics for Firebase data is used to
enhance other Firebase and Google features. You can control how your
Google Analytics for Firebase data is shared in your project settings
anytime. Learn more about Data
sharing settings.

Analytics: How do I create closed funnels?

In Google Analytics for Firebase, the Funnels page only
shows open funnels. To create closed funnels, the events that the
developers create have to enforce this. For example, if the
following flows are possible:

Flow 1: Screen A, Screen B, Screen C, Screen D

Flow 2: Screen X, Screen Y, Screen C, Screen D

You could log the following events :

Flow 1 → A, B, C_1, D_1

Flow 2 → X, Y, C_2, D_2

Each set of these creates a closed funnel in Analytics. You can
then create an audience of users who log all events in each
Flow.

Firebase Authentication:
Which countries are supported for phone authentication?

Firebase Authentication supports phone number verification across the
the world, but not all networks reliably deliver our verification
messages. The following countries have good rates of delivery, and
should be expected to work well for phone number sign in.

Country

Code

AD

Andorra

AE

United Arab Emirates

AF

Afghanistan

AG

Antigua and Barbuda

AL

Albania

AM

Armenia

AO

Angola

AR

Argentina

AS

American Samoa

AT

Austria

AU

Australia

AW

Aruba

AZ

Azerbaijan

BA

Bosnia and Herzegovina

BB

Barbados

BD

Bangladesh

BE

Belgium

BF

Burkina Faso

BG

Bulgaria

BJ

Benin

BM

Bermuda

BN

Brunei Darussalam

BO

Bolivia

BR

Brazil

BS

Bahamas

BT

Bhutan

BW

Botswana

BY

Belarus

BZ

Belize

CA

Canada

CD

Congo, (Kinshasa)

CF

Central African Republic

CG

Congo (Brazzaville)

CH

Switzerland

CI

Côte d'Ivoire

CK

Cook Islands

CL

Chile

CM

Cameroon

CO

Colombia

CR

Costa Rica

CV

Cape Verde

CW

Curaçao

CY

Cyprus

CZ

Czech Republic

DE

Germany

DJ

Djibouti

DK

Denmark

DM

Dominica

DO

Dominican Republic

DZ

Algeria

EC

Ecuador

EG

Egypt

ES

Spain

ET

Ethiopia

FI

Finland

FJ

Fiji

FK

Falkland Islands (Malvinas)

FM

Micronesia, Federated States of

FO

Faroe Islands

FR

France

GA

Gabon

GB

United Kingdom

GD

Grenada

GE

Georgia

GF

French Guiana

GG

Guernsey

GH

Ghana

GI

Gibraltar

GL

Greenland

GM

Gambia

GP

Guadeloupe

GQ

Equatorial Guinea

GR

Greece

GT

Guatemala

GY

Guyana

HK

Hong Kong, SAR China

HN

Honduras

HR

Croatia

HT

Haiti

HU

Hungary

ID

Indonesia

IE

Ireland

IL

Israel

IM

Isle of Man

IN

India

IQ

Iraq

IT

Italy

JE

Jersey

JM

Jamaica

JO

Jordan

JP

Japan

KE

Kenya

KG

Kyrgyzstan

KH

Cambodia

KM

Comoros

KN

Saint Kitts and Nevis

KR

Korea (South)

KW

Kuwait

KY

Cayman Islands

KZ

Kazakhstan

LA

Lao PDR

LB

Lebanon

LC

Saint Lucia

LI

Liechtenstein

LK

Sri Lanka

LS

Lesotho

LT

Lithuania

LU

Luxembourg

LV

Latvia

LY

Libya

MA

Morocco

MD

Moldova

ME

Montenegro

MF

Saint-Martin (French part)

MG

Madagascar

MK

Macedonia, Republic of

MM

Myanmar

MN

Mongolia

MO

Macao, SAR China

MS

Montserrat

MT

Malta

MU

Mauritius

MW

Malawi

MX

Mexico

MY

Malaysia

MZ

Mozambique

NA

Namibia

NC

New Caledonia

NE

Niger

NF

Norfolk Island

NG

Nigeria

NI

Nicaragua

NL

Netherlands

NO

Norway

NP

Nepal

NZ

New Zealand

OM

Oman

PA

Panama

PE

Peru

PG

Papua New Guinea

PH

Philippines

PK

Pakistan

PL

Poland

PM

Saint Pierre and Miquelon

PR

Puerto Rico

PS

Palestinian Territory

PT

Portugal

PY

Paraguay

QA

Qatar

RE

Réunion

RO

Romania

RS

Serbia

RU

Russian Federation

RW

Rwanda

SA

Saudi Arabia

SC

Seychelles

SE

Sweden

SG

Singapore

SH

Saint Helena

SI

Slovenia

SK

Slovakia

SL

Sierra Leone

SN

Senegal

SR

Suriname

ST

Sao Tome and Principe

SV

El Salvador

SZ

Swaziland

TC

Turks and Caicos Islands

TG

Togo

TH

Thailand

TL

Timor-Leste

TM

Turkmenistan

TO

Tonga

TR

Turkey

TT

Trinidad and Tobago

TW

Taiwan, Republic of China

TZ

Tanzania, United Republic of

UA

Ukraine

UG

Uganda

US

United States of America

UY

Uruguay

UZ

Uzbekistan

VC

Saint Vincent and Grenadines

VE

Venezuela (Bolivarian Republic)

VG

British Virgin Islands

VI

Virgin Islands, US

VN

Viet Nam

WS

Samoa

YE

Yemen

YT

Mayotte

ZA

South Africa

ZM

Zambia

ZW

Zimbabwe

Crash Reporting:
Why are there fewer crash reports in Analytics than
Crash Reporting?

Crash Reporting creates a separate background process to upload
crash info. If your app extends the Android Application class, you
must ensure it is multi-process safe. Otherwise, it may cause
concurrency issues. When an app extends an Application object, this
object gets instantiated for each process in a multi-process app.
Consider the following when adding Crash Reporting to your
app:

If the implementation of this object accesses any
out-of-process state (a database, the file system, shared
preferences, etc), or performs other actions not safe for a
multi-process environment, concurrency issues might arise. This is
because multiple instances of the Application object may run
simultaneously.

Many third-party libraries keep out-of-process state (e.g. in a
local database) and are subject to the same concurrency issues if
they are initialized from the Application object. If your app fits
this description and you plan to use Crash Reporting in your
app, we strongly encourage you to consider moving the Application
logic to Content Providers, or to Android Activities. Any
Application logic that is not safe for a multi-process environment
can have unintended effects on your app.

Crash Reporting automatically exports captured errors to
Google Analytics for Firebase as app_exception events. Currently on Android,
you may see a significant discrepancy between the number of Crash
Reporting errors and Analytics app_exception events.

Cloud Messaging: What's
the difference between the Notifications composer and Cloud Messaging?

Firebase Cloud Messaging provides a complete set of messaging
capabilities through its client SDKs and HTTP and XMPP server
protocols. For deployments with more complex messaging requirements,
FCM is the right choice.

The Notifications composer is a lightweight, serverless messaging
solution built on Firebase Cloud Messaging. With a user-friendly
graphical console and reduced coding requirements,
the Notifications composer lets users easily send messages to
reengage and retain users, foster app growth, and support marketing
campaigns.

Capabilities

Notifications composer

Cloud Messaging

Target

Single device

Clients subscribed to topics
(i. e. weather)

Clients in predefined user segment (app, version, language)

Clients in specified analytics audiences

Clients in device groups

Upstream from client to server

Message Type

Notifications up to 2kb

Data messages up to 4kb

Delivery

Immediate

Future client device local time

Analytics

Built-in Notifications analytics collection and funnel
analytics

Cloud Messaging: Do I
need to use other Firebase services in order to use FCM?

You can use Firebase Cloud Messaging as a standalone component, in
the same manner as you did with GCM, without using other Firebase
services.

FCM is the new version of GCM under the Firebase brand.
It inherits GCM’s core infrastructure, with new SDKs to make
Cloud Messaging development easier.

Benefits of upgrading to FCM SDK include:

Simpler client development. You no longer have to write your
own registration or subscription retry logic.

An out-of-the-box notification solution. You can use
the Notifications composer, a serverless notifications solution
with a web console that lets anyone send notifications to target
specific audiences based on insights from Google Analytics for
Firebase.

To upgrade from GCM SDKs to FCM SDKs, see the
guides for migrating
Android
and
iOS apps.

When it looks like devices haven't successfully received messages,
check first for these two potential causes:

Foreground message handling for notification messages.
Client apps need to add message handling logic to handle
notification messages when the app is in the foreground on the device.
See the details for
iOS and
Android.

Network firewall restrictions. If your organization has a
firewall that restricts the traffic to or
from the Internet, you need to configure it to allow connectivity with
FCM in order for
your Firebase Cloud Messaging client apps to receive messages.
The ports to open are:

5228

5229

5230

FCM usually uses 5228, but
it sometimes uses 5229 and 5230. FCM does not provide specific IPs,
so you should allow your firewall to accept outgoing connections to all
IP addresses contained in the IP blocks listed in Google's
ASN of 15169.

Cloud Messaging: I have
implemented onMessageReceived in my Android app, but it
is not being called.

When your app is in the background,
notification messages are displayed
in the system tray, and onMessageReceived is not called.
For notification messages with a data payload, the notification message
is displayed in the system tray, and the
data that was included with the notification message can be retrieved from the
intent launched when the user taps on the notification.

Realtime Database:
Why was my Realtime Database reported bandwidth lower than average
between September 2016 and March 2017?

For our bandwidth calculations, we normally include SSL encryption
overhead (based on layer 5 of the OSI model). However, in September
2016, we introduced a bug that caused our bandwidth
reporting to ignore encryption overhead. This might have resulted
in artificially low reported bandwidth and bills on your account for
a few months.

We released a fix for the bug in late March 2017, returning bandwidth
reporting and billing to their normal levels.

Realtime Database:
What are the scaling limitations of the Realtime Database?

Each Realtime Database instance has limits on the number of write
operations per second. For small writes, this limit is approximately
1000 write operations per second. If you are approaching this
limit,
batching operations using multi-path updates can help you
achieve higher throughput.

Realtime Database:
What can I do if I'm over my Realtime Database usage limits?

If you've received an email alert or notification in the Firebase
console that you've exceeded your Realtime Database usage limits, you
can address it based on the usage limit you've exceeded. To see
your Realtime Database usage, go to the
Realtime Database usage
section of the Firebase console.

If you're over your download limit, you can
upgrade your Firebase plan or wait until your
download limit resets at the start of your next billing cycle. To
decrease your downloads, try the following steps:

Add queries to limit the data that your listen operations return.

Check for unindexed queries.

Use listeners that only download updates to data — for example,
on() instead of once().

Use security rules to block unauthorized downloads.

If you're over your storage limit, upgrade your
plan to avoid service disruptions. To reduce the amount of data in
your database, try the following steps:

Run periodic cleanup jobs.

Reduce any duplicate data in your database.

Note that it may take some time to see any data deletions reflected
in your storage allotment.

Firebase Storage creates a default bucket in the Google App Engine
free tier. This allows you to quickly get up and running with
Firebase and Firebase Storage, without having to put in a credit
card or enable a billing account. It also allows you to easily share
data between Firebase and a Google Cloud Platform project.

There are, however, two known cases where this bucket cannot be
created and you will be unable to use Firebase Storage:

A project imported from Google Cloud Platform which had a Google
App Engine Master/Slave Datastore application.

A project imported from Google Cloud Platform which has domain
prefixed projects. For example: domain.com:project-1234.

There are currently no workarounds to these issues, and we recommend
that you create a new project in the Firebase console and enable
Firebase Storage in that project.

When your app fetches parameter values from the Remote Config
service, those values are cached locally but not activated. To
activate fetched values so that they can take effect, call
activateFetched. This design lets you control when the
behavior and appearance of your app changes, because you can choose
when to call activateFetched. After you call
activateFetched, your app source code determines when
updated parameter values are used.

For example, you could fetch values and then activate them the next
time a user starts your app, which removes the need to delay app
startup while your app waits for fetched values from the service.
Changes to your app's behavior and appearance then occur when your app
uses the updated parameter values.

Remote Config:
I am making a lot of fetch requests while developing my app. Why
doesn't my app always get the latest values from the service when it
sends fetch requests?

Remote Config caches values locally after the first successful
fetch request. By default the cache expires after 12 hours, but you
can change the cache expiration for a specific request by passing
the desired cache expiration, in seconds, to
fetchWithExpirationDuration:completionHandler:
(on iOS)
or
fetch
(on Android).

Note that if you reduce this expiration time to a very small
value, you might start hitting the client-side throttling limit,
which prevents your client from making a fetch request more than a
few times per hour. You can increase the client-side quota by
enabling developer mode, which gives each app instance over a dozen
fetches every five minutes. To enable developer mode in your app,
you can temporarily add
a FirebaseRemoteConfigSettings property (on iOS) or
object (on Android) to your app with
isDeveloperModeEnabled set to true. You
must remove this property or object before distributing your app.

If you enable developer mode, please be aware that you may run
the risk of hitting the hourly service-side quota limits. If you're
just testing your app with a small 10-person development team, this
risk is pretty low. But if you pushed your app out to
thousands of test users with developer mode enabled, your app would
probably hit this quota. So, make sure that you disable developer
mode and increase the cache expiration time (if needed) before you
push your app to a large test group, or to production.

Remote Config:
How quickly does the Remote Config service return fetched values
after my app sends a fetch request?

Devices usually receive fetched values in less than a second, and
often receive fetched values in milliseconds.
The Remote Config service handles fetch requests within
milliseconds, but the time required to complete a fetch request will
depend on the network speed of the device and the latency of the
network connection used by the device.

If your goal is to make fetched values take effect in your app as
soon as possible, but without creating a jarring user experience,
consider adding calls to activateFetched each time that
your app does a full screen refresh.

The getInvitation API clears the saved Dynamic Link
to prevent it from being accessed twice. Be sure to call this API
with the autoLaunchDeepLink parameter set to
false in each of the deep link activities to clear it
for the case when the activity is triggered outside the main
activity.

Notifications composer: What's the
difference between the Notifications composer and Cloud Messaging?

The Notifications composer is a lightweight, serverless messaging
solution built on Firebase Cloud Messaging. With a user-friendly
graphical console and reduced coding requirements,
the Notifications composer lets users easily send messages to
reengage and retain users, foster app growth, and support marketing
campaigns.

Firebase Cloud Messaging provides a complete set of messaging
capabilities through its client SDKs and HTTP and XMPP server
protocols. For deployments with more complex messaging requirements,
FCM is the right choice.

Here's a comparison of the messaging capabilities provided by
Firebase Cloud Messaging and the Notifications composer:

Capabilities

Notifications composer

Cloud Messaging

Target

Single device

Clients subscribed to topics
(i. e. weather)

Clients in predefined user segment (app, version, language)

Clients in specified analytics audiences

Clients in device groups

Upstream from client to server

Message Type

Notifications up to 2kb

Data messages up to 4kb

Delivery

Immediate

Future client device local time

Analytics

Built-in Notifications analytics collection and funnel
analytics

Notifications composer: I am an
existing Google Cloud Messaging (GCM) developer, and I want to use
the Notifications composer. What should I do?

The Notifications composer is an out-of-the-box solution that
lets anyone send notifications to target specific audiences based
on insights from Google Analytics for Firebase. Also,
the Notifications composer provides funnel analysis for every message,
allowing easy evaluation of notification effectiveness.

If you are an existing GCM developer, to use the Notifications composer
you have to upgrade from GCM SDKs to FCM SDKs. See the
guides for migrating
Android
and
iOS apps.

Predictions: I just added
Google Analytics for Firebase to my app. When should I expect to see
predictions in the console?

Predictions are based on your users’ behavior, and the more
history that's available, the better. At a bare minimum,
Firebase Predictions needs two weeks of data: one week of
activity to train on, and then one week to see what that activity
led to (churning, spending, etc.). Beyond the first two weeks, the
quality of the predictions will typically increase as
Predictions observes longer sequences of user activity.

Predictions: How long does it take for
predictions to be made about a new user?

For an app that is already instrumented with
Google Analytics for Firebase and trained with baseline data, predictions
can be made for new users as early as the next day after they start
using the app.

App Indexing: Can Google Search index multiple
languages for a single app?

Google Search supports the following multi-language cases:

The associated website has unique URLs for each language, and
there is one corresponding app HTTP URL for each web URL.

The associated website has unique URLs for each language, but
there is only one app HTTP URL. The app uses system language
settings to display the correct language content.

The associated website has one URL for all languages (or it
supports only one language), and there is one corresponding app
URL. The website and the application must display the content in
the same language when the user has set no preference.

iOS does not require sitemaps, and Android does not require them
as long as your app supports HTTP URLs. For custom URLs, you do not
need to add sitemaps via Search Console. You can reference sitemaps
in your robots.txt file and Google Search will use them.
Learn
more about Managing sitemaps. However, submitting a sitemap
through Search Console lets you see statistics on submitted and
indexed HTTP URLs in Search Console.

AdMob: Will I be able to link my Windows apps to
Firebase?

Windows apps are not currently supported in the
Firebase console.

AdMob: Why can't I link my AdMob
account from the Firebase console?

You can link an AdMob app to a Firebase app via the AdMob
console. In order to link the account you need to be both a
Firebase project owner and an AdMob admin.

AdMob: Can multiple users link their AdMob
account to a Firebase app?

No, every AdMob account will only have one primary user. The
primary user is the first user to accept the Firebase terms of service.

A/B Testing: How many experiments can I
create and run?

You are allowed 20 experiments per project,
which could consist of up to 6 running experiments and up to
14 draft experiments.

However, an end user/app instance can only
be placed in 3 experiments at a given time. For example, if you
create 6 experiments targeting 100% of the related user
population, then
app instances qualifying for more than 3 active
experiments are sent only the least recent 3 experiments.
In such a case, the 4th, 5th, 6th experiments might not end up
with any users placed in them.