Our mission for Firebase is to help you build better apps and grow your
business, by providing tools that solve common problems throughout your app
development lifecycle. We manage your backend infrastructure, provide you with
the tools to improve the quality and stability of your app, and help you acquire
and engage users, so you can focus on building a fantastic user experience.
To date, over one million developers have used Firebase to build their
apps across iOS, Android and the web. It's both inspiring and humbling to hear
the many stories that all of you share with us. Take Doodle, for instance, a
company that helps you find the best date and time to meet with people. Doodle
recently used Firebase to redesign their app and increase retention and
engagement.
We're excited to be hosting the second annual Firebase Dev Summit here in
Amsterdam, where we get to meet many members of our developer community! We've
been working hard to improve Firebase, so that our products work seamlessly
together, and we have several exciting new updates to share today. We've
integrated Crashlytics into Firebase, enabled first-class A/B support and taken
our first step in bringing the power of Google's machine learning into Firebase
with a new product called Predictions. We've also made a few other
improvements, so let's dive in!
Bringing Crashlytics into Firebase
Since Fabric
joined Google, we've been working to bring the best of our platforms
together. Today we're announcing a big step in that journey: we're adding
Crashlytics to the Firebase Console for new and existing Firebase users.
Crashlytics is the best-in-class
crash reporter that helps you track, prioritize, and fix stability issues
that erode your app quality, in realtime. We'll be rolling out this update over
the next several weeks, but if you're eager to try it out sooner, you can visit
g.co/firebase/opt-in and get access
today.
We're also integrating Crashlytics with other parts of Firebase. You can now use
Crashlytics events to trigger Cloud Functions and power custom workflow
integrations. For example, you can automate a workflow to route issues in a
critical app flow - like your purchase path - to a particular developer or Slack
room, ensuring the proper escalations, reducing the time to resolution, and
increasing stability.
Redesigning the console
In addition to bringing Crashlytics to Firebase, collaborating with the Fabric
team has allowed us to make some exciting updates to the Firebase console that
will help you find key information about your app more easily and efficiently.
First of all, you're going to notice a new structure in the left-hand navigation
bar. We've clustered Firebase products into four main areas, based on the app
development lifecycle: Develop, Stability, Analytics, and Grow. All of the
products that you're used to seeing in the Firebase console are still there;
we've simply reorganized things to more accurately reflect the way your team
works.
We've also redesigned the first screen you see when you open a Firebase project
— what we call your Project Overview screen. We've heard from you that the
majority of the time, when you come to the console, you're looking for four main
statistics: daily active users, monthly active users, crash-free user rate, and
total crashes. We've taken those four key metrics and made them front-and-center
for any apps in the project. We've also added sparklines, so you can understand
how your app is trending over time.
Finally, we've overhauled the Analytics section of the console. You'll find a
new dashboard that is organized around the questions and tasks that you tackle
on a day-to-day basis. We've also added a Latest Release section that gives you
all the information you need about the stability and adoption of your latest app
release, so you can make quick decisions after a launch. Lastly, we've added
realtime cards to both of these sections, so you can have up-to-the-second
insight into your app data. Like Crashlytics, these changes are rolling out over
the next few weeks, but you can get access today by visiting g.co/firebase/opt-in.
Analytics dashboard, before and after
Improving the Cloud Messaging API
Firebase Cloud Messaging (FCM) gives you an easy way to send notifications to
your users, either programmatically or through the Firebase Console. However,
sending cross-platform notifications with more complex functionality has been
difficult, sometimes requiring you to create multiple, separate messages.
Today, we're announcing a new RESTful, FCM HTTP v1 API that makes it safer and
easier to send messages to your cross-platform applications. The new FCM API
allows you to use platform-specific fields in a single notification. For
example, you might send a simple text notification to iOS, but a request with a
click_action to Android, all in one API call. To read more about the new FCM
API, visit our
documentation.
Announcing a new A/B testing framework
In addition to FCM, another powerful tool for driving user engagement and
retention is Remote Config. Up until now, running variant tests with either
Remote Config or FCM has been manual and quite some work. We've heard from many
of you that you want an easier way to test how different app variants or push
notification messages impact your key business metrics.
Today, we're launching the beta version of A/B testing, a new Firebase feature
that's integrated with Analytics, FCM and Remote Config. It's built on the
statistical engine and years of learning from Google Optimize, our free
website testing and personalization product, and makes it easy to design
experiments right from the Firebase console.
Setting up an A/B test is quick and simple. You can create an experiment with
Remote Config or FCM, define different variant values and population sizes to
test on, then set the experiment goal. From there, Firebase will take care of
the rest, automatically running the experiment then letting you know when a
winner towards your goal is determined with statistical significance. Learn more
and get
started with A/B testing here.
Introducing Firebase Predictions
Whether you're driving engagement, revenue, or a different business metric,
determining the right targeting can be difficult. Being proactive, instead of
reactive, is always better, but up until now, there's been no easy way to
anticipate what actions your users are likely to take. To help with this, we're
taking our first step in bringing the power of Google's machine learning to
Firebase with a new product called Firebase Predictions.
We've already started using machine learning in other parts of Google, to
enhance consumer products like Photos, Inbox, or the Assistant. Now, you can
harness Google's machine learning, using Firebase, to help you build great
products. Predictions automatically creates dynamic user groups based on
predicted behavior from your Analytics data and, out of the box, it will
generate four user groups:
Users who are predicted to churn in the next 7 days
Users who are predicted to stay engaged with your app
Users who are predicted to spend money
Users who are predicted to not spend money in the next 7 days
You can use these predictions for targeting with Remote Config and notifications
composer, giving you the ability to only show ads to users who are predicted to
not spend money in your app or send a notification to users who are predicted to
churn in the next 7 days.
You can also create predictions for any Analytics conversion event in your app. For example, if completing level 3
is an important milestone in your app, you can create a prediction for users who
are likely to not hit that milestone and then send them an in-app promotion
using Remote Config.
We're already hearing from partners that Predictions helps them drive growth in
their key business metrics. Halfbrick, a games developer known for popular
titles such as Fruit Ninja and Dan the Man, used Predictions and Remote Config
and boosted their 7-day retention rate by 20%! To learn more about Predictions,
as well as read the full Halfbrick story, visit our product page
here.
Looking to the future
While we're excited about the updates to Firebase that we've announced today, we
also know that there's a lot more work to be done. We are working hard to
prepare for the General Data Protection Regulation (GDPR) across Firebase and
we're committed to helping you succeed under it. Offering a data processing
agreement where appropriate is one important step we're taking to make sure that
Firebase works for you, no matter how large your business or where your users
are. We'll also be publishing tools and documentation to help developers ensure
they are compliant. You can check out our privacy FAQs at g.co/firebase/gdpr.
As we continue to grow and improve the platform, we'd love to have your input.
Join our Alpha program to help shape the future of the platform and stay on the cutting edge of Firebase.
If you weren't able to join us in person in Amsterdam, all of our sessions are
recorded and posted to our YouTube
channel. Thanks for being a part of our community and happy building!
We're just days away from the Firebase Dev Summit in Amsterdam! This means that
all across the company, dozens of engineers and product managers are hopping on
planes and saying to themselves, "Oh, whoops. I guess I better start working on
that presentation."
Just kidding! As your conference organizer, I've had a chance to see a sneak
preview of what's in store for you at the Firebase Dev Summit. And I feel
confident telling you that this year's Dev Summit will be full of exciting
product announcements, instructor-led codelabs, and way too many jokes about
wooden shoes.
Now if you can't attend the Firebase Conference in person, never fear! We'll be
livestreaming all of the talks from the main track in our YouTube channel,
starting at 10:00 AM (Amsterdam time). And if this ends up being inconvenient
for your time zone, that's okay. All of those talks, along with the in-depth
sessions from our secondary track, will be recorded and posted within hours. So
you can stay informed of the latest Firebase news while also getting a good
night's sleep.
So while it's always hard to pick my favorite talks out of all of the great ones
we've got lined up, here are a few that I'm pretty excited about:
Firebase overview and announcements: If you just tune in to one
presentation, make it this one. This is where we'll be covering all of the major
announcements around what's new in Firebase. Thought we were done with the announcement
of Cloud Firestore? Nope! We've got even more on the way and you can find
out about it here!
Actionable insights with Firebase: Speaking of new and exciting
announcements, this suspiciously-vaguely-worded presentation might contain a few
details about some exciting new developments with Firebase. Or it might not.
You'll just have to tune in to find out!
Automating your app's release process using fastlane: fastlane
has been one of the most popular open-source tools among mobile developers,
helping to automate many of the tedious parts of releasing an app, so you can
focus on the fun bits. If you're not familiar yet with fastlane, this is a great
way to find out everything that it can do for you.
BigQuery for Analytics: There's a lot of amazing stuff you can
perform with BigQuery and Google Analytics for Firebase, but it can also be
incredibly overwhelming for mobile developers whose SQL skills might be a little
rusty. Todd will be showing you some really useful tricks that you can do with
BigQuery to make tackling those SQL queries a little more useful.
Write production quality Cloud Functions code Cloud Functions
for Firebase is a powerful tool that you can use to help realize your goal of
creating a truly serverless app. But they can sometimes be tricky to get right.
And while Jennifer's videos are a great way to get started with Cloud Functions,
Thomas and Lauren's presentation can help you move your Cloud Functions from
"neat little parlor trick" to "production-level toolkit".
Of course, these are just my thoughts; you're the ones who want to know more
about Firebase, so feel free to check out the talk that's of most interest to
you! My only strong opinion is about where you can get the best stroopwafels.
(Honestly, you should just get the cheap packs at the supermarket, because the
fancy ones just aren't worth it.)
It's October and Halloween is around the corner! I'm sure many of you have scary costumes to
put together. When you're not spending time planning your costume masterpiece,
check out some of the new features available in Firebase Test Lab for
Android:
Robo test improvements
Test Lab's automated Robo test
leveled up recently! Robo now crawls your app with about double the previous
coverage. That means it will reach more screens and take more actions, which
boosts its ability to find crashes throughout your app. In fact, the rate of
finding crashes has gone up by about 62%. Robo is very motivated to find those
scary
bugs before they frighten your users away! If you haven't run a Robo test
against your app, just upload your APK to Test Lab in the Firebase console at no
cost. You also get a Robo test with your pre-launch
report in the Play Console. For the crafty among you, you could possibly make
your own Robo.
Faster test results
If you run a lot of tests with the gcloud
command line, and primarily want to know if your tests simply pass or fail,
you can speed up your tests by opting out of some of the extra information that
Test Lab collects for you. Passing the --no-record-video flag will opt out of
the collection of the video of your app, and --no-performance-metrics will opt
out of performance data collected for game loop tests.
So use these options to give your tests a good cardio workout for sustained high
speed, which is imperative for escaping zombies.
Support for Android Test Orchestrator
The Android
Testing Support Library recently published some enhancements to the tooling
used to test Android apps. With these updates, you can now make use of Android
Test Orchestrator, which helps you isolate your Android test cases and
therefore promote more consistent test results. Test Lab now supports this
handy utility, so consider making use of it in your test suites today. Here's a
gratuitous link to an orchestra
in costume.
If you want to chat with the Test Lab team and others in the community who love
testing their apps, why don't you join the Firebase Slack and find us in the
#test-lab channel? There's no tricks there, only treats.
Author's Note: This post was updated on January 31st 2019 to reflect the fact that Cloud Firestore has graduated from Beta to General Availability
Hey, did you hear the big news? We just announced the release of Cloud Firestore -- the new database that lets you easily store and sync app data to the cloud, even in realtime!
Now if you're experiencing some deja vu, you're not alone. We realize this sounds awfully similar to another product you might already be using -- the Firebase Realtime Database. So if you're experiencing some deja vu, you're not alone.
So why did we build another database? And when would you choose one over another? Well, let's talk about what's new and different with Cloud Firestore, and why you might want to use it for your next app.
What's different with Cloud Firestore?
While our documentation covers all of the differences between the Realtime Database and Cloud Firestore in much more detail, let's look at the main differences between the two products. And we'll start with...
Better querying and more structured data
While the Firebase Realtime Database is basically a giant JSON tree where anything goes and lawlessness rules the land1, Cloud Firestore is more structured. Cloud Firestore is a document-model database, which means that all of your data is stored in objects called documents that consist of key-value pairs -- and these values can contain any number of things, from strings to floats to binary data to JSON-y looking objects the team likes to call maps. These documents, in turn, are grouped into collections.
Your Cloud Firestore database will probably consist of a few collections that contain documents that point to subcollections. These subcollections will contain documents that point to other subcollections, and so on.
This new structure gives you several important advantages in being able to query your data.
For starters, all queries are shallow, meaning that you can simply fetch a document without having to fetch all of the data contained in any of the linked subcollections. This means you can store your data hierarchically in a way that makes sense logically without worrying about downloading tons of unnecessary data.
In this example, the document at the top can be fetched without grabbing any of the documents in the subcollections below
Second, Cloud Firestore has more powerful querying capabilities than the Realtime Database. In the Realtime Database, trying to create a query across multiple fields was a lot of work and usually involved denormalizing your data.
For example, imagine you had a list of cities, and you wanted to find a list of all cities in California with a population greater than 500k.
Cities, stored in the Realtime Database
In the Realtime Database, you'd need to conduct this search by creating an explicit "states plus population" field and then running a query sorted on that field.
Creating a combined state_and_population field, just for queries
With Cloud Firestore, this work is no longer necessary. In some cases, Cloud Firestore can automatically search across multiple fields. In other cases, like our cities example, Cloud Firestore will guide you towards automatically building an index required to make these kinds of queries possible…
...and then you can simply search across multiple fields.
Cloud Firestore will automatically maintain this index for you throughout the lifetime of your app. No combo fields required!
Designed to Scale
While the Realtime Database does scale to meet the needs of many apps, things can start to get difficult when your app becomes really popular, or your dataset gets truly massive.
Cloud Firestore, on the other hand, is built on top of the same Google Cloud infrastructure that powers some pretty popular apps. So it will be able to scale much more easily and to a much greater capacity than the Realtime Database can. While the Realtime Database tops out at about 100,000 concurrent connections, for instance, Cloud Firestore will accept up to 1,000,000 concurrent client connections per database. For a complete list of Cloud Firestore's limits, be sure to visit the documentation.
Cloud Firestore also has a more robust Service Level Agreement than the Realtime Database. Cloud Firestore guarantees 99.999% uptime in multi-region instances (more on that below) and 99.99% uptime in regional instances. The Realtime Database, by contrast, guarantees 99.95% uptime.
And with the new querying structure, all Cloud Firestore queries scale to the size of your result set -- not the size of your data. This means that a search for the top 10 restaurants in Chicago for a restaurant review app will take the same amount of time whether your database has 300 restaurants, 300 thousand or 30 million. As one engineer here likes to put it, "It's basically impossible to create a slow query in Cloud Firstore."
Easier manual fetching of data
While some developers appreciated the real-time nature of the Realtime Database for building features like chat or enabling magical collaborative experiences, we found that many of our developers simply wanted to use the Realtime Database as a traditional, "Just fetch data when I ask for it" kind of service.
Although the Realtime Database does support this with .once calls, they can sometimes feel a bit unnatural to use and often play second-fiddle to the streaming methods within the SDKs. With Cloud Firestore, making simple one-time fetch queries is much more natural and is built as a primary use case within the Firestore API.
Of course, you can still add support for listeners, so that your clients have the ability to receive updates whenever you data changes in the database. But now you have the flexibility to retrieve your data however you'd like.
Multi-Region support for better reliability and more locations
Cloud Firestore has support for multi-region locations. This means that your data is automatically copied to multiple geographically separate regions at once. So if some unforeseen disaster were to render a data center -- or even an entire region -- offline, you can rest assured that your data will continue to be served
And for you database aficionados out there, we should point out that Cloud Firestore offers strong consistency (just like Cloud Spanner!), which means that you get the benefits of multi-region support, while also knowing that you'll be getting the latest version of your data whenever you perform a read.
There are currently two different multi-region locations you could use to host your data (one in North America, the other in Europe). And for those of you who don't need the heavy-duty capabilities of a multi-region database, Cloud Firestore also offers several regional instances in locations around the world, most of which will be available at a lower price tier starting in early March, 2019. By contrast, the Realtime Database is only hosted in North America.
Different pricing model
The two databases have fairly different pricing models: The Realtime Database primarily determines cost based on the amount of data that's downloaded, as well as the amount of data you have stored on the database.
While Cloud Firestore does charge for these things as well, they are significantly lower than what you would see in the Realtime Database2. Instead, Cloud Firestore's pricing is primarily driven by the number of reads or writes that you perform.
What this means is that if you have a more traditional mobile app where your client is occasionally requesting larger chunks of data from your database -- think something like a news app, a dating app, or a turn-based multiplayer game, for instance -- you will find that Cloud Firestore's pricing model might be more favorable than if you ran the same app on the Realtime Database.
On the other hand, if you have an app that's making very large numbers of reads and writes per second per client (for instance, a group whiteboarding app, where you might be broadcasting everybody's drawing updates to everybody else several times a second), Cloud Firestore will probably be more expensive.3 At least for that portion of your app -- you can always use both databases together, and that's fine, too.
Of course these are just rough guidelines, make sure you check out the Pricing section of our documentation for all the details on Cloud Firestore pricing.
Why you still might want to use the Realtime Database
With this list of changes, you might come away with the impression that Cloud Firestore is simply better than the Realtime Database. And while Cloud Firestore does have a fair number of improvements over the Realtime Database, there are still a few situations where you might want to consider using the Realtime Database for some of your data. Specifically…
The Realtime Database has native support for presence -- that is, being able to tell when a user has come online or gone offline. While we do have a solution for Cloud Firestore, it's not quite as elegant.
The Realtime Database has slightly better latency. Usually not by much, but it's something to keep in mind if you have a special need for very low-latency operations.
As we noted above, Cloud Firestore's pricing model means that applications that perform very large numbers of small reads and writes per second per client could be significantly more expensive than a similarly performing app in the Realtime Database.
The tl;dr: Just tell me what to use!
In general, we recommend that new applications start with Cloud Firestore, unless you think that your app has unique needs, like those we outlined above, that make it more suitable for the Realtime Database.
On the other hand, if you have an existing database that's already running just fine on the Realtime Database, go ahead and keep it there! If you find you're running up against issues where Cloud Firestore could really help you out, then you could consider switching, or moving part of your data to Cloud Firestore and using both databases together. But don't switch just for the sake of switching.
And if you're looking for a magic, "Please convert my database from the Realtime Database to Cloud Firestore" button, there isn't one4! And, frankly, we don't know if there ever will be. Given how different the database, querying, and pricing structures are between the two, blindly converting a database that's been optimized for the Realtime Database over to Cloud Firestore wouldn't necessarily be a great experience. We want you to be more thoughtful about making this kind of change.
There's a lot we think you'll be able to do with Cloud Firestore and we're excited to see what kinds of apps you're able to build with it. As always, if you have questions, you can hit us up on any of our support channels, or post questions on Stack Overflow with the google-cloud-firestore and firebase tags. Good luck, and have fun!
Today we're excited to launch Cloud Firestore, a fully-managed NoSQL document
database for mobile and web app development. It's designed to easily store and
sync app data at global scale, and it's now available in beta.
Key features of Cloud Firestore include:
Documents and collections with powerful querying
iOS, Android, and Web SDKs with offline data access
Real-time data synchronization
Automatic, multi-region data replication with strong consistency
Node, Python, Go, and Java server SDKs
And of course, we've aimed for the simplicity and ease-of-use that is always top
priority for Firebase, while still making sure that Cloud Firestore can scale to
power even the largest apps.
Optimized for app development
Managing app data is still hard; you have to scale servers, handle intermittent
connectivity, and deliver data with low latency.
We've optimized Cloud Firestore for app development, so you can focus on
delivering value to your users and shipping better apps, faster. Cloud
Firestore:
Synchronizes data between devices in real-time. Our
Android, iOS, and Javascript SDKs sync your app data almost instantly. This
makes it incredibly easy to build reactive apps, automatically sync data across
devices, and build powerful collaborative features -- and if you don't need
real-time sync, one-time reads are a first-class feature.
Uses collections and documents to structure and query data.
This data model is familiar and intuitive for many developers. It also allows
for expressive queries. Queries scale with the size of your result set, not the
size of your data set, so you'll get the same performance fetching 1 result from
a set of 100, or 100,000,000.
Enables offline data access via a powerful, on-device
database. This local database means your app will function smoothly,
even when your users lose connectivity. This offline mode is available on Web,
iOS and Android.
Enables serverless development. Cloud Firestore's
client-side SDKs take care of the complex authentication and networking code
you'd normally need to write yourself. Then, on the backend, we provide a
powerful set of security rules so you can control access to your data. Security
rules let you control which users can access which documents, and let you apply
complex validation logic to your data as well. Combined, these features allow
your mobile app to connect directly to your database.
Integrates with the rest of the Firebase platform. You can
easily configure Cloud Functions to run custom code whenever data is written,
and our SDKs automatically integrate with Firebase Authentication, to help you
get started quickly.
Putting the 'Cloud' in Cloud Firestore
As you may have guessed from the name, Cloud Firestore was built in close
collaboration with the Google Cloud Platform team.
This means it's a fully managed product, built from the ground up to
automatically scale. Cloud Firestore is a multi-region replicated database that
ensures once data is committed, it's durable even in the face of unexpected
disasters. Not only that, but despite being a distributed database, it's also
strongly consistent, removing tricky edge cases to make building apps easier
regardless of scale.
It also means that delivering a great server-side experience for backend
developers is a top priority. We're launching SDKs for Java, Go, Python, and
Node.js today, with more languages coming in the future.
Another database?
Over the last 3 years Firebase has grown to become Google's app development
platform; it now has 16 products to build and grow your app. If you've used
Firebase before, you know we already offer a database, the Firebase Realtime
Database, which helps with some of the challenges listed above.
The Firebase Realtime Database, with its client SDKs and real-time capabilities,
is all about making app development faster and easier. Since its launch, it has
been adopted by hundred of thousands of developers, and as its adoption grew, so
did usage patterns. Developers began using the Realtime Database for more
complex data and to build bigger apps, pushing the limits of the JSON data model
and the performance of the database at scale.
Cloud Firestore is inspired by
what developers love most about the Firebase Realtime Database while also
addressing its key limitations like data structuring, querying, and scaling.
So, if you're a Firebase Realtime Database user today, we think you'll love
Cloud Firestore. However, this does not mean that Cloud Firestore is a drop-in
replacement for the Firebase Realtime Database. For some use cases, it may make
sense to use the Realtime Database to optimize for cost and latency, and it's
also easy to use both databases together. You can read a more in-depth
comparison between the two databases here.
We're continuing development on both databases and they'll both be available in
our console and documentation.
Get started!
Cloud Firestore enters public beta starting today. If you're comfortable using a
beta product you should give it a spin on your next project! Here are some of
the companies and startups who are already building with Cloud Firestore: