With a little help from a few tools and tips, you can take advantage of the situation and be proactive with those issues affecting your app’s health.
Now, iTunes Connect (iOS) and the Google Play Console (Android) are fine to get you started, but if you want to really stay out of trouble, a dedicated crash monitoring tool is highly recommended.
Crashlytics is the way
Crashlytics has become an industry standard and is widely popular.
However, Crashlytics roadmap has been a little bumpy, to say the least.
Starting as its own company circa 2011, it was purchased by Twitter and then sold to Google (as a more complete solution called Fabric). Now Google has announced they’re ditching Fabric as a stand-alone service and Crashlytics will be available directly from the Firebase console in 2019.
So, we should start linking our Firebase and Fabric accounts today! There’s a dedicated button in the dashboard for this purpose, and the process is pretty straightforward.
Now, after setting up your accounts, you should add the Crashlytics and Firebase SDKs to your app in order to start receiving reports to your Firebase console.
It should look something like this (excuse my “security blurring”):
What do I do with all that nonsense?
Well, you should prioritize first! Think of every issue as a ticket, tackle them by their severity or recurrence. They should translate into your repositories as Hotfixes.
You can dig deeper into every crash report by clicking on them and reading its details, so here are a few things to keep in mind:
- Try to interpret the report: Learn to navigate to the appropriate class in your codebase, use deobfuscation when necessary and read the extra user data that is available from within the Firebase console.
- Keep track: Create tickets in order to track your work. You don’t want to work on the same crash twice!
- Avoid catching generic exceptions: You or your teammates might be tempted, but catching a fatal crash with a generic exception is like putting a band-aid on a fatal wound.
- Search the root of the problem: Navigate through your solution’s architecture.
The problem might be starting from any of your components, like a breaking change in your API, or a deprecation in a recently upgraded dependency. Think twice about the best way to solve the problem with scalability.
- That device, though..: Sometimes, particular hardware or OS versions can lead to potential problems.
- Test your code: Unit-testing your code can help you avoid future crashes. Add meaningful tests to prevent such events from happening again.
In the end, approach crashes as an opportunity to grow, fix flaws in your original logic and make your app even more robust.
When there’s a crash, there’s a fix! Keep it agile and happy coding 🙂