diff --git a/lib/reducers/keyserver-reducer.js b/lib/reducers/keyserver-reducer.js
--- a/lib/reducers/keyserver-reducer.js
+++ b/lib/reducers/keyserver-reducer.js
@@ -49,7 +49,10 @@
 export default function reduceKeyserverStore(
   state: KeyserverStore,
   action: BaseAction,
-): KeyserverStore {
+): {
+  keyserverStore: KeyserverStore,
+  keyserverStoreOperations: $ReadOnlyArray<KeyserverStoreOperation>,
+} {
   if (action.type === addKeyserverActionType) {
     const replaceOperation: ReplaceKeyserverOperation = {
       type: 'replace_keyserver',
@@ -62,8 +65,13 @@
     };
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [replaceOperation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [
+          replaceOperation,
+        ]),
+      },
+      keyserverStoreOperations: [replaceOperation],
     };
   } else if (action.type === removeKeyserverActionType) {
     const removeOperation: RemoveKeyserversOperation = {
@@ -74,8 +82,13 @@
     };
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [removeOperation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [
+          removeOperation,
+        ]),
+      },
+      keyserverStoreOperations: [removeOperation],
     };
   } else if (action.type === resetUserStateActionType) {
     // this action is only dispatched on native
@@ -98,8 +111,14 @@
     }
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, replaceOperations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(
+          state.keyserverInfos,
+          replaceOperations,
+        ),
+      },
+      keyserverStoreOperations: replaceOperations,
     };
   } else if (action.type === setNewSessionActionType) {
     const { keyserverID, sessionChange } = action.payload;
@@ -110,7 +129,10 @@
             `but keyserver ${keyserverID} is not in KeyserverStore!`,
         );
       }
-      return state;
+      return {
+        keyserverStore: state,
+        keyserverStoreOperations: [],
+      };
     }
 
     let newKeyserverInfo = {
@@ -148,8 +170,11 @@
     }
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      },
+      keyserverStoreOperations: operations,
     };
   } else if (
     action.type === logInActionTypes.success ||
@@ -173,8 +198,11 @@
       });
     }
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      },
+      keyserverStoreOperations: operations,
     };
   } else if (action.type === fullStateSyncActionType) {
     const { keyserverID } = action.payload;
@@ -190,8 +218,11 @@
     };
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === incrementalStateSyncActionType) {
     const { keyserverID } = action.payload;
@@ -218,8 +249,11 @@
     };
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === processUpdatesActionType) {
     const { keyserverID } = action.payload;
@@ -238,8 +272,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === setURLPrefix) {
     const operation: ReplaceKeyserverOperation = {
@@ -253,8 +290,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === updateLastCommunicatedPlatformDetailsActionType) {
     const { keyserverID, platformDetails } = action.payload;
@@ -269,8 +309,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === keyserverRegisterActionTypes.success) {
     const operation: ReplaceKeyserverOperation = {
@@ -284,8 +327,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === updateConnectionStatusActionType) {
     const { keyserverID, status } = action.payload;
@@ -304,8 +350,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === unsupervisedBackgroundActionType) {
     const { keyserverID } = action.payload;
@@ -324,8 +373,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === queueActivityUpdatesActionType) {
     const { activityUpdates, keyserverID } = action.payload;
@@ -362,8 +414,11 @@
     };
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === updateActivityActionTypes.success) {
     const { activityUpdates } = action.payload;
@@ -388,8 +443,11 @@
       });
     }
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      },
+      keyserverStoreOperations: operations,
     };
   } else if (
     action.type === logOutActionTypes.success ||
@@ -417,8 +475,11 @@
     });
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      },
+      keyserverStoreOperations: operations,
     };
   } else if (action.type === deleteKeyserverAccountActionTypes.success) {
     const operations: KeyserverStoreOperation[] = [
@@ -448,8 +509,11 @@
     }
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      },
+      keyserverStoreOperations: operations,
     };
   } else if (action.type === setLateResponseActionType) {
     const { messageID, isLate, keyserverID } = action.payload;
@@ -476,8 +540,11 @@
     };
 
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === updateDisconnectedBarActionType) {
     const { keyserverID } = action.payload;
@@ -495,8 +562,11 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   } else if (action.type === setDeviceTokenActionTypes.success) {
     const { deviceTokens } = action.payload;
@@ -514,8 +584,11 @@
       });
     }
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, operations),
+      },
+      keyserverStoreOperations: operations,
     };
   } else if (action.type === setConnectionIssueActionType) {
     const { connectionIssue, keyserverID } = action.payload;
@@ -533,10 +606,16 @@
       },
     };
     return {
-      ...state,
-      keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      keyserverStore: {
+        ...state,
+        keyserverInfos: processStoreOps(state.keyserverInfos, [operation]),
+      },
+      keyserverStoreOperations: [operation],
     };
   }
 
-  return state;
+  return {
+    keyserverStore: state,
+    keyserverStoreOperations: [],
+  };
 }
diff --git a/lib/reducers/keyserver-reducer.test.js b/lib/reducers/keyserver-reducer.test.js
--- a/lib/reducers/keyserver-reducer.test.js
+++ b/lib/reducers/keyserver-reducer.test.js
@@ -36,7 +36,8 @@
     };
 
     expect(
-      reduceKeyserverStore(oldKeyserverStore, deleteAccountAction),
+      reduceKeyserverStore(oldKeyserverStore, deleteAccountAction)
+        .keyserverStore,
     ).toEqual({ keyserverInfos: { ['0']: defaultKeyserverInfo('url1') } });
   });
   it('update keyserverInfo with ashoatKeyserverID', () => {
@@ -75,7 +76,8 @@
 
     expect(
       reduceKeyserverStore(oldKeyserverStore, deleteAccountAction)
-        .keyserverInfos[ashoatKeyserverID].connection.connectionIssue,
+        .keyserverStore.keyserverInfos[ashoatKeyserverID].connection
+        .connectionIssue,
     ).toEqual(null);
   });
 
@@ -115,7 +117,8 @@
 
     expect(
       reduceKeyserverStore(oldKeyserverStore, deleteAccountAction)
-        .keyserverInfos[ashoatKeyserverID].connection.connectionIssue,
+        .keyserverStore.keyserverInfos[ashoatKeyserverID].connection
+        .connectionIssue,
     ).toEqual('not_logged_in_error');
   });
 });
diff --git a/lib/reducers/master-reducer.js b/lib/reducers/master-reducer.js
--- a/lib/reducers/master-reducer.js
+++ b/lib/reducers/master-reducer.js
@@ -77,7 +77,7 @@
     reduceMessageStore(state.messageStore, action, threadInfos);
   let messageStore = reducedMessageStore;
 
-  let keyserverStore = reduceKeyserverStore(state.keyserverStore, action);
+  let { keyserverStore } = reduceKeyserverStore(state.keyserverStore, action);
 
   if (
     action.type !== incrementalStateSyncActionType &&