diff --git a/lib/selectors/chat-selectors.js b/lib/selectors/chat-selectors.js
--- a/lib/selectors/chat-selectors.js
+++ b/lib/selectors/chat-selectors.js
@@ -610,6 +610,31 @@
   userInfoInputArray,
   threadInfo,
 }: UseMessageListDataArgs): MessageListData {
+  const messageInfos = useSelector(messageInfoSelector);
+
+  const containingThread = useSelector(state => {
+    if (!threadInfo || threadInfo.type !== threadTypes.SIDEBAR) {
+      return null;
+    }
+    return state.messageStore.threads[threadInfo.containingThreadID];
+  });
+
+  const pendingSidebarEditMessageInfo = React.useMemo(() => {
+    const sourceMessageID = threadInfo?.sourceMessageID;
+    const threadMessageInfos = (containingThread?.messageIDs ?? [])
+      .map((messageID: string) => messageInfos[messageID])
+      .filter(Boolean)
+      .filter(
+        message =>
+          message.type === messageTypes.EDIT_MESSAGE &&
+          message.targetMessageID === sourceMessageID,
+      );
+    if (threadMessageInfos.length === 0) {
+      return null;
+    }
+    return threadMessageInfos[0];
+  }, [threadInfo, containingThread, messageInfos]);
+
   const pendingSidebarSourceMessageInfo = useSelector(state => {
     const sourceMessageID = threadInfo?.sourceMessageID;
     if (
@@ -620,7 +645,6 @@
       return null;
     }
     const thread = state.messageStore.threads[threadInfo.id];
-    const messageInfos = messageInfoSelector(state);
     const shouldSourceBeAdded =
       !thread ||
       (thread.startReached &&
@@ -636,11 +660,16 @@
     'sidebars can not be created from sidebar_source message',
   );
 
-  const additionalMessages = React.useMemo(
-    () =>
-      pendingSidebarSourceMessageInfo ? [pendingSidebarSourceMessageInfo] : [],
-    [pendingSidebarSourceMessageInfo],
-  );
+  const additionalMessages = React.useMemo(() => {
+    if (!pendingSidebarSourceMessageInfo) {
+      return [];
+    }
+    const result = [pendingSidebarSourceMessageInfo];
+    if (pendingSidebarEditMessageInfo) {
+      result.push(pendingSidebarEditMessageInfo);
+    }
+    return result;
+  }, [pendingSidebarSourceMessageInfo, pendingSidebarEditMessageInfo]);
   const boundMessageListData = useSelector(
     messageListData(threadInfo?.id, additionalMessages),
   );
diff --git a/lib/shared/edit-messages-utils.js b/lib/shared/edit-messages-utils.js
--- a/lib/shared/edit-messages-utils.js
+++ b/lib/shared/edit-messages-utils.js
@@ -3,7 +3,7 @@
 import invariant from 'invariant';
 import * as React from 'react';
 
-import { threadHasPermission } from './thread-utils.js';
+import { threadIsPending, threadHasPermission } from './thread-utils.js';
 import {
   sendEditMessageActionTypes,
   sendEditMessage,
@@ -76,4 +76,15 @@
   return hasPermission;
 }
 
-export { useCanEditMessage, useEditMessage };
+function getMessageLabel(
+  hasBeenEdited: ?boolean,
+  threadInfo: ThreadInfo,
+): ?string {
+  const isPending = threadIsPending(threadInfo.id);
+  if (hasBeenEdited && !isPending) {
+    return 'Edited';
+  }
+  return null;
+}
+
+export { useCanEditMessage, useEditMessage, getMessageLabel };
diff --git a/native/chat/composed-message.react.js b/native/chat/composed-message.react.js
--- a/native/chat/composed-message.react.js
+++ b/native/chat/composed-message.react.js
@@ -6,6 +6,7 @@
 import { StyleSheet, View } from 'react-native';
 import Animated from 'react-native-reanimated';
 
+import { getMessageLabel } from 'lib/shared/edit-messages-utils.js';
 import { createMessageReply } from 'lib/shared/message-utils.js';
 import { assertComposableMessageType } from 'lib/types/message-types.js';
 
@@ -163,13 +164,13 @@
     );
 
     let inlineEngagement = null;
+    const label = getMessageLabel(hasBeenEdited, item.threadInfo);
     if (
       item.threadCreatedFromMessage ||
       Object.keys(item.reactions).length > 0 ||
-      hasBeenEdited
+      label
     ) {
       const positioning = isViewer ? 'right' : 'left';
-      const label = hasBeenEdited ? 'Edited' : null;
       inlineEngagement = (
         <InlineEngagement
           threadInfo={item.threadCreatedFromMessage}
diff --git a/native/chat/utils.js b/native/chat/utils.js
--- a/native/chat/utils.js
+++ b/native/chat/utils.js
@@ -6,6 +6,7 @@
 
 import { useLoggedInUserInfo } from 'lib/hooks/account-hooks.js';
 import { colorIsDark } from 'lib/shared/color-utils.js';
+import { getMessageLabel } from 'lib/shared/edit-messages-utils.js';
 import { messageKey } from 'lib/shared/message-utils.js';
 import { viewerIsMember } from 'lib/shared/thread-utils.js';
 import type { ThreadInfo } from 'lib/types/thread-types.js';
@@ -59,7 +60,8 @@
 function textMessageItemHeight(
   item: ChatTextMessageInfoItemWithHeight,
 ): number {
-  const { messageInfo, contentHeight, startsCluster, endsCluster } = item;
+  const { messageInfo, contentHeight, startsCluster, endsCluster, threadInfo } =
+    item;
   const { isViewer } = messageInfo.creator;
   let height = 5 + contentHeight; // 5 from marginBottom in ComposedMessage
   if (!isViewer && startsCluster) {
@@ -71,12 +73,13 @@
   if (textMessageSendFailed(item)) {
     height += failedSendHeight;
   }
+  const label = getMessageLabel(item.hasBeenEdited, threadInfo);
   if (item.threadCreatedFromMessage || Object.keys(item.reactions).length > 0) {
     height +=
       inlineEngagementStyle.height +
       inlineEngagementStyle.marginTop +
       inlineEngagementStyle.marginBottom;
-  } else if (item.hasBeenEdited) {
+  } else if (label) {
     height += editedLabelHeight;
   }
   return height;
diff --git a/web/chat/composed-message.react.js b/web/chat/composed-message.react.js
--- a/web/chat/composed-message.react.js
+++ b/web/chat/composed-message.react.js
@@ -10,6 +10,7 @@
 
 import { useStringForUser } from 'lib/hooks/ens-cache.js';
 import { type ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js';
+import { getMessageLabel } from 'lib/shared/edit-messages-utils.js';
 import { assertComposableMessageType } from 'lib/types/message-types.js';
 import { type ThreadInfo } from 'lib/types/thread-types.js';
 
@@ -131,13 +132,13 @@
     }
 
     let inlineEngagement = null;
+    const label = getMessageLabel(hasBeenEdited, threadInfo);
     if (
       (this.props.containsInlineEngagement && item.threadCreatedFromMessage) ||
       Object.keys(item.reactions).length > 0 ||
-      hasBeenEdited
+      label
     ) {
       const positioning = isViewer ? 'right' : 'left';
-      const label = hasBeenEdited ? 'Edited' : null;
       inlineEngagement = (
         <div className={css.sidebarMarginBottom}>
           <InlineEngagement