Turning a great app into a successful business requires more than simply releasing your app and calling it a day. You need to quickly adapt to your user’s feedback, test out new features and deliver content that your users care about most.
This is what Firebase Remote Config is made for. By allowing you to change the look and feel of your app from the cloud, Firebase Remote Config enables you to stay responsive to your user’s needs. Firebase Remote Config also enables you to deliver different content to different users, so you can run experiments, gradually roll out features, and even deliver customized content based on how your users interact within your app.
Let's look at what you can accomplish when your wire up your app to work with Remote Config.
We've all had the experience of shipping an app and discovering soon afterwards that it was less than perfect. Maybe you had incorrect or confusing text that your users don't like. Maybe you made a level in your game too difficult, and players aren't able to progress past it. Or maybe it was something as simple as adding an animation that takes too long to complete.
Traditionally, you'd need to fix these kinds of mistakes by updating those values in your app's code, building and publishing a new version of your app, and then waiting for all your users to download the new version.
But if you've wired up your app for Remote Config in the Firebase platform, you can quickly and easily change those values directly in the cloud. Remote Config can download those new values the next time your user starts your app and address your users' needs, all without having to publish a new version of your app.
Firebase Remote Config allows you to deliver different configurations to targeted groups of users by making use of conditions, which use targeting rules to deliver specific values for different users. For example, you can send down custom Remote Config data to your users in different countries. Or, you can send down different data sets separately to iOS and Android devices.
You can can also deliver different values based on audiences you've defined in Firebase Analytics for some more sophisticated targeting. So if you want to change the look of your in-app store just for players who have visited your store in the past, but haven't purchased anything yet, that's something you can do by creating Remote Config values just for that audience.
Remote Config conditions also allow you to deliver different values to random sets of users. You can take advantage of this feature to run A/B tests or to gradually rollout new features.
If you are launching a new feature in your app but aren't sure if your audience is going to love it, you can hide it behind a flag in your code. Then, you can change the value of that flag using Remote Config to turn the feature on or off. By defining a "My New Feature Experiment" condition that is active for, say, 10% of the population, you can turn on this new feature for a small subset of your users, and make sure it's a great experience before you turn it on for the rest of your population.
Similarly, you can run A/B tests by supplying different values to different population groups. Want to see if people are more likely to complete a purchase if your in-app purchase button says, "Buy now" or "Checkout"? That's the kind of experiment you can easily run using A/B tests.
If you want to track the results of these A/B tests, you can do that today by setting a user property in Firebase Analytics based on your experiment. Then, you can filter any of your Firebase Analytics reports (like whether or not the user started the purchase process) by this property. Watch this space for news on upcoming improvements to A/B testing.
Many of our early partners have already been using Firebase Remote config to test out changes within their app.
Fabulous, an app from Duke University's designed to help people adopt better lifestyle habits, wanted to experiment with their getting started flow to see which methods were most effective for getting their users up and running in their app. They not only A/B tested changes like images, text, and button labels, but they also A/B tested the entire onboarding process by using Remote Config to determine what dialogs people saw and in what order.
Thanks to their experiments with Remote Config, Fabulous was able to increase the number of people who completed their onboarding flow from 42% to 64%, and their one-day retention rate by 27%.
Research has shown that an average app loses the majority of their users in the first 3 days, so making these kinds of improvements to your app's onboarding process -- and confirming their effectiveness by conducting A/B tests -- can be crucial to ensuring the long-term success of your app.
When you use remote config Remote Config, you can supply all of your default values locally on the device, then only send down new values from the cloud where they differ from your defaults. This gives you the flexibility to wire up every value in your app to be potentially configurable through Remote Config, while keeping your network calls lightweight because you're only sending down changes. So feel free to take all your hard-coded strings, constants, and that AppConstants file you've got sitting around (it's okay, we all have one), and wire 'em up for Remote Config!
Firebase Remote Config is part of the Firebase platform and is available for free on both iOS and Android. If you want to find out more, please see our documentation and be sure to explore all the features of the Firebase SDK.
Firebase Cloud Messaging is a cross-platform messaging solution that lets you reliably deliver messages and notifications to Android, iOS or the Web at no cost. For example, you can specify that new data is available for sync, special offers are ready to re-engage users and more. Messages can be sent to individual devices, groups of devices, or even topics that devices are subscribed to.
Messages can carry a payload of up to 4k, and can also be sent upstream from devices to a central server or other devices.
Firebase Cloud Messaging is the successor to Google Cloud Messaging, and you can learn details here about your options if you already use Google Cloud Messaging.
We’ve provided some great samples if you want to get started in building apps that use Firebase Cloud Messaging, or you can follow the walkthroughs on Android, iOS or the Web.
Welcome, current and new Firebase developers! There's a lot to discover with the Firebase platform -- more than we could possibly explain in a single blog post. So over the next several weeks, we'll be sharing posts focusing on each of the individual features of Firebase. For our first post, we wanted to let you know about Firebase Analytics -- the free and unlimited analytics solution for mobile developers.
Analytics are at the heart of successful apps, so when we expanded Firebase to help mobile developers build better apps and grow successful businesses, we thought it was important to build an analytics solution that serves the needs of all app developers, from two-person startups to large, established companies.
Meet Firebase Analytics, a free and unlimited analytics tool built from the ground up for mobile apps. Firebase Analytics is at the core of the Firebase platform, providing the insights you need to build successful apps.
Firebase Analytics helps you understand what your users are doing in your app. It has all of the metrics that you’d expect in an app analytics tool (average revenue per user (ARPU), active users, retention reports, event counts, etc.) combined with user properties like device type, app version, and OS version to give you insight into how users interact with your app.
Collecting all of this data is simple and works right out of the box. When you add Firebase to your app, key events are measured automatically – including first opens (think of these like installs), in-app purchases, and more. With up to 500 distinct event types (each with up to 25 key-value pair parameters) you can measure additional suggested and custom events that are unique to your app with just a few lines of code.
Some events are more important to you than others, so with conversion tracking you can define the most important events that happen in your app (like purchasing an item, or sharing your app with others) and create funnels just for these events to discover where users drop out of the process.
But Firebase Analytics helps you analyze more than just user behavior. It also provides a rich set of data that helps describe your users – data like geographic information, demographics, and interests that can help you better tune your app and refine your marketing activities.
While standard demographic data is helpful, it’s also important to understand user properties specific to your app. Firebase Analytics lets you define custom user properties for all of your users. For example, your fitness app can record a user's favorite exercise or your music app can record your user's favorite genre. Firebase Analytics is also integrated with BigQuery, Google’s fully-managed data warehouse, so you can export your raw Firebase data and join it with custom data for additional analysis.
Understanding user behavior is just one important part of Firebase Analytics -- you also need to understand how your advertising and marketing activities influence those behaviors. Firebase Analytics can automatically link user behaviors within your app to a traffic source so you know where your valuable users are coming from. It works with Google AdWords and more than 20 other major ad networks without having to install any additional SDKs, making it easy to understand the ROI of your marketing and advertising spend. You can also import Firebase Analytics conversion events directly into Google AdWords so you can bid on specific user events that happen in your app with just a few clicks.
Firebase Analytics is designed to make your analytics data actionable. You can use the Audiences feature to create a segment of users based on their event data and user properties. For example, an audience of people who have added items to their cart but haven't made a purchase. Or an audience of classical music fans who have listened to more than 200 songs.
You can then use these audiences in conjunction with other Firebase features, like Remote Config, which allows you to change the look-and-feel of your app just for a specific audience. Want to create a customized home screen for users who have subscribed to your newsletter or have reached a certain level in your fitness app? You can do that directly from the Firebase console using Remote Config and Audiences in Firebase Analytics.
Firebase Analytics Audiences also work with Notifications, allowing you to send in-app notifications to any audience that you've defined. So, if you've just added a new set of armor to your game's in-app storefront, you can notify only the users who have purchased in-game items in the past. In addition, when your Firebase account is linked to AdWords, you can use audiences to re-engage lapsed users with ad campaigns. To learn more about the app analytics capabilities in Firebase Analytics, check out our video:
While Firebase works well as a standalone tool, the true power of Firebase Analytics lies in the customer insight it brings to other Firebase capabilities - insight that helps you grow, develop, and earn with your mobile app.
Eighteen months ago, Firebase joined Google. Since then, our backend-as-a-service (BaaS) that handles the heavy lifting of building an app has grown from a passionate community of 110,000 developers to over 450,000.
Our current features -- Realtime Database, User Authentication, and Hosting -- make app development easier, but there’s more we can do, so today, we’re announcing a major expansion!
Firebase is expanding to become a unified app platform for Android, iOS and mobile web development. We’re adding new tools to help you develop faster, improve app quality, acquire and engage users, and monetize apps. On top of this, we’re launching a brand new analytics product that ties everything together, all while staying true to the guiding principles we’ve had from the beginning:
Firebase Analytics is our brand new, free and unlimited analytics solution for mobile apps. It benefits from Google’s experience with Google Analytics, and features some new capabilities for apps:
Firebase Analytics is user and event-centric and gives you insight into what your users are doing in your app. You can also see how your paid advertising campaigns are performing with cross-network attribution, which tells you where your users are coming from. You can see all of this from a single dashboard.
Firebase Analytics is also integrated with other Firebase offerings to provide a single source of truth for in-app activity and through a feature called Audiences. Audiences let you define groups of users with common attributes. Once defined, these groups can be accessed from other Firebase features -- to illustrate, we’ll reference Audiences throughout this post.
To help you build better apps, our suite of backend services is expanding.
Google Cloud Messaging, the most popular cloud-to-device push messaging service in the world, is integrating with Firebase and changing its name to Firebase Cloud Messaging (FCM). Available for free and for unlimited usage, FCM supports messaging on iOS, Android, and the Web, and is heavily optimized for reliability and battery-efficiency. It’s built for scale and already sends 170 billion messages per day to two billion devices.
One of our most requested features is the ability to store images, videos, and other large files. We’re launching Firebase Storage so developers can easily and securely upload and download such files. Firebase Storage is powered by Google Cloud Storage, giving it massive scalability and allowing stored files to be easily accessed by Google Cloud projects. The Firebase Storage client SDKs have advanced logic to gracefully handle poor network conditions.
Firebase Remote Config gives you instantly-updatable variables that you can use to tune and customize your app on the fly to deliver the best experience to your users. You can enable or disable features or change the look and feel without having to publish a new version. You can also target configurations to specific Firebase Analytics Audiences so that each of your users has an experience that’s tailored for them.
In addition, we’re continuing to invest heavily in our existing backend products, Firebase Realtime Database, Firebase Hosting, and Firebase Authentication. Authentication has seen the biggest updates, with brand new SDKs, and an upgraded backend infrastructure. This provides added security, reliability, and scale using the same technologies that power Google’s own accounts. We’ve also added new Authentication features including email verification and account linking. For Hosting, custom domain support is now free for all developers, and the Database has a completely rebuilt UI. We’re working hard on other great Realtime Database features, stay tuned for those.
We’re adding two new offerings to Firebase to help you deliver higher quality apps.
When your app crashes, it’s bad for your users and it hurts your business. Firebase Crash Reporting gives you prioritized, actionable reports to help you diagnose and fix problems in your iOS or Android app after it has shipped. We’ve also connected Crash Reporting to Audiences in Firebase Analytics, so you can tell if users on a particular device, in a specific geography, or in any other custom segment are experiencing elevated crash rates.
Cloud Test Lab, announced last year at Google I/O, is now Firebase Test Lab for Android. Test Lab helps you find problems in your app before your users do. It allows for both automatic and customized testing of your app on real devices hosted in Google data centers.
After you’ve launched your app, we can help you grow and re-engage users with five powerful growth features.
Firebase Notifications is a new UI built on top of the Firebase Cloud Messaging APIs that lets you easily deliver notifications to your users without writing a line of code. Using the Notifications console you can re-engage users, run marketing campaigns, and target messages to Audiences in Firebase Analytics.
Firebase Dynamic Links make URLs more powerful in two ways. First, they provide “durability” -- links persist across the app install process so users are taken to the right place when they first open your app. This “warm welcome” increases engagement and retention. Second, they allow for dynamically changing the destination of a link based on run-time conditions, such as the type of browser or device. Use them in web, email, social media, and physical promotions to gain insight into your growth channels.
Firebase Invites turns your customers into advocates. Your users can easily share referral codes or their favorite content via SMS or email to their network, so you can increase your app's reach and retention.
Firebase App Indexing, formerly Google App Indexing, brings new and existing users to your app from the billions of Google searches. If your app is already installed, users can launch it directly from the search results. New users are presented with a link to install your app.
AdWords, Google’s advertising platform for user acquisition and engagement, is now integrated with Firebase. Firebase can track your AdWords app installs and report lifetime value to the Firebase Analytics dashboard. Firebase Audiences can be used in AdWords to re-engage specific groups of users. In-app events can be defined as conversions in AdWords, to automatically optimize your ads, including universal app campaigns.
To help you generate revenue from your app and build a sustainable business, we’ve integrated Firebase with AdMob, an advertising platform used by more than 1 million apps. We’ve made it easier to get started with AdMob when you integrate the Firebase SDK into your app. Using AdMob, you can choose from the latest ad formats, including native ads, which help provide a great user experience.
Along with new feature launches, we’re moving our website and documentation to a new home: firebase.google.com.
We’re also launching a brand new console to manage your app. It is completely redesigned and rebuilt for improved ease of use, and we’ve deeply integrated it with other Google offerings, like Google Cloud and Google Play.
Firebase now uses the same underlying account system as Google Cloud Platform, which means you can use Cloud products with your Firebase app. For example, a feature of Firebase Analytics is the ability to export your raw analytics data to BigQuery for advanced querying. We’ll continue to weave together Cloud and Firebase, giving you the functionality of a full public cloud as you grow.
You can also link your Firebase account to Google Play from our new console. This allows data, like in-app purchases, to flow to Firebase Analytics, and ANRs (application not responding) to flow to Firebase Crash Reporting, giving you one place to check the status of your app.
Finally, we’re announcing the beta launch of a new C++ SDK. You can find the documentation and getting started guides here.
We’re excited to announce that most of these new products, including Analytics, Crash Reporting, Remote Config, and Dynamic Links, are free for unlimited usage.
For our four paid products: Test Lab, Storage, Realtime Database, and Hosting, we’re announcing simpler pricing. We now offer:
Many things are changing, but Firebase’s core principles remain the same. We care deeply about providing a great developer experience through easy-to-use APIs, intuitive interfaces, comprehensive documentation, and tight integrations. We’re committed to cross-platform development for iOS, Android, and the Web, and when you run into trouble, we’ll provide support to help you succeed.
If you were using a Firebase feature before today -- like the Realtime Database, GCM, or App Indexing -- there’s no impact on your app. We’ll continue to support you, though we recommend upgrading to the latest SDK to access our new features.
As far as we’ve come, this is still early days. We’ll continue to refine and add to Firebase. For example, the JavaScript SDK does not yet support all the new features. We’re working quickly to close gaps, and we’d love to hear your feedback so we can improve. You can help by requesting a feature.
All the new features are ready-to-go, and already in use by apps like Shazam, SkyScanner, PicCollage, and more. Get started today by signing up, visiting our new site, or reading the documentation to learn more.
We can’t wait to hear what you think!
Vue.js makes it incredibly easy to create dynamic web interfaces. Firebase makes it incredibly easy to create a persistent, realtime backend. Combining the two would give us possibly the easiest way to build a data-driven web application. Now with VueFire, an unofficial Firebase binding library for Vue.js, it only takes a few lines of code to reactively render your Firebase data in your app.
Vue.js is a JavaScript framework for building dynamic web interfaces. It offers reactive data binding and composable components in an extremely approachable core library, which can be dropped into any existing page and picked up in a matter of hours. On the other hand, the framework also provides more opinionated solutions for more ambitious use cases, such as client-side routing, state management and advanced build tools. It currently has over 15,000 stars on GitHub and is rapidly rising in popularity. You can visit vuejs.org for a more thorough introduction.
It is already pretty simple to manually update a Vue instance's data when a Firebase reference's value has changed, but the VueFire library makes it even easier. To get started, just include Vue, Firebase and VueFire in your page:
<head> <!-- Vue --> <script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script> <!-- Firebase --> <script src="https://cdn.firebase.com/js/client/2.4.2/firebase.js"></script> <!-- VueFire --> <script src="https://cdn.jsdelivr.net/vuefire/1.0.0/vuefire.min.js"></script> </head>
VueFire will automatically detect Vue's presence and install itself. If you are using a module bundler, you can also install the dependencies via NPM:
npm install vue firebase vuefire --save
var Vue = require("vue"); var VueFire = require("vuefire"); var Firebase = require("firebase"); // explicit installation is required in a module environment Vue.use(VueFire);
With proper installation, your Vue components can now accept a new option: firebase. You can use this option to declaratively bind Firebase references to properties on your Vue instance:
firebase
var itemsRef = new Firebase("https://vuefiredemo.firebaseio.com/items/"); var vm = new Vue({ el: "#app", firebase: { // can bind to either a direct Firebase reference or a query items: itemsRef.limitToLast(25) } });
And the HTML:
<body> <div id="app"> <ul> <li v-for="item in items"> {{ item.text }} <button @click="removeTodo(item['.key'])">X</button> </li> </ul> <form @submit.prevent="addTodo"> <input v-model="newTodo" /> <button>Add #{{ items.length }}</button> </form> </div> </body>
Now whenever the Firebase reference's value changes, the DOM will be updated accordingly. Isn't that easy?
Now all we need to do is allow the user to update the list of items. First let's create a form that enables adding items:
<body> <div id="app"> <form v-on:submit.prevent="addTodo"> <input v-model="newTodo"> <button>Add #{{ items.length }}</button> </form> </div> </body>
The <input> element is bound to a variable named newTodo, so we need to declare that in the component's data option. We use the v-on directive to listen to form submission. The .prevent is a modifier that tells Vue.js to automatically call preventDefault() on the event to prevent page reload. We also need to define the addTodo() method which will be called when the form is submitted:
<input>
newTodo
data
v-on
.prevent
preventDefault()
addTodo()
var vm = new Vue({ el: "#app", firebase: { items: itemsRef.limitToLast(25) }, // declare local state data: { newTodo: "" }, // define instance methods methods: { addTodo: function () { if (this.newTodo.trim()) { // update the Firebase reference! itemsRef.push({ text: this.newTodo }); // reset input box this.newTodo = ""; } } } });
Finally, we can add a button for each item that enables removal and this is the final code for our little demo. Note the @ bindings are shorthand for v-on:
@
<body> <div id="app"> <ul> <li v-for="item in items"> {{ item.text }} <button @click="removeTodo(item['.key'])">X</button> </li> </ul> <form @submit.prevent="addTodo"> <input v-model="newTodo"> <button>Add #{{ items.length }}</button> </form> </div> </body>
var itemsRef = new Firebase("https://vuefiredemo.firebaseio.com/items/"); new Vue({ el: "#app", data: { newTodo: "" }, firebase: { items: itemsRef.limitToLast(25) }, methods: { removeTodo: function (key) { itemsRef.child(key).remove(); }, addTodo: function () { if (this.newTodo.trim()) { itemsRef.push({ text: this.newTodo }); this.newTodo = ""; } } } });
You can find the source code for this demo and more detailed docs at the VueFire GitHub repo.
With around 30 lines of code, we now have a dynamic interface entirely driven by a remote data source, with updates propagated to multiple clients in realtime. The Vue.js + Firebase combination makes building these types of apps faster and easier than ever before.
The Vue.js team is also investigating Firebase integration with Vuex, Vue.js' official client-side state management solution. This would provide a scalable pattern for managing Firebase data in large scale single-page applications.
We believe Vue.js and Firebase are a perfect match for building modern web apps, and we are excited to see what you create!