diff --git a/lib/reducers/message-reducer.js b/lib/reducers/message-reducer.js
--- a/lib/reducers/message-reducer.js
+++ b/lib/reducers/message-reducer.js
@@ -99,12 +99,9 @@
   processUpdatesActionType,
 } from '../types/update-types.js';
 import { setNewSessionActionType } from '../utils/action-utils.js';
-import { isDev } from '../utils/dev-utils.js';
 import { translateClientDBThreadMessageInfos } from '../utils/message-ops-utils.js';
-import { assertObjectsAreEqual } from '../utils/objects.js';
 import { ashoatKeyserverID } from '../utils/validation-utils.js';
 
-const PROCESSED_MSG_STORE_INVARIANTS_DISABLED = !isDev;
 const _mapValuesWithKeys = _mapValues.convert({ cap: false });
 
 // Input must already be ordered!
@@ -136,22 +133,6 @@
   );
 }
 
-function assertMessageStoreThreadsAreEqual(
-  processedMessageStore: MessageStore,
-  expectedMessageStore: MessageStore,
-  location: string,
-) {
-  if (PROCESSED_MSG_STORE_INVARIANTS_DISABLED) {
-    return;
-  }
-
-  assertObjectsAreEqual(
-    processedMessageStore.threads,
-    expectedMessageStore.threads,
-    `MessageStore.threads - ${location}`,
-  );
-}
-
 const newThread = () => ({
   messageIDs: [],
   startReached: false,
@@ -325,7 +306,6 @@
   newMessageInfos: $ReadOnlyArray<RawMessageInfo>,
   truncationStatus: { [threadID: string]: MessageTruncationStatus },
   threadInfos: { +[threadID: string]: RawThreadInfo },
-  actionType: string,
 ): MergeNewMessagesResult {
   const {
     messageStoreOperations: updateWithLatestThreadInfosOps,
@@ -338,15 +318,10 @@
     updateWithLatestThreadInfosOps,
   );
 
-  assertMessageStoreThreadsAreEqual(
-    messageStoreAfterUpdateOps,
-    messageStoreUpdatedWithLatestThreadInfos,
-    `${actionType} | reassignment and filtering`,
-  );
-
   const updatedMessageStore = {
     ...messageStoreUpdatedWithLatestThreadInfos,
     messages: messageStoreAfterUpdateOps.messages,
+    threads: messageStoreAfterUpdateOps.threads,
   };
 
   const localIDsToServerIDs: Map<string, string> = new Map();
@@ -624,7 +599,7 @@
 
   const messageStore = {
     messages: processedMessageStore.messages,
-    threads,
+    threads: processedMessageStore.threads,
     local,
     currentAsOf: {
       ...processedMessageStore.currentAsOf,
@@ -632,12 +607,6 @@
     },
   };
 
-  assertMessageStoreThreadsAreEqual(
-    processedMessageStore,
-    messageStore,
-    `${actionType} | processed`,
-  );
-
   return {
     messageStoreOperations: [
       ...updateWithLatestThreadInfosOps,
@@ -762,15 +731,13 @@
       messageStoreOperations,
     );
 
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      freshStore,
-      `${action.type} | fresh store`,
-    );
-
     return {
       messageStoreOperations,
-      messageStore: { ...freshStore, messages: processedMessageStore.messages },
+      messageStore: {
+        ...freshStore,
+        messages: processedMessageStore.messages,
+        threads: processedMessageStore.threads,
+      },
     };
   } else if (action.type === incrementalStateSyncActionType) {
     if (
@@ -791,7 +758,6 @@
       messagesResult.rawMessageInfos,
       messagesResult.truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (action.type === processUpdatesActionType) {
     if (action.payload.updatesResult.newUpdates.length === 0) {
@@ -809,7 +775,6 @@
         messagesResult.rawMessageInfos,
         messagesResult.truncationStatuses,
         newThreadInfos,
-        action.type,
       );
     return {
       messageStoreOperations,
@@ -830,7 +795,6 @@
       messagesResult.rawMessageInfos,
       messagesResult.truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (
     action.type === fetchSingleMostRecentMessagesFromThreadsActionTypes.success
@@ -840,7 +804,6 @@
       action.payload.rawMessageInfos,
       action.payload.truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (
     action.type === fetchMessagesBeforeCursorActionTypes.success ||
@@ -851,7 +814,6 @@
       action.payload.rawMessageInfos,
       { [action.payload.threadID]: action.payload.truncationStatus },
       newThreadInfos,
-      action.type,
     );
   } else if (
     action.type === logOutActionTypes.success ||
@@ -868,17 +830,12 @@
       messageStoreOperations,
     );
 
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      filteredMessageStore,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
       messageStore: {
         ...filteredMessageStore,
         messages: processedMessageStore.messages,
+        threads: processedMessageStore.threads,
       },
     };
   } else if (action.type === newThreadActionTypes.success) {
@@ -891,7 +848,6 @@
       messagesResult.rawMessageInfos,
       messagesResult.truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (action.type === sendMessageReportActionTypes.success) {
     return mergeNewMessages(
@@ -902,7 +858,6 @@
           messageTruncationStatus.UNCHANGED,
       },
       newThreadInfos,
-      action.type,
     );
   } else if (action.type === registerActionTypes.success) {
     const truncationStatuses = {};
@@ -915,7 +870,6 @@
       action.payload.rawMessageInfos,
       truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (
     action.type === changeThreadSettingsActionTypes.success ||
@@ -931,7 +885,6 @@
       action.payload.newMessageInfos,
       { [action.payload.threadID]: messageTruncationStatus.UNCHANGED },
       newThreadInfos,
-      action.type,
     );
   } else if (action.type === deleteEntryActionTypes.success) {
     const payload = action.payload;
@@ -941,7 +894,6 @@
         payload.newMessageInfos,
         { [payload.threadID]: messageTruncationStatus.UNCHANGED },
         newThreadInfos,
-        action.type,
       );
     }
   } else if (action.type === joinThreadActionTypes.success) {
@@ -954,7 +906,6 @@
       messagesResult.rawMessageInfos,
       messagesResult.truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (action.type === sendEditMessageActionTypes.success) {
     const { newMessageInfos } = action.payload;
@@ -968,7 +919,6 @@
       newMessageInfos,
       truncationStatuses,
       newThreadInfos,
-      action.type,
     );
   } else if (
     action.type === sendTextMessageActionTypes.started ||
@@ -1027,10 +977,6 @@
       };
     }
 
-    const threads = {
-      ...messageStore.threads,
-      ...updatedThreads,
-    };
     messageStoreOperations.push({
       type: 'replace_threads',
       payload: {
@@ -1045,17 +991,11 @@
 
     const newMessageStore = {
       messages: processedMessageStore.messages,
-      threads,
+      threads: processedMessageStore.threads,
       local,
       currentAsOf: messageStore.currentAsOf,
     };
 
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      newMessageStore,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
       messageStore: newMessageStore,
@@ -1106,23 +1046,9 @@
       messageStoreOperations,
     );
 
-    const newMessageStore = {
-      ...processedMessageStore,
-      threads: {
-        ...messageStore.threads,
-        ...updatedThreads,
-      },
-    };
-
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      newMessageStore,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
-      messageStore: newMessageStore,
+      messageStore: processedMessageStore,
     };
   } else if (
     action.type === sendTextMessageActionTypes.success ||
@@ -1200,25 +1126,14 @@
       messageStoreOperations,
     );
 
-    const newMessageStore = {
-      ...messageStore,
-      messages: processedMessageStore.messages,
-      threads: {
-        ...messageStore.threads,
-        ...updatedThreads,
-      },
-      local,
-    };
-
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      newMessageStore,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
-      messageStore: newMessageStore,
+      messageStore: {
+        ...messageStore,
+        messages: processedMessageStore.messages,
+        threads: processedMessageStore.threads,
+        local,
+      },
     };
   } else if (action.type === saveMessagesActionType) {
     const truncationStatuses = {};
@@ -1232,7 +1147,6 @@
         action.payload.rawMessageInfos,
         truncationStatuses,
         newThreadInfos,
-        action.type,
       );
     return {
       messageStoreOperations,
@@ -1293,20 +1207,11 @@
 
     const newMessageStore = {
       messages: processedMessageStore.messages,
-      threads: {
-        ...messageStore.threads,
-        ...updatedThreads,
-      },
+      threads: processedMessageStore.threads,
       local: _omit(messageIDsToPrune)(messageStore.local),
       currentAsOf: messageStore.currentAsOf,
     };
 
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      newMessageStore,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
       messageStore: newMessageStore,
@@ -1555,24 +1460,13 @@
       messageStoreOperations,
     );
 
-    const newMessageStore = {
-      ...messageStore,
-      threads: {
-        ...messageStore.threads,
-        [threadID]: threadState,
-      },
-      messages: processedMessageStore.messages,
-    };
-
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      newMessageStore,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
-      messageStore: newMessageStore,
+      messageStore: {
+        ...messageStore,
+        threads: processedMessageStore.threads,
+        messages: processedMessageStore.messages,
+      },
     };
   } else if (action.type === processServerRequestsActionType) {
     const {
@@ -1585,24 +1479,15 @@
       messageStoreOperations,
     );
 
-    assertMessageStoreThreadsAreEqual(
-      processedMessageStore,
-      messageStoreAfterReassignment,
-      action.type,
-    );
-
     return {
       messageStoreOperations,
       messageStore: {
         ...messageStoreAfterReassignment,
         messages: processedMessageStore.messages,
+        threads: processedMessageStore.threads,
       },
     };
   } else if (action.type === setClientDBStoreActionType) {
-    const payloadMessages = action.payload.messages;
-    if (!payloadMessages) {
-      return { messageStoreOperations: [], messageStore };
-    }
     const actionPayloadMessageStoreThreads =
       translateClientDBThreadMessageInfos(
         action.payload.messageStoreThreads ?? [],
@@ -1612,21 +1497,23 @@
     for (const threadID in actionPayloadMessageStoreThreads) {
       newThreads[threadID] = {
         ...actionPayloadMessageStoreThreads[threadID],
-        messageIDs: messageStore.threads[threadID]?.messageIDs ?? [],
+        messageIDs: messageStore.threads?.[threadID]?.messageIDs ?? [],
       };
     }
 
-    assertMessageStoreThreadsAreEqual(
-      {
-        ...messageStore,
-        threads: newThreads,
-      },
-      messageStore,
-      `${action.type} | comparing SQLite with redux-persist`,
-    );
+    const payloadMessages = action.payload.messages;
+    if (!payloadMessages) {
+      return {
+        messageStoreOperations: [],
+        messageStore: { ...messageStore, threads: newThreads },
+      };
+    }
 
     const { messageStoreOperations, messageStore: updatedMessageStore } =
-      updateMessageStoreWithLatestThreadInfos(messageStore, newThreadInfos);
+      updateMessageStoreWithLatestThreadInfos(
+        { ...messageStore, threads: newThreads },
+        newThreadInfos,
+      );
 
     let threads = { ...updatedMessageStore.threads };
     let local = { ...updatedMessageStore.local };
diff --git a/lib/reducers/message-reducer.test.js b/lib/reducers/message-reducer.test.js
--- a/lib/reducers/message-reducer.test.js
+++ b/lib/reducers/message-reducer.test.js
@@ -265,17 +265,17 @@
     },
   ];
 
-  const threads = {
-    '88471': {
-      messageIDs: ['local11', 'local10', '103502'],
-      startReached: false,
+  const clientDBThreads = [
+    {
+      id: '88471',
+      start_reached: '0',
     },
-  };
+  ];
 
   const { messageStore: updatedMessageStore } = reduceMessageStore(
     {
       messages: {},
-      threads,
+      threads: {},
       local: {},
       currentAsOf: { [ashoatKeyserverID]: 1234567890123 },
     },
@@ -287,7 +287,7 @@
         threadStore: {
           threadInfos: {},
         },
-        messageStoreThreads: [],
+        messageStoreThreads: clientDBThreads,
         messages: clientDBMessages,
         reports: [],
       },