diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/timeline/TimelineEvent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/timeline/TimelineEvent.kt
index 2921cc46cd187adba9e67a7910ceaa2e7227c41d..4663374194bfddc980dded4b50a032e32c858b28 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/timeline/TimelineEvent.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/timeline/TimelineEvent.kt
@@ -28,6 +28,7 @@ import org.matrix.android.sdk.api.session.events.model.isLiveLocation
 import org.matrix.android.sdk.api.session.events.model.isPoll
 import org.matrix.android.sdk.api.session.events.model.isReply
 import org.matrix.android.sdk.api.session.events.model.isSticker
+import org.matrix.android.sdk.api.session.events.model.toContent
 import org.matrix.android.sdk.api.session.events.model.toModel
 import org.matrix.android.sdk.api.session.room.model.EventAnnotationsSummary
 import org.matrix.android.sdk.api.session.room.model.ReadReceipt
@@ -157,7 +158,20 @@ fun TimelineEvent.getLastMessageContent(): MessageContent? {
     }
 }
 
-fun TimelineEvent.getLastEditNewContent(): Content? = annotations?.editSummary?.latestEdit?.getClearContent()?.toModel<MessageContent>()?.newContent
+fun TimelineEvent.getLastEditNewContent(): Content? {
+    val lastContent = annotations?.editSummary?.latestEdit?.getClearContent()?.toModel<MessageContent>()?.newContent
+    return if (isReply()) {
+        val previousFormattedBody = root.getClearContent().toModel<MessageTextContent>()?.formattedBody
+        if (previousFormattedBody?.isNotEmpty() == true) {
+            val lastMessageContent = lastContent.toModel<MessageTextContent>()
+            lastMessageContent?.let { ensureCorrectFormattedBodyInTextReply(it, previousFormattedBody) }?.toContent() ?: lastContent
+        } else {
+            lastContent
+        }
+    } else {
+        lastContent
+    }
+}
 
 private const val MX_REPLY_END_TAG = "</mx-reply>"
 
@@ -176,6 +190,7 @@ private fun ensureCorrectFormattedBodyInTextReply(messageTextContent: MessageTex
                     format = MessageFormat.FORMAT_MATRIX_HTML,
             )
         }
+
         else                                                                                                 -> messageTextContent
     }
 }
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/decorator/UpdatedReplyDecorator.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/decorator/UpdatedReplyDecorator.kt
index b334f7ce7f5a3d66c92898d5409744bfef1a3069..2b12fe814cd82ea16ef0399ec9cc2ab49deea440 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/decorator/UpdatedReplyDecorator.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/decorator/UpdatedReplyDecorator.kt
@@ -19,10 +19,12 @@ package org.matrix.android.sdk.internal.session.room.timeline.decorator
 import io.realm.Realm
 import org.matrix.android.sdk.api.session.events.model.Event
 import org.matrix.android.sdk.api.session.events.model.EventType
+import org.matrix.android.sdk.api.session.events.model.isThread
 import org.matrix.android.sdk.api.session.events.model.toContent
 import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
 import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent
 import org.matrix.android.sdk.api.session.room.timeline.getRelationContent
+import org.matrix.android.sdk.api.session.room.timeline.isReply
 import org.matrix.android.sdk.internal.database.mapper.TimelineEventMapper
 import org.matrix.android.sdk.internal.database.mapper.asDomain
 import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
@@ -37,8 +39,14 @@ internal class UpdatedReplyDecorator(
         private val timelineEventMapper: TimelineEventMapper,
 ) : TimelineEventDecorator {
 
-    //Changed to support media replies
-    override fun decorate(timelineEvent: TimelineEvent): TimelineEvent = timelineEvent
+    override fun decorate(timelineEvent: TimelineEvent): TimelineEvent {
+        return if (timelineEvent.isReply() && !timelineEvent.root.isThread()) {
+            val newRepliedEvent = createNewRepliedEvent(timelineEvent) ?: return timelineEvent
+            timelineEvent.copy(root = newRepliedEvent)
+        } else {
+            timelineEvent
+        }
+    }
 
     private fun createNewRepliedEvent(currentTimelineEvent: TimelineEvent): Event? {
         val relatesEventId = currentTimelineEvent.getRelationContent()?.inReplyTo?.eventId ?: return null