diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
index 8223f982528d530405ab9e1d23e599d37bb785fd..5af5c7b4a864988e018b20e9b78166639e2a539d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
@@ -585,7 +585,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     })
 
     // Only show nick list when we’re in a channel buffer
-    viewModel.bufferData.toLiveData().observe(this, Observer {
+    viewModel.bufferDataThrottled.toLiveData().observe(this, Observer {
       bufferData = it
       if (bufferData?.info?.type?.hasFlag(Buffer_Type.ChannelBuffer) == true) {
         drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.END)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
index 4b5fdb6ff9458d4df711d4421bbcfbdf069c8f59..bc4eec68e71787b7cb1a08f84378a824852719ee 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
@@ -91,7 +91,7 @@ class ToolbarFragment : ServiceBoundFragment() {
       description, messageSettings.colorizeMirc
     )
 
-    combineLatest(viewModel.bufferData, viewModel.lag).toLiveData()
+    combineLatest(viewModel.bufferDataThrottled, viewModel.lag).toLiveData()
       .observe(this, Observer {
         if (it != null) {
           val (data, lag) = it
@@ -119,15 +119,22 @@ class ToolbarFragment : ServiceBoundFragment() {
       })
 
     actionArea.setOnClickListener {
-      viewModel.bufferData.value?.info?.let { info ->
+      val bufferData = viewModel.bufferData.value
+      bufferData?.info?.let { info ->
         when (info.type.toInt()) {
           BufferInfo.Type.QueryBuffer.toInt()   -> {
-            UserInfoActivity.launch(requireContext(), bufferId = info.bufferId, openBuffer = true)
+            UserInfoActivity.launch(
+              requireContext(),
+              bufferId = info.bufferId,
+              openBuffer = true
+            )
           }
           BufferInfo.Type.ChannelBuffer.toInt() -> {
-            ChannelInfoActivity.launch(requireContext(),
-                                       bufferId = info.bufferId,
-                                       openBuffer = true)
+            ChannelInfoActivity.launch(
+              requireContext(),
+              bufferId = info.bufferId,
+              openBuffer = true
+            )
           }
           else                                  -> null
         }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
index c39f71c7059f86f3aad9a444c6857d43792e4b0d..f7ef6bd6c67be9060580569525141a3079c79db6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -267,7 +267,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       getColor(0, 0)
     }
 
-    combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer)
+    combineLatest(viewModel.bufferListThrottled,
+                  viewModel.expandedNetworks,
+                  viewModel.selectedBuffer)
       .toLiveData().zip(database.filtered().listen(accountId),
                         accountDatabase.accounts().listen(accountId))
       .observe(this, Observer { it ->
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
index d59244be1239b42900ee8405a08cdac11bc32a95..ef857918d26d0e812c87e4aae16bac118715c9d0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
@@ -101,7 +101,7 @@ class NickListFragment : ServiceBoundFragment() {
     val colorContext = ColorContext(requireContext(), messageSettings)
 
     val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size)
-    viewModel.nickData.toLiveData().observe(this, Observer {
+    viewModel.nickDataThrottled.toLiveData().observe(this, Observer {
       runInBackground {
         it?.asSequence()?.map {
           val nickName = it.nick
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index 17e9e0e0a17275744757374756765edace3287b9..0a0d88a5830c690a2d89dced1c572abb42e6f7b6 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -202,7 +202,9 @@ class QuasselViewModel : ViewModel() {
     } else {
       Observable.just(BufferData())
     }
-  }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
+  }
+  val bufferDataThrottled = bufferData.distinctUntilChanged().throttleLast(100,
+                                                                           TimeUnit.MILLISECONDS)
 
   val nickData: Observable<List<IrcUserItem>> = combineLatest(session, buffer)
     .switchMap { (sessionOptional, buffer) ->
@@ -243,7 +245,8 @@ class QuasselViewModel : ViewModel() {
       } else {
         Observable.just(emptyList())
       }
-    }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
+    }
+  val nickDataThrottled = nickData.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
 
   val bufferViewConfigs = bufferViewManager.mapSwitchMap { manager ->
     manager.liveBufferViewConfigs().map { ids ->
@@ -517,5 +520,7 @@ class QuasselViewModel : ViewModel() {
         } else {
           Observable.just(Pair<BufferViewConfig?, List<BufferProps>>(null, emptyList()))
         }
-      }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
+      }
+  val bufferListThrottled = bufferList.distinctUntilChanged().throttleLast(100,
+                                                                           TimeUnit.MILLISECONDS)
 }