Non-fatals vs. Crashes, which ones are more important?
You could argue that crashes are more vital since they "break the app." However, non-fatals can break the app as well but are often recoverable.
This week at WeTransfer, we discussed our process around handling non-fatals, in which we agreed that we should handle them the same as crashes. With that, we mostly mean prioritizing non-fatals just like crashes and fixing them if they occur for many users.
If a non-fatal occurs a lot but does not become a reason for action, we consider logging such an error no longer. This way, we will end up with a list of critical non-fatal errors only.
In a way, this reminds me of many discussions around force unwrapping. Many engineers try to avoid force unwrapping as much as possible, prevent their apps from crashing. It makes it easy to say, "my app is 99.3% crash-free!". Though, does that mean your app is performing great?
You should take non-fatals just as seriously as crashes since they likely hurt user experience.
This week is full of articles, so prepare yourself. Enjoy this week's SwiftLee Weekly!
Even though I'm an experienced engineer, I'm still learning quite a bit. Composition is one of those things I've been doing for a while, without really knowing what it means and how it works. I decided to write down my thoughts, combined with new learnings in this week's article.
Firebase now offers enhanced support for Apple platforms, including beta-level support for tvOS and macOS. Deliver great cross-device experiences using Firebase products. For example, identifying critical crashes by filtering on device type or operating system using Crashlytics. Learn more.
A fascinating article by Matt Ronge. Let me make one thing clear: it shouldn’t only be about the money. Though some of us need income from app subscriptions, for which data from this article might give you exciting insights—just switching to subscriptions? Matt wrote about that too.
I’ve linked John Sundell’s new framework in a recent issue already, but this time he wrote an article giving insights into how you can create a concurrent version of forEach and map. I found this inspirational for writing my custom concurrency solutions in the short term future.
Tjeerd In' T Veen gives us insights into different ways of testing and preventing issues from arising. I liked the software life-cycle graph, which made total sense to me! We're heavily focused on the left side at WeTransfer, partly by using Mocker, which this article mentions too.
Although you might have read a lot about these topics through my dedicated concurrency category, you might prefer watching a video instead. Tundsdev published a great getting started video to help you kick off your journey into async/await, actors, and more.
I had not seen this article before, but it was fascinating to read! Not to confuse with MetricKit, this tool allows you to gather insights into your Xcode build statistics. Worth checking out if you need more insights for your team!
Phased releases are tremendous and a default way of releasing for us at WeTransfer. Jared Sorge shares some insights into how phased releases work since it might not be apparent right away due to a lack of documentation.
If you’re interested in becoming a Swift instructor for a Swift academy, this might be your chance! If you’re ready to learn some Swift Fundamentals and looking for a course, check out this link as well!
TravelPerk built a Mobile Platform squad, and Luis G. Valle shared this article through Twitter in which they covered all highlights. An interesting read if you’re interested in improving processes for your Mobile team too.