Well the reason why app didn't crash was because the code which threw exception was in async {} so just the background thread crashed. However, not seeing any log in logcat still surprised me. Now after wrapping everything with try / catch and explicitly printing all the exception stack traces I can see everything.