The future of Fabric: unveiling our roadmap & migration flow

By Jason St. Pierre, Product Manager & Kristen Johnson, Product Lead for App Quality

Fabric integration timeline overview.png

We’re beginning a new chapter with Firebase. Over the past few months, we’ve been working hard to bring the best of the Fabric and Firebase platforms together in a thoughtful way with the goal of giving you one central place to build, improve, and grow your apps. While we’ve kept you informed about our progress at events like Google I/O and Firebase Dev Summit, we wanted to take our commitment to transparency further so you can better prepare.

To that end, we have two big exciting announcements:

  1. You can begin migrating to Firebase.
    We’ve integrated the tools and features you love about Fabric (including our best-in-class crash reporter, Crashlytics) right into the Firebase console, and made many improvements to them capitalizing on Firebase’s strengths.

  2. We’re unveiling our migration roadmap.
    This roadmap is designed to give you full visibility into what we’re building, what we plan to launch next, and what actions we recommend you take.

We invite you to begin the journey to Firebase, your upgraded home, and check out our plans for the future!

Use the best of Fabric in Firebase

Firebase is Google’s mobile app development platform that helps you across the entire lifecycle of your app, with smart analytics embedded throughout. Now, it also includes your favorite Fabric tools.

For example, Crashlytics is now available in Firebase, where you can take advantage of new integrations that allow you to export your crash data for custom analysis in BigQuery, trigger workflows, and get insights into the events that led up to a crash. We’ve also evolved Digits into Firebase phone authentication so you can continue to authenticate users without issue. We’ve even added realtime metrics to the latest release section in Firebase, meaning you can continue to monitor your latest builds with confidence.

In the coming months, we’ll be bringing the functionality of Crashlytics Beta, the service you’ve used to distribute pre-release iOS and Android apps, to Firebase. We’ll keep you posted on our progress through the migration roadmap!

Access powerful new tools in Firebase

Not only does Firebase include the best of Fabric, it also offers you brand new capabilities that were not previously available on our platform. With Firebase, you can harness the power of machine learning, test your app on a variety of devices hosted on Google’s cloud, and group your users by their predicted behavior!

Firebase, like Fabric, makes app development faster, easier, and painless.

Fabric meet Firebase .png

Begin the migration to your new home

All Fabric customers can now start to migrate their app and teams to Firebase by going to their Fabric dashboard and clicking on the Firebase icon in the left-hand navigation. We recommend you begin this process soon so you can take advantage of all of the great things we are building for you over in Firebase!

Fabric to Firebase migration flow in dashboard.png

We’ve made the migration process as smooth as possible. It involves three main steps:

  1. Link your apps to Firebase

  2. Check out Crashlytics in Firebase and install the core Firebase SDK

  3. Invite your team to Firebase

Note: If you previously linked Answers to Firebase, you’ve already done part of the work. To fully migrate to Firebase, you’ll still need to complete this linking flow.

Get insight into the future of Fabric

We’ll continue to support Fabric until mid-2019, to give you plenty of time to migrate your apps and business to Firebase - but please plan your transition accordingly.

To stay up to date on the migration, check out our roadmap periodically, which sheds light on which products we’ve implemented in Firebase and what’s next.

Fabric + Firebase: Now stronger together

by Rich Paret, GM, Fabric

DevSummit-Banner-blog.png

Since joining forces with Firebase early this year, we’ve been working closely with our new teammates on the same mission: helping you build apps, understand your users, and grow your business. We want to combine our unique strengths to give you access to better tools and infrastructure, all while continuing to upgrade Fabric. That’s why in May at Google I/O, we upgraded Digits to Firebase phone authentication and launched more features for Fabric.

After I/O, the Fabric + Firebase team have been working hard to integrate our two platforms - with the goal of bringing you the best of both in a thoughtful way. Today, we have some more news to share with you. Check it out:

Upgraded Fabric

As we work on integrating Fabric and Firebase, we're still continuing to improve Fabric. We started by officially releasing crash insights out of beta, so you can triage and resolve issues faster than ever before. Additionally, we launched fastlane precheck to help you avoid unnecessary delays from the iOS app store. We also built a new tool called snapshot in fastlane, which automagically generates app screenshots for all of your devices at the same time.

Crashlytics is now available on Firebase

Eliminating crashes is crucial to improving user experience. That’s why today at the Firebase Dev Summit, we unveiled a beta version of Crashlytics in Firebase to give Firebase developers access to our market-leading crash reporter. Firebase Crashlytics has the core crash reporting features of Fabric’s Crashlytics, but it also includes integrations with other Firebase tools. For example, Firebase customers can use Crashlytics to power custom workflows and get alerts about stability issues that impact a critical app flow (i.e. a payment flow).

Right now, Firebase Crashlytics is still in beta, so there’s no need to switch over if you’re happy with Crashlytics on Fabric. We plan to release more integrations over the coming months and make Crashlytics as awesome on Firebase as it is on Fabric in the future - stay tuned :)

Better together

Over the past months, we’ve been encouraging you to use both Fabric and Firebase since the two platforms are stronger together. Some of you have already started using Crashlytics with Firebase tools, which has been incredibly exciting to see. For instance, Doodle, an app that brings people together, used Crashlytics with Firebase Remote Config to redesign their app and improve engagement by 42%. Learn more about how they did it here:



Additionally, we have started to incorporate what you love about the Fabric dashboard into Firebase. Today, we helped launch a new dashboard experience on Firebase, which begins with a mission control and a new left-hand navigation bar similar to Fabric:

We also helped release a new analytics dashboard that is organized around the questions and tasks that you tackle on a day-to-day basis - with similar traits to Fabric’s dashboard we launched early this year. And much like Fabric’s “Latest Release” dashboard, Firebase now includes a similar section under their analytics as well as real-time data on crashes and active users.

If you’re already using Firebase, these updates will be rolling out over the next few weeks (you can get early access here). We hope these updates are helpful to you, and we’re actively working on giving you one place to build, understand, and grow your app in the future!

Celebrating with the community

We love celebrating with our passionate community. Kristen Johnson (Product Manager, Fabric) shared the new Firebase Crashlytics with many of you during today's Firebase Dev Summit. We also hosted these technical sessions:

  • “Automating your app's release process using fastlane” - by Felix Krause (Creator of fastlane) and Josh Liebowitz (Fabric Engineer)
  • “Building high-quality apps with Crashlytics and Firebase Performance” - by Jason St. Pierre (Product Manager, Fabric)

We hope you enjoyed our conference and found it helpful. If you couldn't make the event this time, check out the recordings for our keynote and technical talks!

Onwards,

-


7 tips for getting the most out of Crashlytics

By Jason St. Pierre, Product Manager

Crashlytics tips

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.


1. Speed up your troubleshooting by checking out crash insights

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.


2. Mark resolved issues as “closed” to track regressions

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.


3. Close and lock issues you want to ignore and declutter your issue list

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.


4. Use wildcard builds as a shortcut for adding build versions manually

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.


5. Pin your most important builds to keep them front and center

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.


6. Pay attention to velocity alerts to stay informed about critical stability issues

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!


7. Use logs, keys, and non-fatals in the right scenarios

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.
 

Launching crash insights: tackle and triage stability issues faster

By Jason St. Pierre, Product Manager

By now, every mobile team in the world knows that building a stable app is not a key to success - it’s a necessity. That’s why it’s critical to include a powerful crash reporting tool in your mobile arsenal. We’ve spent years helping you understand how stability issues are impacting your app and highlighting additional information about those issues. As the leading app performance SDK, we’re proud to continue our commitment to taking stability to a whole new level.

At Google I/O back in May, we announced a beta version of crash insights, to help you understand crashes better by giving you more context and clarity on why those crashes occurred. Since then, we’ve gathered feedback on what types of insights are most critical to you and greatly expanded our coverage of problems. Some of you have even submitted your own ideas for insights!

Today, we’re excited to officially release crash insights out of beta. Now, you can triage and resolve issues faster than ever before, giving you more time to focus on enhancing your app’s experience.


What is crash insights?

Crash insights makes analyzing crashes easier. The first component of crash insights leverages our massive scale and processing power to centralize valuable information and provide you with troubleshooting resources to tackle and triage stability issues faster. Second, crash insights highlights potential root causes that are common across multiple issues to save you time and speed up your workflow.

Together, these two components shed light on underlying problems that are causing a variety of crashes, and illuminate next steps.

Fabric has become an essential part of how we track and understand crashes within our mobile apps at Hudl. In the few weeks that we've been working with crash insights, it's been quite helpful on a few particularly pesky issues. The description and quality of the linked resources makes it easy to immediately start debugging. Insights is a welcome addition to the Fabric toolbox, and we can't wait to see what they come up with next.



Understand the cause-effect relationship between underlying problems & crashes

For years, Crashlytics has helped teams stay on top of stability by grouping an avalanche of crashes into more manageable issues. Now, we’ve taken this a step further. Crash insights examines your list of issues, unearths the commonalities, and identifies the potential underlying problem - like an SDK bug, API misuse, OS issues, etc. Our goal is to help you better understand the cause of your crashes. By grouping crashes by their causality and providing additional context, Crashlytics shows you the aggregate impact a root problem is having on your stability. Equipped with this insight, you can make a more informed decision on what action to take.

For example, this cause-effect grouping can reveal things like, “I didn't realize how widespread incorrect UIKit rendering was in my app. I should fix that as soon as possible.”


Quick access to collective knowledge & domain expertise

Whether you’re a newbie developer or a seasoned software veteran, your unique development experience has impacted your depth of knowledge on certain issues. You might be well-equipped at deciphering low level issues, but find it tough to keep up with the latest breaking changes from your external dependencies.

Now, as you may have already noticed, a green lightning bolt icon will appear beside all issues that have a corresponding insight available - and clicking on this icon will reveal the actual insight. The goal of these insights is to help you solve known problems faster by providing additional context, serving as a starting point for investigation, or by influencing triaging.

 

Crashlytics comes with solutions, not problems

We built crash insights to elevate the role of a crash reporter from the bearer of bad news (“FYI: your app is crashing”) to the provider of solutions (“Here’s where you should start”). Our goal is to help you better understand the cause of your crashes so you can drastically reduce the time it takes to resolve issues.

Today’s launch is the first step in redefining the way teams triage and tackle stability issues. We will continue to invest in this goal and evolve Crashlytics based on your feedback. We’ve already heard from many of you, and we can’t wait to get more feedback!

Learn from app leaders: How Doodle redesigned their app using Fabric & Firebase

By Todd Burner, Developer Advocate

Learn from app leaders header

In this new series, we feature customers that have used our platform in an innovative way. For this installment, we chatted with the app team at Doodle who used the Fabric and Firebase platforms together to redesign their app to be more user-centric. If you want to participate in this series, please email support@fabric.io.

Recently, we sat down with Alexander Thiele who is a senior Android engineer at Doodle, a company that helps you find the best date and time to meet other people. As early adopters of Fabric’s Crashlytics and Firebase Remote Config, his team has expert familiarity with our platforms. The focus of our conversation was on how they redesigned their mobile app using analytics and crash data from their Fabric and Firebase dashboards.

Doodle logo.png


Q. How did you approach the redesign?

“The redesign is a complete overhaul of our app. We started by updating our onboarding flow to help people understand the best ways to use Doodle. We wanted to show users how they can poll each other to quickly find the best meeting time. We divided the redesign into three phases, first improving stability with Fabric’s Crashlytics, then A/B testing our poll creation feature with Firebase Remote Config, and finally measuring the results of our tests and production rollout by monitoring our app metrics in Fabric and Firebase analytics."


Phase 1: Finding tricky crashes

The team at Doodle wanted to understand how stability was impacting their app quality. That’s why they first focused on getting their crash-free user rate as close to 100% as possible.

Fabric’s Crashlytics helped them track crashes and prioritize them so they could improve their crash-free user rate. One feature they found particularly useful is adding logs and keys to crash reports.

Q. How did Fabric’s Crashlytics help you improve your app stability? 

“Crashlytics saved us a ton of time by surfacing crashes and helping us pinpoint their cause. I remember one really rare crash which we couldn't find the source of ourselves. We also don't have many crashes so we were really eager to find it. We then started to log everything that could be related to this crash, like page visits and the current internal database size. We also recorded those instances when our database couldn’t find something. After a few releases with custom logs, we found the bug. It happened in a really rare case where the user went to specific screens and used some specific features. Without custom logs, we wouldn’t have been able to find this bug.”

The team at Doodle also logs all crashes that they manually catch in the code to Crashlytics as non-fatals. This gives them more insight about what's going on in the app. By taking advantage of these unique Crashlytics features, Doodle has been able to move faster and add new features into production with less anxiety.


Phase 2: User-centric design

 The second phase of the app redesign was focused on updating the user experience and design. The goal of this phase was to refresh the look and feel of the app and introduce streamlined flows so users could accomplish their tasks faster (and with fewer screens/steps).

Q. What types of UI changes did you make in the redesign?

“The changes we made during this stage included everything from changing the color palette to introducing new screens and adding new app functionality. By monitoring the 7 day retention metrics in Fabric and Firebase, we saw that some new users didn’t understand the concept of Doodle immediately - so they didn’t return to our app. That’s why we changed the whole onboarding process to make Doodle easier to understand and use from the first time it’s installed.”

doodle app screen.png

Q. How did you test your changes?

“We used Firebase Remote Config. We tested our user onboarding and the flow users go through when creating a poll. We tried 4 different kinds of flows, which we tested using Remote Config. In the end, the data showed that one flow resulted in more polls being created than the others. Our key performance indicator for the A/B test was the numbers of polls created by users, and we tracked this KPI with Google Analytics for Firebase.“

Q. Did you use Remote Config for other things? 

“We also used Remote Config to test feature switches. For example a few months ago, we implemented banner ads on our scheduling screen and enabled them through Remote Config. We noticed that these ads didn’t perform well so we turned them off easily with Remote Config. Then, we tried inserting native ads into a few other places in our app. Through Remote Config, we were able to discover the right placement for ads in our app without disrupting our users or requiring them to update their app to see the changes.”

By tracking crashes and non-fatals with Fabric and deploying changes with Firebase Remote Config, the team at Doodle didn’t have to depend on the app store release cycles to understand their users and update their app accordingly. They could see user behavior change in real-time and make appropriate changes to their app before problems arose.


Phase 3: Measuring and going forward with Firebase and Fabric

The team at Doodle plans to keep using both the Fabric and Firebase platforms to monitor and improve their app - and display their metrics throughout every stage! 

Q. Now that the redesign is live, what dashboards do you find yourself using the most?

 “Our most important metrics are how many polls a user creates and how many people participate in a poll. We monitor these in the Fabric events dashboard and in Google Analytics for Firebase by logging events.

I’m also a big fan of the new TV Mode for Fabric, we have a big conference room and we put up our dashboard on the TV during launches so the whole team can see how we’re doing. The new Crashlytics dashboard looks nice too, especially device and OS filtering. We keep an eye on most of the dashboards daily.”

Q. What Fabric and Firebase features do you plan to adopt next?

“Over the next few weeks, we have plans to adopt Firebase Dynamic Links and to set up more in-depth Fabric custom events. By using Dynamic Links, we’ll be able to make it even easier to share polls. For example, our users will be able to invite other people to participate in polls via SMS and deep link right to the relevant app screen (even if the people they are inviting to the poll haven’t installed the app yet). We’ll track more events, like content views, to understand where our users find value in our app.”

Q. What advice do you have for other app teams who are considering redesigning their app?

“Two things: test ideas constantly and put your app users first. By combining Crashlytics’ real-time crash reporting with the ability to deploy remote changes to a subset of users through Firebase Remote Config, you can learn how valuable a new feature is, identify potential issues, and take action immediately.”

Q. Can you share some results of the redesign?

“This redesign greatly improved our in-app poll creation process so users could create polls faster and more easily. We measured the success of this redesign by looking at our daily active users (DAUs) in Fabric and our retention numbers in Firebase/Fabric, which have risen beyond our expectations!”