diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index 53d8400146786c4c20b97da26153ecca9350f0cb..af1d9171270cd95d80336611447bed4a52ddd9eb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -163,6 +163,9 @@ class ChatlineFragment : ServiceBoundFragment() {
     messageHistory.adapter = messageHistoryAdapter
     viewModel.recentlySentMessages.toLiveData()
       .observe(this, Observer(messageHistoryAdapter::submitList))
+    messageHistoryAdapter.setOnUpdateFinishedListener {
+      messageHistory.scrollToPosition(0)
+    }
 
     fun send() {
       if (chatline.safeText.isNotBlank()) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
index 0f3527018729e5be866bd3342357981dcfdd2e22..df87a54f0b1e7b4422e54e1df5877a36d74105a7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
@@ -24,11 +24,11 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
 import androidx.recyclerview.widget.DiffUtil
-import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.lists.ListAdapter
 
 class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.MessageViewHolder>(
   object : DiffUtil.ItemCallback<CharSequence>() {
@@ -39,17 +39,26 @@ class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.Me
       oldItem == newItem
   }) {
   private var clickListener: ((CharSequence) -> Unit)? = null
+  private var updateFinishedListener: (() -> Unit)? = null
 
-  fun setOnItemClickListener(listener: (CharSequence) -> Unit) {
+  fun setOnItemClickListener(listener: ((CharSequence) -> Unit)?) {
     this.clickListener = listener
   }
 
+  fun setOnUpdateFinishedListener(listener: (() -> Unit)?) {
+    this.updateFinishedListener = listener
+  }
+
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
     MessageViewHolder(
       LayoutInflater.from(parent.context).inflate(R.layout.widget_history_message, parent, false),
       clickListener = clickListener
     )
 
+  override fun onUpdateFinished(list: List<CharSequence>) {
+    updateFinishedListener?.invoke()
+  }
+
   override fun onBindViewHolder(holder: MessageViewHolder, position: Int) =
     holder.bind(getItem(position))