diff --git a/lib/reducers/thread-activity-reducer.js b/lib/reducers/thread-activity-reducer.js
--- a/lib/reducers/thread-activity-reducer.js
+++ b/lib/reducers/thread-activity-reducer.js
@@ -1,5 +1,9 @@
 // @flow
 
+import {
+  deleteThreadActionTypes,
+  leaveThreadActionTypes,
+} from '../actions/thread-actions.js';
 import {
   logOutActionTypes,
   deleteAccountActionTypes,
@@ -7,6 +11,8 @@
 import type { BaseAction } from '../types/redux-types.js';
 import type { ThreadActivityStore } from '../types/thread-activity-types.js';
 import { updateThreadLastNavigatedActionType } from '../types/thread-activity-types.js';
+import { updateTypes } from '../types/update-types-enum.js';
+import type { ClientUpdateInfo } from '../types/update-types.js';
 import { setNewSessionActionType } from '../utils/action-utils.js';
 
 function reduceThreadActivity(
@@ -23,6 +29,24 @@
       },
     };
     return updatedThreadActivityStore;
+  } else if (
+    action.type === leaveThreadActionTypes.success ||
+    action.type === deleteThreadActionTypes.success
+  ) {
+    const { newUpdates } = action.payload.updatesResult;
+    if (newUpdates.length === 0) {
+      return state;
+    }
+
+    let updatedState = { ...state };
+    for (const update: ClientUpdateInfo of newUpdates) {
+      if (update.type === updateTypes.DELETE_THREAD) {
+        const { [update.threadID]: _, ...stateSansRemovedThread } =
+          updatedState;
+        updatedState = stateSansRemovedThread;
+      }
+    }
+    return updatedState;
   } else if (
     action.type === logOutActionTypes.success ||
     action.type === deleteAccountActionTypes.success ||