diff --git a/lib/shared/thread-utils.js b/lib/shared/thread-utils.js
--- a/lib/shared/thread-utils.js
+++ b/lib/shared/thread-utils.js
@@ -209,6 +209,15 @@
     .map(memberInfo => memberInfo.id);
 }
 
+function threadOtherMembers<T: MemberInfo | RelativeMemberInfo>(
+  memberInfos: $ReadOnlyArray<T>,
+  viewerID: ?string,
+): $ReadOnlyArray<T> {
+  return memberInfos.filter(
+    memberInfo => memberInfo.role && memberInfo.id !== viewerID,
+  );
+}
+
 function threadMembersWithoutAddedAshoat<T: ThreadInfo | RawThreadInfo>(
   threadInfo: T,
 ): $PropertyType<T, 'members'> {
@@ -239,20 +248,6 @@
   return !!threadID?.startsWith('pending');
 }
 
-function getThreadOtherUsers(
-  threadInfo: ThreadInfo | RawThreadInfo,
-  viewerID: ?string,
-): string[] {
-  const otherUserIDs = [];
-  for (const member of threadInfo.members) {
-    if (!member.role || member.id === viewerID) {
-      continue;
-    }
-    otherUserIDs.push(member.id);
-  }
-  return otherUserIDs;
-}
-
 function getSingleOtherUser(
   threadInfo: ThreadInfo | RawThreadInfo,
   viewerID: ?string,
@@ -260,11 +255,11 @@
   if (!viewerID) {
     return undefined;
   }
-  const otherMemberIDs = getThreadOtherUsers(threadInfo, viewerID);
-  if (otherMemberIDs.length !== 1) {
+  const otherMembers = threadOtherMembers(threadInfo.members, viewerID);
+  if (otherMembers.length !== 1) {
     return undefined;
   }
-  return otherMemberIDs[0];
+  return otherMembers[0].id;
 }
 
 function getPendingThreadID(
@@ -524,7 +519,9 @@
     return threadInfo.id;
   }
 
-  const otherMemberIDs = getThreadOtherUsers(threadInfo, viewerID);
+  const otherMemberIDs = threadOtherMembers(threadInfo.members, viewerID).map(
+    member => member.id,
+  );
   let resultPromise;
   if (threadInfo.type !== threadTypes.SIDEBAR) {
     invariant(
@@ -700,8 +697,8 @@
   viewerID: ?string,
   userInfos: UserInfos,
 ): string {
-  const threadUsernames = getThreadOtherUsers(threadInfo, viewerID)
-    .map(memberID => userInfos[memberID] && userInfos[memberID].username)
+  const threadUsernames = threadOtherMembers(threadInfo.members, viewerID)
+    .map(member => userInfos[member.id] && userInfos[member.id].username)
     .filter(Boolean);
   if (threadUsernames.length === 0) {
     return 'just you';
@@ -1414,6 +1411,7 @@
   threadInFilterList,
   userIsMember,
   threadActualMembers,
+  threadOtherMembers,
   threadIsGroupChat,
   threadIsPending,
   getSingleOtherUser,