Originally posted on the Firebase blogbyDoug Stevenson /Developer Advocate

I've got to come clean with everyone: I'm making no new year's resolutions for
2017. Nor did I make any in 2016. In fact, I don't think I've ever made one!
It's not so much that I take a dim view of new year's resolutions. I simply
suspect that I would likely break them by the end of the week, and feel bad
about it!

One thing I've found helpful in the past is to see the new year as a pivoting
point to try new things, and also improve the work I'm already doing. For me
(and I hope for you too!), 2017 will be a fresh year for boosting app quality.

The phrase "app quality" can take a bunch of different meanings, based on what
you value in the software you create and use. As a developer, traditionally,
this means fixing bugs that cause problems for your users. It could also be a
reflection of the amount of delight your users take in your app. All of this
gets wrapped up into the one primary metric that we have to gauge the quality of
a mobile app, which is your app's rating on the store where it's published. I'm
sure every one of you who has an app on a storefront has paid much attention to
the app's rating at some point!

Firebase provides some tools you can use to boost your app's quality, and if
you're not already using them, maybe a fresh look at those tools would be
helpful this year?

Firebase Crash Reporting

The easiest tool to get started with is Firebase Crash Reporting. It takes
little to no lines of code to integrate it into your iOS and Android app, and
once you do, the Firebase console will start showing crashes that are happening
to your users. This gives you a "hit list" of problems to fix.
One thing I find ironic about being involved with the Crash Reporting team is
how we view the influx of total crashes received as we monitor our system. Like
any good developer product, we strive to grow adoption, which means we celebrate
graphs that go "up and to the right". So, in a strange sense, we like to see
more crashes, because that means more developers are using our stuff! But for
all of you developers out there, more crashes is obviously a *bad* thing, and
you want to make those numbers go down! So, please, don't be like us - make
your crash report graphs go down and to the right in 2017!

Firebase Test Lab for Android

Even better than fixing problems for your users is fixing those problems
before they even reach your users. For your Android apps, you can use
Firebase Test Lab to
help ensure that your apps work great for your users among a growing variety of
actual devices that we manage. Traditionally, it's been kind of a pain to
acquire and manage a good selection of devices for testing. However, with Test
Lab, you simply upload your APK and tests, and it will install and run them to
our devices. After the tests complete, we'll provide all the screenshots,
videos, and logs of everything that happened for you to examine in the Firebase
console.

With Firebase Test Lab for Android now available with generous daily quotas at
no charge for projects on the free Spark tier, 2017 is a great time to get
started with that. And, if you haven't set up your Android app builds in a
continuous integration environment, you could set that up, then configure it to
run your tests
automatically on Test Lab.

If you're the kind of person who likes writing tests for your code (which is,
admittedly, not very many of us!), it's natural to get those tests running on
Test Lab. But, for those of us who aren't maintaining a test suite with our
codebase, we can still use Test Lab's automated Robo test to
get automated test coverage right away, with no additional lines of code
required. That's not quite that same as having a comprehensive suite of tests,
so maybe 2017 would be a good time to learn more about architecting "testable"
apps, and how those practices can raise the bar of quality for your app. I'm
planning on writing more about this later this year, so stay tuned to the Firebase Blog for more!

Firebase Remote Config

At its core, Firebase
Remote Config is a tool that lets you configure your app using parameters
that you set up in the Firebase console. It can be used to help manage the
quality of your app, and there's a couple neat tricks you can do with it. Maybe
this new year brings new opportunities to give them a try!

First of all, you can use Remote Config to carefully roll out a new feature to
your users. It works like this:

Code your new feature and restrict its access to the user by a Remote Config
boolean parameter. If the value is 'false', your users don't see the feature.
Make 'false' the default value in the app.

Configure that parameter in the Firebase console to also be initially
'false' for everyone.

Publish your app to the store.

When it's time to start rolling out the new feature to a small segment of
users, configure the parameter to be 'true' for, say, five percent of your user
base.

Stay alert for new crashes in Firebase Crash Reporting, as well as feedback
from your users.

If there is a problem with the new feature, immediately roll back the new
feature by setting the parameter to 'false' in the console for everyone.

Or, if things are looking good, increase the percentage over time until you
reach 100% of your users.

This is much safer than publishing your new feature to everyone with a single
app update, because now you have the option to immediately disable a serious
problem, and without having to build and publish a whole new version of your
app. And, if you can act quickly, most of your users will never encounter the
problem to begin with. This works well with the email alerts you get from
Firebase Crash Reporting when a new crash is observed.

Another feature of Remote Config is the ability to experiment with some aspect
of your app in order to find out what works better for the users of your app,
then measure the results in Firebase Analytics. I don't know about you, but I'm
typically pretty bad at guessing what people actually prefer, and sometimes I'm
surprised at how people might actually *use* an app! Don't guess - instead, do
an experiment and know /for certain/ what delights your users more! It stands
to reason that apps finely tuned like this can get better ratings and make more
money.

Firebase Realtime Database

It makes sense that if you make it easier for you user to perform tasks in your
app, they will enjoy using it more, and they will come back more frequently.
One thing I have always disliked is having to check for new information by
refreshing, or navigating back and forward again. Apps that are always fresh
and up to date, without requiring me to take action, are more pleasant to use.

You can achieve this for your app by making effective use of Firebase Realtime Database
to deliver relevant data directly to your users at the moment it changes in the
database. Realtime Database is reactive by nature, because the client
API is designed for you set up listeners at data locations that get triggered in
the event of a change. This is far more convenient than having to poll an API
endpoint repeatedly to check for changes, and also much more respectful of the
user's mobile data and battery life. Users associate this feeling of delight
with apps of high quality.

What does 2017 have in store for your app?

I hope you'll join me this year in putting more effort into making our users
even more delighted. If you're with me, feel free to tweet me at @CodingDoug and tell me what you're up
to in 2017!