diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/MainActivity.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/MainActivity.kt
index b42ca4c581a615e069aec7ea312c2fdd3d654e9a..f126a9aabf17a19f1bfa19240b7aa96a85e38d30 100644
--- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/MainActivity.kt
+++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/MainActivity.kt
@@ -88,9 +88,10 @@ class MainActivity : AppCompatActivity(), ActivityResultCallback<ActivityResult>
         setContentView(R.layout.activity_main)
 
         viewModel.doNotKillComplete.observe(this) { complete ->
-            if (complete && nav.currentDestination?.id == R.id.doNotKillMeFragment) nav.navigate(
-                actionGlobalStartupFragment()
-            )
+            if (complete && nav.currentDestination?.id == R.id.doNotKillMeFragment) {
+                LOG.info("navigating to startup fragment")
+                nav.navigate(actionGlobalStartupFragment())
+            }
         }
 
         LOG.info { "do we have a saved instance state? " + (savedInstanceState != null) }
@@ -120,24 +121,39 @@ class MainActivity : AppCompatActivity(), ActivityResultCallback<ActivityResult>
     private fun onAppStateChanged(state: MailboxAppState) {
         when (state) {
             NotStarted -> {} // do not navigate anywhere yet
-            is Starting -> if (nav.currentDestination?.id != R.id.startupFragment)
+            is Starting -> if (nav.currentDestination?.id != R.id.startupFragment) {
+                LOG.info("navigating to startup fragment")
                 nav.navigate(actionGlobalStartupFragment())
-            is StartedSettingUp -> if (nav.currentDestination?.id != R.id.qrCodeFragment)
+            }
+            is StartedSettingUp -> if (nav.currentDestination?.id != R.id.qrCodeFragment) {
+                LOG.info("navigating to qr fragment")
                 nav.navigate(actionGlobalQrCodeFragment())
-            StartedSetupComplete -> if (nav.currentDestination?.id == R.id.qrCodeFragment)
+            }
+            StartedSetupComplete -> if (nav.currentDestination?.id == R.id.qrCodeFragment) {
+                LOG.info("navigating to setup complete fragment")
                 nav.navigate(actionGlobalSetupCompleteFragment())
-            else if (nav.currentDestination?.id != R.id.statusFragment &&
+            } else if (nav.currentDestination?.id != R.id.statusFragment &&
                 nav.currentDestination?.id != R.id.setupCompleteFragment
-            )
+            ) {
+                LOG.info("navigating to status fragment")
                 nav.navigate(actionGlobalStatusFragment())
-            ErrorNoNetwork -> if (nav.currentDestination?.id != R.id.noNetworkFragment)
+            }
+            ErrorNoNetwork -> if (nav.currentDestination?.id != R.id.noNetworkFragment) {
+                LOG.info("navigating to no network fragment")
                 nav.navigate(actionGlobalNoNetworkFragment())
-            ErrorClockSkew -> if (nav.currentDestination?.id != R.id.clockSkewFragment)
+            }
+            ErrorClockSkew -> if (nav.currentDestination?.id != R.id.clockSkewFragment) {
+                LOG.info("navigating to clock skew fragment")
                 nav.navigate(actionGlobalClockSkewFragment())
-            Stopping -> if (nav.currentDestination?.id != R.id.stoppingFragment)
+            }
+            Stopping -> if (nav.currentDestination?.id != R.id.stoppingFragment) {
+                LOG.info("navigating to stopping fragment")
                 nav.navigate(actionGlobalStoppingFragment())
-            Wiping -> if (nav.currentDestination?.id != R.id.wipingFragment)
+            }
+            Wiping -> if (nav.currentDestination?.id != R.id.wipingFragment) {
+                LOG.info("navigating to wiping fragment")
                 nav.navigate(actionGlobalWipingFragment())
+            }
             Stopped -> {} // nothing to do but needs to be exhaustive for Kotlin 1.7
         }
     }
@@ -163,6 +179,7 @@ class MainActivity : AppCompatActivity(), ActivityResultCallback<ActivityResult>
          * In this case onSaveInstanceState() has written true to the bundle and this value
          * got restored to [hadBeenStartedOnSave]. */
         if (hadBeenStartedOnSave && !hasDb) {
+            LOG.info("launching wipe complete activity")
             finish()
             startActivity(Intent(this, WipeCompleteActivity::class.java))
             return
@@ -173,14 +190,17 @@ class MainActivity : AppCompatActivity(), ActivityResultCallback<ActivityResult>
             // to do-not-keep activities option enabled), onDbChecked() gets called twice when
             // relaunched via app launcher (through onNewIntent()).
             if (!onboardingLaunched.getAndSet(true)) {
+                LOG.info("launching onboarding activity")
                 startForResult.launch(Intent(this, OnboardingActivity::class.java))
             }
             return
         }
 
         if (viewModel.needToShowDoNotKillMeFragment) {
+            LOG.info("navigating to do-not-kill fragment")
             nav.navigate(actionGlobalDoNotKillMeFragment())
         } else {
+            LOG.info("navigating to startup fragment")
             nav.navigate(actionGlobalStartupFragment())
         }
     }
@@ -201,8 +221,10 @@ class MainActivity : AppCompatActivity(), ActivityResultCallback<ActivityResult>
         if (result.resultCode == RESULT_OK) {
             onboardingDone = true
             if (viewModel.needToShowDoNotKillMeFragment) {
+                LOG.info("navigating to do-not-kill fragment")
                 nav.navigate(actionGlobalDoNotKillMeFragment())
             } else {
+                LOG.info("navigating to startup fragment")
                 nav.navigate(actionGlobalStartupFragment())
             }
         }
@@ -218,6 +240,7 @@ class MainActivity : AppCompatActivity(), ActivityResultCallback<ActivityResult>
     private fun showDozeDialog() = AlertDialog.Builder(this)
         .setMessage(R.string.warning_dozed)
         .setPositiveButton(R.string.fix) { dialog, _ ->
+            LOG.info("navigating to do-not-kill fragment")
             nav.navigate(actionGlobalDoNotKillMeFragment())
             dialog.dismiss()
         }