MightySignal, a mobile intelligence startup based out of San Francisco, just published a new report examining the fastest growing Android SDKs of 2017. This fascinating report sheds light on which app development tools are taking off and what trends they signal for the year ahead. We're humbled and excited to see that 8 out of the top 20 fastest growing SDKs are part of Firebase!
This positive reception from the community validates and fuels our commitment to helping developers succeed. It also motivates us to continue making Firebase even better. Over the past year, we've made numerous improvements to our SDKs, including the ones highlighted in MightySignal's report.
Source: MightySignal's 2017 report on the fastest growing SDKs
For example, Firebase Realtime Database is number three on MightySignal's list, and it continues to be one of our most used and trusted products. We understand how important storing and syncing data is for your mobile business, and to further help you with this, we introduced another database product this year. If you're a Realtime Database customer, we think you'll love Cloud Firestore, our latest realtime, scalable NoSQL database that we built in collaboration with the Google Cloud Platform team. It allows you to sync and store data like Realtime Database, while also addressing its key limitations like data structuring, querying, and scaling. Cloud Firestore is available in beta today!
Another notable mention is Firebase Remote Config. Remote Config gives you the power to customize your app's interface and behavior for different audiences so you can deliver personalized app experiences without requiring users to update their apps. Now, Remote Config can be used with Firebase Predictions' dynamic user groups. This means you can change the look and feel of your app for users based on their predicted behavior (such as churn or in-app purchase). Wondering how this works? Learn how Halfbrick Studios grew their 7-day retention rate from 25% to 30% by combining Predictions with Remote Config.
And that's not all that's new with Remote Config! In the past, Remote Config allowed you to perform simple A/B testing, but now, we've gone ahead and added an entirely new experiment layer in Firebase that works wonderfully with Remote Config so you can set up, run, and measure sophisticated A/B tests.
We were also delighted to see that Firebase Auth and Firebase Crash Reporting are experiencing high growth as well, according to MightySignal's findings. After welcoming the Fabric team to Firebase, we worked together to add new features to Auth (such as phone number authentication), which we unveiled in June. More recently, we launched a beta version of Firebase Crashlytics, a powerful realtime crash reporting tool that will help you track, prioritize, and fix issues that erode app stability. Firebase Crashlytics is now our primary crash reporter. If you want to learn more about how app stability can lead to growth in user engagement and retention, check out how Doodle used Crashlytics to grow user engagement by 42%.
MightySignal's data on the fastest growing SDKs is available here. We're very thankful to be part of the developer community and committed to helping you build better apps and grow your business. Stay tuned for more product updates next year and, in the meantime, happy building!
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!
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.
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.
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.
click_action
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.
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:
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.
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!
For many years, developers and app teams have relied on Crashlytics to improve their app stability. By now, you're probably familiar with the main parts of the Crashlytics UI; perhaps you even glance at crash-free users, crash-free sessions, and the issues list multiple times a day (you wouldn't be the only one!).
In this post, we want to share 7 pro-tips that will help you get even more value out of Crashlytics, which is now part of the new Fabric dashboard, so you can track, prioritize, and solve issues faster.
In July, we officially released crash insights out of beta. Crash insights helps you understand your crashes better by giving you more context and clarity on why those crashes occurred. When you see a green lightning bolt appear next to an issue in your issues list, click on it to see potential root causes and troubleshooting resources.
Debugging and troubleshooting crashes is time-consuming, hard work. As developers ourselves, we understand the urge to sign-off and return to more exciting tasks (like building new app features) as soon you resolve a pesky issue - but don't forget to mark this issue as "closed" in Crashlytics! When you formally close out an issue, you get enhanced visibility into that issue's lifecycle through regression detection. Regression detection alerts you when a previously closed issue reoccurs in a new app version, which is a signal that something else may be awry and you should pay close attention to it.
As a general rule of thumb, you should close issues so you can monitor regression. However, you can also close and lock issues that you don't want to be notified about because you're unlikely to fix or prioritize them. These could be low-impact, obscure bugs or issues that are beyond your control because the problem isn't in your code. To keep these issues out of view and declutter your Crashlytics charts, you can close and lock them. By taking advantage of this "ignore functionality", you can fine tune your stability page so only critical information that needs action bubbles up to the top.
Sometimes, you may have multiple builds of the same version. These build versions start with the same number, but the tail end contains a unique identifier (such as 9.12 (123), 9.12 (124), 9.12 (125), etc). If you want to see crashes for all of these versions, don't manually type them into the search bar. Instead, use a wildcard to group similar versions together much faster. You can do this by simply adding a star (aka. an asterisk) at the end of your version prefix (i.e. 9.12*). For example, if you use APK Splits on Android, a wildcard build will quickly show you crashes for the combined set of builds.
As a developer, you probably deploy a handful of builds each day. As a development team, that number can shoot up to tens or hundreds of builds. The speed and agility with which mobile teams ship is impressive and awesome. But you know what's not awesome? Wasting time having to comb through your numerous builds to find the one (or two, or three, etc.) that matter the most. That's why Crashlytics allows you to "pin" key builds so that they appear at the top of your builds list. Pinned builds allow you to find your most important builds faster and keep them front and center, for as long as you need. Plus, this feature makes it easier to collaborate with your teammates on fixing crashes because pinned builds will automatically appear at the top of their builds list too.
Stability issues can pop up anytime - even when you're away from your workstation. Crashlytics intelligently monitors your builds to check if one issue has caused a statistically significant number of crashes. If so, we'll let you know if you need to ship a hot fix of your app via a velocity alert. Velocity alerts are proactive alerts that appear right in your crash reporting dashboard when an issue suddenly increases in severity or impact. We'll send you an email too, but you should also install the Fabric mobile app, which will send you a push notification so you can stay in the loop even on the go. Keep an eye out for velocity alerts and you'll never miss a critical crash, no matter where you are!
The Crashlytics SDK lets you instrument logs, keys, non-fatals, and custom events, which provide additional information and context on why a crash occurred and what happened leading up to it. However, logs, keys, non-fatals, and custom events are designed to track different things so let's review the right way to use them.
Logs: You should instrument logs to gather important information about user activity before a crash. This could be user behavior (ex. user went to download screen, clicked on download button) to details about the user's action (ex. image downloaded, image downloaded from). Basically, logs are breadcrumbs that show you what happened prior to a crash. When a crash occurs, we take the contents of the log and attach it to the crash to help you debug faster. Here are instructions for instrumenting logs for iOS, Android, and Unity apps.
Keys: Keys are key value pairs, which provide a snapshot of information at one point in time. Unlike logs, which record a timeline of activity, keys record the last known value and change over time. Since keys are overwritten, you should use keys for something that you would only want the last known value for. For example, use keys to track the last level a user completed, the last step a user completed in a wizard, what image the user looked at last, and what the last custom settings configuration was. Keys are also helpful in providing a summary or "roll-up" of information. For instance, if your log shows "login, retry, retry, retry" your key would show "retry count: 3." To set up keys, follow these instructions for iOS, Android, and Unity apps.
Non-fatals: While Crashlytics captures crashes automatically, you can also record non-fatal events. Non-fatal events mean that your app is experiencing an error, but not actually crashing.
For example, a good scenario to log a non-fatal is if your app has deep links, but fails to navigate to them. A broken link isn't something that will necessarily crash your app, but it's something you'd want to track so you can fix the link. A bad scenario to log a non-fatal is if an image fails to load in your app due to a network failure because this isn't actionable or specific.
You should set up non-fatal events for something you want the stack trace for so you can triage and troubleshoot the issue.
If you simply want to count the number of times something happens (and don't need the stack trace), we'd recommend checking out custom events.
These 7 tips will help you get the most out of Crashlytics. If you have other pro-tips that have helped you improve your app stability with Crashlytics, tweet them at us! We can't wait to learn more about how you use Crashlytics.
Get Crashlytics