diff --git a/src/components/views/settings/CrossSigningPanel.js b/src/components/views/settings/CrossSigningPanel.js
index 06c4783c4a..ccab886f17 100644
--- a/src/components/views/settings/CrossSigningPanel.js
+++ b/src/components/views/settings/CrossSigningPanel.js
@@ -36,6 +36,8 @@ export default class CrossSigningPanel extends React.PureComponent {
     componentDidMount() {
         const cli = MatrixClientPeg.get();
         cli.on("accountData", this.onAccountData);
+        cli.on("userTrustStatusChanged", this.onStatusChanged);
+        cli.on("crossSigning.keysChanged", this.onStatusChanged);
     }
 
     componentWillUnmount() {
@@ -43,6 +45,8 @@ export default class CrossSigningPanel extends React.PureComponent {
         const cli = MatrixClientPeg.get();
         if (!cli) return;
         cli.removeListener("accountData", this.onAccountData);
+        cli.removeListener("userTrustStatusChanged", this.onStatusChanged);
+        cli.removeListener("crossSigning.keysChanged", this.onStatusChanged);
     }
 
     onAccountData = (event) => {
@@ -52,6 +56,10 @@ export default class CrossSigningPanel extends React.PureComponent {
         }
     };
 
+    onStatusChanged = () => {
+        this.setState(this._getUpdatedStatus());
+    };
+
     _getUpdatedStatus() {
         // XXX: Add public accessors if we keep this around in production
         const cli = MatrixClientPeg.get();