diff --git a/src/app/mainview/components/MessageBar.qml b/src/app/mainview/components/MessageBar.qml
index 33fb2b95e0dcd1acb164d50a140c77b53dc8e719..7cfb59e18dfd0c061db0441533fcc98581d8b056 100644
--- a/src/app/mainview/components/MessageBar.qml
+++ b/src/app/mainview/components/MessageBar.qml
@@ -193,7 +193,6 @@ RowLayout {
                     sendMessageButtonClicked();
                 }
                 onTextChanged: {
-                    MessagesAdapter.userIsComposing(text ? true : false);
                     if (!text) {
                         messageBarTextArea.heightBinding();
                     }
diff --git a/src/app/mainview/components/MessageBarTextArea.qml b/src/app/mainview/components/MessageBarTextArea.qml
index 63880b80cbf842b54b91f38539bdd7bf85171180..3c81acad8313fd6264bbf9f39bf9ce6c9a670d3d 100644
--- a/src/app/mainview/components/MessageBarTextArea.qml
+++ b/src/app/mainview/components/MessageBarTextArea.qml
@@ -171,6 +171,7 @@ JamiFlickable {
         textFormat: TextEdit.PlainText
         placeholderTextColor: JamiTheme.messageBarPlaceholderTextColor
         horizontalAlignment: Text.AlignLeft
+        property var cacheText: ""
 
         background: Rectangle {
             border.width: 0
@@ -183,10 +184,10 @@ JamiFlickable {
         }
 
         onTextChanged: {
-            if (text)
-                MessagesAdapter.userIsComposing(true);
-            else
-                MessagesAdapter.userIsComposing(false);
+            if (text != cacheText) {
+                cacheText = text;
+                MessagesAdapter.userIsComposing(text ? true : false);
+            }
         }
 
         // Intercept paste event to use C++ QMimeData