diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java
index a56e94930d2952b6d50c11dee68a72cfd77e2e47..ec6d5a0f6f9bea49a4ea700bfface42c32490a0e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java
@@ -6,17 +6,24 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
+import static org.briarproject.bramble.api.contact.PendingContactState.CONNECTING;
+import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
+
 @Immutable
 @NotNullByDefault
 class PendingContactItem {
 
+	static final int POLL_DURATION_MS = 15_000;
+
 	private final PendingContact pendingContact;
 	private final PendingContactState state;
+	private final long lastPoll;
 
 	PendingContactItem(PendingContact pendingContact,
-			PendingContactState state) {
+			PendingContactState state, long lastPoll) {
 		this.pendingContact = pendingContact;
 		this.state = state;
+		this.lastPoll = lastPoll;
 	}
 
 	PendingContact getPendingContact() {
@@ -24,6 +31,10 @@ class PendingContactItem {
 	}
 
 	PendingContactState getState() {
+		if (state == WAITING_FOR_CONNECTION &&
+				System.currentTimeMillis() - lastPoll < POLL_DURATION_MS) {
+			return CONNECTING;
+		}
 		return state;
 	}
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
index eff4cbff2d290ac1911ac9c7af007d642f08f098..c3decf51d3997e2f21e38061806aa7d9ee348478 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
@@ -23,6 +23,7 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 import static org.briarproject.bramble.api.contact.PendingContactState.FAILED;
+import static org.briarproject.briar.android.contact.add.remote.PendingContactItem.POLL_DURATION_MS;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -69,7 +70,7 @@ public class PendingContactListActivity extends BriarActivity
 	@Override
 	public void onStart() {
 		super.onStart();
-		list.startPeriodicUpdate();
+		list.startPeriodicUpdate(POLL_DURATION_MS);
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
index 675ec39c2d5b6611130edfa80826f73542f4eccd..7e284712aedca8f7ae7e71b2899401cbd178035e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
@@ -18,6 +18,9 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.bramble.api.plugin.TorConstants;
+import org.briarproject.bramble.api.rendezvous.RendezvousPoller;
+import org.briarproject.bramble.api.rendezvous.event.RendezvousPollEvent;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -41,6 +44,7 @@ public class PendingContactListViewModel extends AndroidViewModel
 	@DatabaseExecutor
 	private final Executor dbExecutor;
 	private final ContactManager contactManager;
+	private final RendezvousPoller rendezvousPoller;
 	private final EventBus eventBus;
 
 	private final MutableLiveData<Collection<PendingContactItem>>
@@ -49,10 +53,13 @@ public class PendingContactListViewModel extends AndroidViewModel
 	@Inject
 	PendingContactListViewModel(Application application,
 			@DatabaseExecutor Executor dbExecutor,
-			ContactManager contactManager, EventBus eventBus) {
+			ContactManager contactManager,
+			RendezvousPoller rendezvousPoller,
+			EventBus eventBus) {
 		super(application);
 		this.dbExecutor = dbExecutor;
 		this.contactManager = contactManager;
+		this.rendezvousPoller = rendezvousPoller;
 		this.eventBus = eventBus;
 		this.eventBus.addListener(this);
 		loadPendingContacts();
@@ -67,7 +74,8 @@ public class PendingContactListViewModel extends AndroidViewModel
 	@Override
 	public void eventOccurred(Event e) {
 		if (e instanceof PendingContactStateChangedEvent ||
-				e instanceof PendingContactRemovedEvent) {
+				e instanceof PendingContactRemovedEvent ||
+				e instanceof RendezvousPollEvent) {
 			loadPendingContacts();
 		}
 	}
@@ -75,12 +83,14 @@ public class PendingContactListViewModel extends AndroidViewModel
 	private void loadPendingContacts() {
 		dbExecutor.execute(() -> {
 			try {
+				long lastPoll =
+						rendezvousPoller.getLastPollTime(TorConstants.ID);
 				Collection<Pair<PendingContact, PendingContactState>> pairs =
 						contactManager.getPendingContacts();
 				List<PendingContactItem> items = new ArrayList<>(pairs.size());
 				for (Pair<PendingContact, PendingContactState> p : pairs) {
 					items.add(new PendingContactItem(p.getFirst(),
-							p.getSecond()));
+							p.getSecond(), lastPoll));
 				}
 				pendingContacts.postValue(items);
 			} catch (DbException e) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerView.java
index 98448c9437743ff3bcd6dc21b63dae80a00b4f0e..9c203a0e8284c9166fadd32ffc3b7345f01cc6c3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerView.java
@@ -211,15 +211,19 @@ public class BriarRecyclerView extends FrameLayout {
 	}
 
 	public void startPeriodicUpdate() {
+		startPeriodicUpdate(MIN_DATE_RESOLUTION);
+	}
+
+	public void startPeriodicUpdate(long interval) {
 		if (recyclerView == null || recyclerView.getAdapter() == null) {
 			throw new IllegalStateException("Need to call setAdapter() first!");
 		}
 		refresher = () -> {
 			Adapter adapter = recyclerView.getAdapter();
 			adapter.notifyItemRangeChanged(0, adapter.getItemCount());
-			handler.postDelayed(refresher, MIN_DATE_RESOLUTION);
+			handler.postDelayed(refresher, interval);
 		};
-		handler.postDelayed(refresher, MIN_DATE_RESOLUTION);
+		handler.postDelayed(refresher, interval);
 	}
 
 	public void stopPeriodicUpdate() {