Hey! This is the Daily Overpass! My name is Eric and I make apps! Now today, I want
to talk about "How Firebase crash reporting saved my ass!"
Alright, so let me start out by talking about the new intro.
Did you see it? Were you paying attention? If not, rewind it a little bit. Have a look. :)
Yesterday, Sandee finished a new intro to the videos. I think it
looks pretty good. The last one we did, that we have like the last 65 episodes
was done by Ken York. He was located in Japan and he did it for us and he just
sent it over and we've been using it for ages, which I really love that one
because it shows what the Overpass is. But, you know, so thanks very much to Ken, if
you're out there watching still, if you're still there and thanks to
Sandee for doing the new intro. I think it looks pretty cool. We're trying
to jazz things up a little bit make it look a bit fresh and I think it
might grow a mustache or start speaking with some sort of English
accent or something like that, but you know, we'll try we'll try to change
things up a little bit. Anyway, so yesterday, I did the video where
I talked about reward-able items. So, the fact that we put
in you're rewarded ads and we're also doing Firebase- Firebase invites and
things like that, and I got in the car and I drove out to the
countryside and I set everything up. But I got really artsy
with the filming and everything. Little did I know that while I was
filming that, my app ear spy was crashing all over the place. So, like the previous
day I'd released a build and luckily, I used analytics and I used
FireBase analytics and FireBase crash reporting, which are hugely
important. Here's what happened. I put in a few new features and
just released a small build. When you go through Google and this was
the Android version, and when you go through Google Play, now, they start
saying "who do you want to release it to?" And because it's like
I think it's deployed to like 200,000 users at the moment, it said-
it recommends just deploying to 1% of the users. But you know, it just sound so
boring to me and I'm like excited to get these new
features out, so I say no, let's send it up to 50% of all the users. So I
send it to 50% of all users and then there's nothing- you
don't hear anything. I'm in, by the way, I did test this. I tested this on a device.
I tested it on the two device that I have here, everything worked fine.
But when I got back to the this yesterday morning, after I
finished doing the video, it had actually been out in the world for about about 18
hours. Then we started to get some of the crash reporting in and I started to
see that this thing was crashing on a lot of different devices. So,
have a look at my screen, let's talk a little bit about crash reporting and
analytics in general with FireBase. If you have a look at my screen here, I've
got it open to the stream view of Ear Spy which is the big app. I love
using FireBase that we've been slowly been adopting it more and more
in different things. It's kind of been my my favorite tool lately and I use Google
Analytics initially. This is the stream views or everything you like in
the last 30 minutes. The nice thing about FireBase is I can have one project and
have like all the different variations of the application there and quickly
switch between them, including the Android ones and also the dynamic links
down here. So, I can just send out a link rather than say, this is the iPhone link,
this is the Android link. Just send it off to one of them, right?
Anyway, I go over there to crash reporting and I start realizing
that we see this huge spike when I came back. That- oh, that looks
bad. You know, I get maybe- I know- you know what-
I know I could have used all those different tools like you the
performance testing and all that kind of stuff, and uploaded it and running a lot
like lots of different tools. But I really was- a very small release.
Basically what it was, was I added in FireBase invites which is cool,
but I also removed an ad network. I removed StartApp as an ad network, coz
like a week ago, I'd implemented StartApp. I'll talk
another day about StartApp. It's- it seemed to be a good network,
and their support was really, really good. But it just seemed that
it added much to the permissions like I had to
add like a lot of location and bootloader and things like that.
People started asking if I use this app, why does it need
my location and I had to say, so we can serve you ads which is
not really what I wanted to say. I wish I had something else to say. So, yesterday,
what I did was I removed the location, I removed all the StartApp's SDKs,
but I did not remove one item that were- instantiated the services in the
manifest. This is what happened. So, you can see here it just spiked up
yesterday and it sort of raised the alarm bells. I went through and I
started looking at it this, it was version 54, so I could see- I
see 55 which was the fix, that's a lot better, but it was really 54. When
we saw all of these crashes come through. Now, the nice thing about crash reporting
and a good - is that you could just go through and you see the
stack traces. I mean this is very similar to what you have in the Google Play Console, but
it gives you a lot more information. So, you can see here, start crashing on all
of these, I could see that it was actually trying to create this service
on. Let me show you here, in a second, calm that StartApp the Android up
publish which is one of the SDKs that I removed and I removed it from there, but
didn't remove the service instantiation from the manifest. It really just took
a few minutes to find it. So, the nice thing was I could go through and go
back and release a new version and release it out to everybody, and then
everything's resolved. It was- it really is important to check those crash
reporting as soon as you do it. Now, in contrast, if I show you the Google Play
Console, the ANR's and ANR's it crashes. ANR means an application not
responding, crashes are the crashes you see. It doesn't even have even today. A
couple days later, we still don't even have that data because it's back a few
days. So we know it was really- it's much clearer to look at it in the
FireBase Analytics at least, you know, as far as I'm concerned. Now,
the reason this is important is because when you put an app out into the field,
if you're not using any kind of analytics at all, is that when you put an
app into the field, nobody's gonna tell you if it's crashing say, the whole
time. Yeah, let me go- actually go back to this again. 54 so yeah-
the 85% of app runs were free of install, so it was affecting 15%
of users, which is actually quite a lot considering the amount of users it was.
Now, do you know how many bad reviews I got during that time? None. Nobody
complained. Nobody said anything. This is a given and this is the case.
This is one of the things that a lot of developers think and I know this
from experience, that I've thought this in the past. People assume that
if nobody's complaining, everything's running fine. I mean, a lot of clients
that I work with, they'll say users are complaining
about the application crashing, but the developers say that- that
everything is running fine because when they test it on their devices
everything runs fine. And they don't have any analytics or logging in place.
The whole nature of distributing- computing where we have,
all these apps on all these different devices, so like somebody who's running
this app and in Dayton, Ohio could have it crashed. I I'm not going to-
if it's not connected directly to the server or if I don't have any
kind of analytics in place right. Now, and that person in Dayton, Ohio
where it crashes on, the last thing he's gonna do or unless
he's really interested in using the app, he's gonna send me an email and tell me
it's crashed or he's gonna leave a review and say it's crashed more likely
than not. He is gonna say screw it. He's just gonna uninstall it even. Cuz that's
what I would do as a developer. I assume that people are gonna tell me when
something's wrong. As a user, I can't be bothered. You
know, it's not just with app. Either if I go into a restaurant and the food is bad,
I'm not really gonna complain. And it's not just-
or like I say, if you go into a restaurant and the restaurant smells bad,
like you're going with your family, restaurant smells bad and then
you start - you quietly just leave. You don't say to the
waiter, "Excuse me, this place smells bad. Anyway, we're leaving."
They'll never know, they just won't know and this is the same with your app. If
something's crashing, you can't expect your users to tell you and if
they do tell you, they're not going to give
you enough information. Anyway, they're gonna say things like, "Hey, I've tried
your app the other day and nothing happened." "I opened it nothing
happened." And you'll say, "So, did you get a blank screen, did you click
on anything, did- was it just sluggish?" You get what- you'd ask
100 follow-up questions and they'll just say, it- just nothing
happened . Cuz they're not- yeah, it's not their job to tell you
what's wrong with your app. It's your job to know it. So, anyway, analytics are
important. Crash reporting, definitely important. It saved me yesterday. And
if you're not using it, definitely do that. Anyway, that's it for today. I'll
talk to yo, guys, on Monday.