The system can kill your app at any time. If you take too long to launch or resume the Watchdog process will kill you. If you do not free memory in response to a memory warning Jetsam will kill you.

In the past you would get a crash log when the system killed your app. The stack traces included would not really describe the source of the problem but at least you would get a log.

In 2014 Apple introduced new logging and activity tracing frameworks. These let you instrument your code with effective logging and breadcrumbs. And these would show up in your crash logs. Suddenly you could see the steps leading to any crash. This is extremely valuable for troubleshooting problems. You could easily see what happened inside your app leading to the crash.

In 2016 Apple brought the different logging and activity tracing APIs into a single, unified framework. This streamlined things and was easier to adopt.

What Apple did not mention is that in 2016 they stopped including activity tracing and logging information in crash reports. No longer can you see the steps leading to a crash.

Another thing that has not been mentioned is that out of memory crashes are now logged in a new format. JetsamEvent logs do not show up in Xcode, and can only be retrieved by syncing with iTunes.

So the most common category of production crash is no longer visible to developers, and even if it was it could no longer include the necessary diagnostic information.