diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java
index 06100d6363785813463ddf9aeda0dfdc2821be0f..5ea8f0f43161527f0461ac60e8013b025b24df47 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java
@@ -197,6 +197,10 @@ public abstract class ThreadListViewModel<I extends ThreadItem>
 	 */
 	@UiThread
 	protected void addItem(I item, boolean scrollToItem) {
+		// If items haven't loaded, we need to wait until they have.
+		// Since this was a R/W DB transaction, the load will pick up this item.
+		if (items.getValue() == null) return;
+
 		messageTree.add(item);
 		if (scrollToItem) this.scrollToItem.set(item.getId());
 		items.setValue(new LiveResult<>(messageTree.depthFirstOrder()));