Duration 29:35
16+
Play
Video

Improve app performance and stability with Firebase

Ali Abdelhadi
Product Manager at Google
+ 2 speakers
  • Video
  • Table of contents
  • Video
2018 Google I/O
May 8, 2018, Mountain View, USA
2018 Google I/O
Request Q&A
Video
Improve app performance and stability with Firebase
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free
Add to favorites
4.44 K
I like 0
I dislike 0
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free
  • Description
  • Transcript
  • Discussion

About speakers

Ali Abdelhadi
Product Manager at Google
Tali Sason
Software engineering manager at Google
Jason St Pierre
Product Manager at Google

Tali Sason is a software engineering manager at Google, where she coaches the talented team of engineers building Crashlytics, the #1 crash reporting solution in the world, running on over 3 billion devices. She is passionate about giving development teams the tools they need to build great products that enable innovation. Before joining Google via an acquisition, Tali worked on Crashlytics at Twitter. During her tenure at the social media giant, she was part of the group that created Twitter Women in an ef

View the profile

Jason is a product manager for Crashlytics on Firebase. Prior to Firebase Jason worked at several start-ups, Apple, and then Twitter as part of the Fabric team. Jason has been working in mobile for over 12 years, and the past few years he’s focused on building tools that help developers ship their amazing apps faster and keep them stable.

View the profile

About the talk

Having a highly performant and stable app is crucial to drive user satisfaction and retention. This session will cover how Firebase Crashlytics and Performance Monitoring can help you create a great experience for your users by tracking, prioritizing, and solving stability and performance issues. There will be tips for new users, best practices for seasoned experts, and even a few announcements about powerful new integrations and features.

Share

Good morning, and welcome. We're so excited to have you here. My name is Ali. I work on Firebase and I'm product manager on performance monitoring everyone on Jason. I'm a product manager on Firebase when I work on Crash licks. I'm an engineering manager on Firebase and I work on crashlytics. Thanks so much for coming today. We're really excited to talk to you about how to improve your apps quality and stability using Firebase tools, but we want to start at the beginning. You've got a great idea and you start to CO2 that you're spending a lot of time making sure that your app is

working your to bugging you showing your friends and it's a really exciting part of the journey. But how many people here have experienced users churning because of a bad experience once an app shifts to the App Store? Yeah. It's happened to me too. And it's really frustrating that it's a big problem. 42% of 1 star reviews in the App Store specifically mention stability and bugs. This means that users are taking notice when these problems exist in their apps and they're making note of them in the app

store which is going to make it harder for you to get and grow new users. Not only that but 62% of users uninstall an app after a bad experience like this and it many of those cases that's after a first-time bad experience. So you can imagine this makes a huge difference in your ability to make your app a business on the flip side. 73% of 5 Star reviews in the App Store actually mentioned speed design and usability really appreciate when this is delightful and a nap and they call it out. That's really exciting.

I want it comes to app quality. The first step is making sure that your app is Thoroughly tested before you ever released to the App Store. And fire bass test lab is your best friend when it comes to that as we announced yesterday Firebase test lab is now available cross-platform on both IOS and Android which is super exciting and we really relied heavily because that we know testing is important, but it can be really hard and it doesn't have to be because test lab does all the heavy lifting for you with over a thousand devices ranging in different

device models screen sizes OS has its evil to cover all of the different use cases so you don't need to worry about it and there's a new accessibility report. So it's not just testing whether or not your app is stable or crashing actually helping you understand if it's usable which is super cool. And it's really easy to get started. All you have to do is drag and drop your at binary and you're able to get out of the box test right away without having to write any code and those tests will help you understand your performance like start of time as well as crashes and a lot

more so that you're able to be confident in your ass performance before you ever shipped to the App Store. But we know that's only the beginning of the story right because it's pretty hard to catch everything before it goes out to users and we feel proud that users have trusted crashlytics for more than six years as your partner and understanding how stable your app is. Crashlytics is running on over. Sorry crashlytics is not generally available in Firebase, which is really exciting. It's our new home and we're really looking forward to having closer ties with the other

Firebase was available to make it the best possible experience for users. Crashlytics is running on over 3 billion devices worldwide and that's pretty amazing because it means receiving a huge range of Crash data across the world. But what does it mean in terms of the data that were processing? Let's take a look. We process about 1.5 million events every seconds. Okay, that's about to play in events per day. What does it look like in terms of users actually using an app that's crashing. To match in raw here in sunny California

and your phone crashes seven times while you're walking around the conference. I be pretty frustrating. There's a very good chance you're going to uninstall that app. And there's a pretty good chance. You're going to tell all your friends that it's terrible and not to use it. Now imagine every person in the United States had a mobile phone and a crashed seven times today that is equivalent to the amount of data. We are processing in our system every single day. It is a lot of data and it's really hard to understand what you need to pay attention to not only that but when you get a

crash from the device, it looks like this it's pretty hard to understand right? Maybe if you look really closely you'll see some things that highlight your app, but it's hard to figure out where to even get started. So crashlytics takes all that data and all this information from the device and we put it into a beautiful dashboard that makes it easy for you to understand what you need to focus on first. We have our crash free user statistic at the top, which is the industry standard to understand how your app is doing. We also have your session list with your issue list, which allows you to

see right away what needs your attention it shows you significant bits of information. Like it's a certain OS his team is Russia more than others if their specific devices that have this problem and to your able to know right off the bat what needs your attention. When you digging further, you're able to see how this issue is trending across different versions as well as the blame frame where we think you should really start your debunking process. It allows you to go confidently into triaging of an issues. They are able to solve it quickly and help resolve it and get your users on to a

better path fast. But we know you can't always be at your computer right? It's not really possible. So we've got your back no matter where you are with real-time emails that let you know, if there's a stability issue with new issue rest issue or velocity alerts, so no matter where you are these got your back and now I'm going to pass it over to Ali whose obsessive performance on our team. Thank you. Thanks. So as you heard from tolly clearly absolutely plays a huge role in how your users perceive your app. Unfortunately though. It doesn't just stop there.

Users are also known to have a very short attention span. They expect a highly performance and smooth experience. And for this exact reason we went to work last year to build Firebase performance monitoring which we actually announced this time out of your last year the same stage. It is an SDK that supports both IOS and Android and it allows you to report a lot of data about how you're a performer from the point of view of your users in addition to being able to instruments things that are accustomed to your app. You also get a lot of data

are the Box just buying selling the SDK you'll get things like the network activity between Europe and the back is that it uses. So we'll report for you things like how often your endpoints fail or what response agencies your uses are experiencing and we do that for any back ends, whether it's theirs but he has because you have in your app or your own managed services. We also report for you app start Direction, which is a key metric because it's eyes into that first impressions. That's your users kept. And as of yesterday, we started reporting Grand Touring they do so now we tell you how

often your app drops of frame and where this happens now this is but if you're up late developer, it is especially important. If you have an app on the Play Store, you probably know that last year the play developer console introduced this new section called Android vitals and what it does is report a number of methods that are key to your success and they're both about how smoothly your animations on your app in General Renters. Not for these metrics, we've heard the consistent piece of

feedback from our developers people love to have this data, but they don't know how to act on it and where exactly in that end in the opposite happens. And that's exactly where Firebase performance comes in because not only do we not record these methods out of the box, but we also do it for a scream. So if your Android's will show you the number of Frozen frames or slow frames for Android activity and also do the same thing. We show you these numbers for you. Why do controllers so you got a lot of extra contacts this way to help you get started on fixing the issue

was an example of how this works in a second. But first, I want to talk a little bit about the reception that you've seen with virus performance. The last time we talked about this was back in October at the far away is left stomach and ask them and we were super excited to tell you that we were processing as many as Thirty billion performance events for the day and since then only six months later this number has grown to a hundred billion events for the day. So we couldn't be more excited about the trajectory worth seeing in about the quality of the feedback and the reception that are

developers have the please keep it coming in the only help us make the Frog better now, As you can imagine this is a lot of data to go through and if you're a developer that's looking to improve their app. This can't be a little bit intimidating. It can be a lot of data to sift through and because of that our council is not getting better. We know how to have a new feature called the issue feeds which helps you identify. The top performance issues you have and it appears right at the top of the main page in the performance console. So we'll tell you things like how

often your and points fail or if your app start it slow so that you can spend much less time sifting through that data and more time acting on it and fixing issues. And finally, if you're around for the party session yesterday you heard that part of his performance is now generally available. We have acted a bit as of yesterday and we're really excited about how battle-tested are as the keys are on both IOS and Android in about the overall value. Our developers have found with performance monitoring. So if you haven't tried it so far now would be a great time to do so. Alright, so let's

get to the fun part. I'm going to invite Ali back on stage so that she can tell us how we got to use all these products in building one of our own apps. Thanks. So you just heard a good overview of these different products, but we really wanted to talk about how this actually looks in an app and how it works with the timeline as you build and release your application. We're going to specifically focus on the Firebase app quality tools, but it's worth noting that friendly pics uses a lot of other Firebase tools like functions

databases storage and off so, it's got a lot of goodness in there and you can check out the code for yourself. Burlypicks allows you to take a photo and uploaded and share it with your friends. Here's Jason taking a picture of his dog Percy, which he does a lot and putting a little caption with it and sharing it. So it's pretty simple and our first step was making sure that it was well-tested. We partnered and used Tesla really heavily to make sure that this worked well and we could ship confidently and when we looked at our dashboard, we noticed that there was a problem right away. We saw

that a test was failing and this was pretty surprising us because we'd all been playing with the app and we hadn't seen any problems. We were able to go to the videos Tab and see a simulation of this crash actually happening on a device which was super helpful ended bugging the problem. You can see here that we're uploading a photo. Oh, okay, and it's freezing and then it crashes so that was really important to catch early and make sure that we had a good experience for users. This allowed us to ship the App Store with confidence because we knew we were going to have a good experience for our

users. Now. I'm going to pass it off to Jason who's keeping an eye on stability pics on stability for friendly pick. All right, so I want to walk you through real scenario that happened shortly after we shipped friendly pics. So I went in to upload a photo most likely to perceive which I'm actually super excited you all got to see a picture of immediately on launching. It surprised me. We're at it through test lab and things are pretty smooth and we hadn't shipped any recent changes. But immediately

login I go to crashlytics and I noticed there's a huge drop in Crash for users. So clearly not just me that's experiencing this crash and it's attributed to one specific issue. So I dive in to see what's going on here. I can see a big spike obviously with this issue and I look at what's going on in something to do with emptied empty. Listen to use a dictionary going on and we realized is the web team chip the change that was allowing users authors to upload a photo without a without a username. They weren't setting it to know and iOS client was

expecting snow in those scenarios psoas causing a crash and for me it was because that was the first post that was trying to load. So pretty simple fix Wii U made the IOS app more resilient than we ship the change to make sure that the web client was sending those in areas to know and we documented what happened. The Chrysler that has a great future called notes sew-in note so I can document exactly what I just walked through to tell other members of our team. You know, what was going on how we fixed it why we fixed it and this is really great to make sure you don't say to relive

some of the same mistakes if you use a bug tracking system, you can put a ticket in there. You see we captured the bug put it away. Hopefully, it doesn't regressed and escape with us for now and the next thing I want to do or I did is make sure that that change actually was fixed so you can see here that I'm kidding 1.1 which is the recent version of to the App Store and builds is a really great featuring crashlytics because if you're one of those always turning out enough you a bill to pay the bills May have a long list of versions

and by penny in the most relevant ones the top you can really get access to the ones that are in the App Store. So it's easy to keep those top of mind. So I felt it onto that noticed that there are still a few issues. I need to deal with but luckily that prevalent one that we just fix is no longer there. So what I want to make sure hear what I wanted to make sure is that that never happened again where I was the one that kind of tested and found out what was going on or maybe someone on my team. I want to know about it right away and maybe I wasn't paying attention to the emails that

how he was mentioning but I do spend a lot of time in slack. So maybe yesterday in the in the integration stabbed in Firebase. We now have the ability to configure slack. So we definitely wanted to take advantage of this. So it's super easy. You just need to copy and paste your slack webhook URL set the channel you want the notifications to go do so and are cases the friendly fix iOS room, which is where we're all my teams monitoring this and I will all the alert alerts and a significant

portion of all your sessions to crash. So that's something you definitely want to pay attention to in this issue. We just fixed probably would have triggered a velocity alert. So hopefully I don't get one of those in the future. But if I do at least I know it'll come through and slack where I'm spending a lot of my time and paying attention. What do we do now? Is this? All right. Cool, so I'm kind of curious myself how performance is going. So we'll stay in the fire Beast console. But this sign switch over to the performance

page. And we weren't there when we went there. The first thing that I see on her that that's worth tab is a number of high-level metrics about how my app is McCormick. So I see things like the duration of different parts of the app Network success rate over the last 30 days Network response latency by country and so on. What I'm really curious about though is how friendly basis for forming on device. So I'm going to go ahead and click on that Tab. And when I do that, I see a couple of sections The First One Direction's tell me things like how long I've started taking in this case is 2.4

seconds, and it sounds about reasonable the second section. I see here is the rendering they do this is the new feature that I was talking about. And if you look at it, you can see that there's a couple of metres being reported hear slow frames and Frozen frames frames are basically any frames that take more than 16 milliseconds to render and therefore deviate from ideal 60 frames per second standard. That's why you always want to have in our animations Frozen friends on the other hand are frames that they can more than seven hundred milliseconds and therefore craved. It's noticeable feeds

freeze that interrupts the user flow. I preach one of these two metrics we were for the values first green. So since we're dealing with an IOS app, in this case, we see it for uiviewcontroller. And if you look closely you can see that the animation view controller specifically has a higher percentage of slow France compared to other screens. So this is and I land on this Details page that details out the characteristics of slow frame rendering for that screen and I can see that the breakdown of a

virgin but I have this part that I see at the top left of the page shows me that there's no significant difference between the last few aversions. So this is not inside your aggression that got introduced because of Milo's coat. But if I scroll down I can see a breakdown of the percentage of slow frames by a number of attributes by things like which devices because those were on which aversions there were using in which countries they were based in. And specifically for device. I can see a couple of warning is on the iPhone 5 and the iPad Air and they tell me that

these two devices specifically have a much higher percentage of slow France compared to other devices. These are older devices and I would expect that their rendering is not going to be as smooth as some of the newer ones but the cool thing here is that using this data. I can specifically Target these devices and give them a different treatment. So for instance, I can show less animations or no animations for these users so that they can have an overall better experience and just like that. We found our first inside using the console data and we dealt with it by having a targeted

experience. Cool, son got to go ahead and ship this fixed and now we can see that are apples growing. It's expanding the new users and new markets. We're getting a lot of reviews coming in. A lot of them are good reviews, which is a great thing, but I want to jump back into the performance console and see how things are and when I do that, I noticed that there's an issue now that fucked up that I did not have before. And this issue tells me that my image service has been taking longer than response in the last few days. If I click on it, I can see a detailed over time chart

that shows that over the last 7 days or so. There has been a significant percentage of samples that have exceeded the network that shows we have which is 2 seconds. This is the default Network threshold that we have. You can always read this if it doesn't make sense for your specific use case, but in here we're not going to do that. We're going to stick with the default threshold and that examine why this is happening. Now I stroll down and look out and look at my breakdowns. I can see that users in India have been specifically experiencing higher Network latency is compared to other users.

Now. I have a theory on why this might be happening. I think this is happening because this is an image service. We have not been using image compression so far and therefore uses with typically slower data connections will just have a hard time catching these images. But how do I actually make sure that my iPhone hypothesis correct? The hazard obviously is an experiment. So I'm going to jump back into going to create a custom tray is called image patch and have it wrapped the logic that I used to pester you images and for that place called image patch. I'm going to set a custom

attributes call the compressor and turn it on and off depending on which variant of the experiments you're in. Not going to ship this codes and a couple days later. I'll jump back into the console and check out the details I have for the English patched face that I just read it and I can see that in addition to the traditional breakdowns that I have. I also now have it after compression discuss the matter with that I just added and I can see that the difference in performance specifically Network latency is huge between the cases of our profession is on and compression is off. So now I

have the date of that. I need to make sure that confession is the right space and I can go ahead and roll it out to every user. So the cool thing here is that not only did we find out about an issue using our console when we didn't know that it existed but we also use the console commands are the effects of the face and make sure that it had the intended effect. But now it looks like we have a new slack notification that is complaining about a new fatal crash. So I'm going to let Jason take a look at this Jason. Thank you. Okay, so it's a bummer. We

got to crash but great that I immediately knew about this. So clicking through from slack takes me directly into the issue Details page. So I noticed a few things immediately about this issue that a little bit unique is that it's not in my main app code. The problem is actually in a system Library photo library Services up at the top and this is what we call a crash in sight in a crash Insight is actually a solution to what's going on here. So it's as you could imagine not every single one of those crashes is unique to each application

many of those crashes are common across thousands of applications and typically those, and crashes are either programming errors or issues in third-party libraries or issues in the system framework. And in our case, what we're doing wrong is we're trying to access the camera roll to upload a photo before the users explicit. Granted permission. So maybe this is a P. I Miss You So race condition. Either way. It's a common are that many other developers are experiencing and I know exactly how to solve it right here this documentation the points do what I'm doing wrong and how to address it.

So huge time-savers at me alot. It's saved us a lot of time debugging Google. I'm looking for documentation. So if you get a crash and it has an Insight on it, I definitely recommend you take a peek and make sure that you read up on what it's going to do because I could save you a ton of time as well. Now if this crash didn't have it inside on it, there was another great integration that you could have used for free out of the boxes crash. Alex is what we call bread crumbs. So books automatically integrates with Google Firebase occurs. We

send through all the events that were recorded in that section. So what the actions user was doing so you can see here there's a bunch of screen views. And the last thing in this session was the user tried to access the image picker controller, which actually makes sense because we think back to the crash or what the problem was it be in sight was telling us is that we were trying to access the camera roll before they granted permission. So even if we didn't have the Insight on to this crash, we could have probably retrace the user steps of breadcrumbs and got ourselves into that same

scenario. To be there to really great things that you get out of the box of Kraft Alex to help you debug game by adding a little bit more metadata more code to the app. And one of those things we used was what we call Custom Keys. Now, you can think of custom Keys as like contextual cues to what's going on in the application. So maybe that's the weather for the game level equals 10 maybe for some reason that's a really buggy level or how many items user has stored in the shopping cart. Maybe those are indicative of what's going

on with the problem is in our case. We actually had a hunch that there was something going on with what we thought the indexes of posts were in the database vs. Locally on the device when we were trying to delete them. We thought something was not a sink and causing a crash. So we wanted to understand that context. So we instrument custom keys. So here's an example one line of code or we're logging the key for in our listen to leave function. In the same thing and update sleep function available and get hubs you can download it and take a look at it and its entirety but I just

wanted to highlight here how simple that was so had to bring the same area. You see the statues in the bread crumbs, you can see the keys and you can see what we thought at the time of the crash was for the index in the database and locally and this actually really helped us debugging crash. So something recommend taking advantage of for yourselves when you want to know context of what's going on when the apps crashing. No, nothing. We used was what's called user identifier. And this is something that your customer support email really really really like is similar to custom Keys

one line of code and it shows up in Crash of looks like this now that might not look super useful at first, but what you can do as you can app that user ID to use of its logged in R using your application so that when someone writes into customer support and says, hey I'm having a bad experience or the app always crashes to me when I try to do XYZ. You can actually rectify the situation may be retraced our steps of bread crumbs issues in a refund. Tell them they need to update their version turning medical experience into a positive experience for users and really supercharger debugging

capabilities. So those are a few extra things you can do in addition to the out-of-the-box insights and breadcrumbs with custom keys and user IDs for crash elyx review everything we did to improve the performance and stability of friendly text. Journey, and we know it was just one example of what this could look like for all of you. We started with coming up with an idea and Cody up and it's really exciting. We partnered early with Firebase to slab to make sure that we had a high-quality experience and we could ship to the App Store with

confidence. After we shipped the apps where we've depended heavily on Firebase crashlytics and performance to make sure we had the best possible experience we were able to alert to new issues quickly triage and resolve them fast. We saw growth of our app and expanded to New Markets and we dug in deeper with Advanced features. We did all of this so that you can focus on what you really want to focus on the most which is building new features and delighting your users. We know that no one wants to spend their day worrying about the quality and stability of their app

and that's why we pray that these tools so that we're able to have your back so that you can focus on what you want to do most we also have your back when it comes to security and privacy work cited by May 25th will be fully gdpr compliant. So you can continue to serve your users no matter where they are in the world because we know that's really important. Thank you so much for coming today. Would really appreciate your time. If you want to dig in deeper with Tesla up. There's another session tomorrow at 9:30 a m on autonomous and customize pre-launch testing. It should be really cool. So

be sure to check it out. Thank you so much.

Cackle comments for the website

Buy this talk

Access to the talk “Improve app performance and stability with Firebase”
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free

Access to all the recordings of the event

Get access to all videos “2018 Google I/O”
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free
Ticket

Interested in topic “IT & Technology”?

You might be interested in videos from this event

September 28, 2018
Moscow
16
170
app store, apps, development, google play, mobile, soft

Similar talks

Kat Fang
Software Engineer at Google
+ 1 speaker
Kiana McNellis
Engineer at Google
+ 1 speaker
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free
Steve Ganem
Product Manager at Google
+ 2 speakers
Russ Ketchum
Product Manager at Google
+ 2 speakers
Mai Lowe
Product Manager at Google
+ 2 speakers
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free
Jumana Al Hashal
Product Leader at Google
+ 1 speaker
Todd Kerpelman
Developer Advocate at Google
+ 1 speaker
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free

Buy this video

Video

Access to the talk “Improve app performance and stability with Firebase”
Available
In cart
Free
Free
Free
Free
Free
Free
Free
Free

Conference Cast

With ConferenceCast.tv, you get access to our library of the world's best conference talks.

Conference Cast
613 conferences
24814 speakers
9164 hours of content
Ali Abdelhadi
Tali Sason
Jason St Pierre