diff --git a/web/calendar/filter-panel.react.js b/web/calendar/filter-panel.react.js
--- a/web/calendar/filter-panel.react.js
+++ b/web/calendar/filter-panel.react.js
@@ -326,9 +326,7 @@
     }
     const icon = this.props.collapsed ? faChevronUp : faChevronDown;
     const details =
-      this.props.numThreads === 1
-        ? '1 thread'
-        : `${this.props.numThreads} threads`;
+      this.props.numThreads === 1 ? '1 chat' : `${this.props.numThreads} chats`;
     return (
       <div className={css.category}>
         <div className={css.optionThread}>
@@ -339,7 +337,7 @@
           />
           <label>
             <div className={css.optionCheckbox} style={beforeCheckStyles} />
-            Your threads
+            Your chats
             {afterCheck}
           </label>
           <a onClick={this.onCollapse} className={css.collapse}>
diff --git a/web/chat/chat-input-bar.react.js b/web/chat/chat-input-bar.react.js
--- a/web/chat/chat-input-bar.react.js
+++ b/web/chat/chat-input-bar.react.js
@@ -179,7 +179,7 @@
         buttonContent = (
           <>
             <SWMansionIcon icon="plus" size={24} />
-            <p className={css.joinButtonText}>Join Thread</p>
+            <p className={css.joinButtonText}>Join Chat</p>
           </>
         );
       }
diff --git a/web/chat/chat-thread-list.react.js b/web/chat/chat-thread-list.react.js
--- a/web/chat/chat-thread-list.react.js
+++ b/web/chat/chat-thread-list.react.js
@@ -40,7 +40,7 @@
       <Search
         onChangeText={setSearchText}
         searchText={searchText}
-        placeholder="Search threads"
+        placeholder="Search chats"
       />
       <div>{threadComponents}</div>
     </div>
diff --git a/web/chat/thread-menu.react.js b/web/chat/thread-menu.react.js
--- a/web/chat/thread-menu.react.js
+++ b/web/chat/thread-menu.react.js
@@ -190,7 +190,7 @@
     return (
       <MenuItem
         key="leave"
-        text="Leave Thread"
+        text="Leave Chat"
         icon="logout"
         dangerous
         onClick={onClickLeaveThread}
@@ -214,7 +214,7 @@
     return (
       <MenuItem
         key="promote"
-        text="Promote Thread"
+        text="Promote to channel"
         icon="message-square-lines"
         onClick={onClickPromoteSidebarToThread}
       />
diff --git a/web/modals/chat/sidebar-promote-modal.react.js b/web/modals/chat/sidebar-promote-modal.react.js
--- a/web/modals/chat/sidebar-promote-modal.react.js
+++ b/web/modals/chat/sidebar-promote-modal.react.js
@@ -26,19 +26,19 @@
   return (
     <Modal
       size="large"
-      name="Promote Thread"
+      name="Promote to channel"
       icon="warning-circle"
       onClose={onClose}
     >
       <div className={css.modal_body}>
         <p>{`Are you sure you want to promote "${uiName}"?`}</p>
-        <p>Promoting a sidebar to a full thread cannot be undone.</p>
+        <p>Promoting a sidebar to a channel cannot be undone.</p>
         <div className={css.buttonContainer}>
           <Button onClick={onClose} type="submit" variant="secondary">
             Cancel
           </Button>
           <Button onClick={handleConfirm} type="submit" variant="danger">
-            Promote to Full Thread
+            Promote to channel
           </Button>
         </div>
       </div>
diff --git a/web/modals/threads/cant-leave-thread-modal.react.js b/web/modals/threads/cant-leave-thread-modal.react.js
--- a/web/modals/threads/cant-leave-thread-modal.react.js
+++ b/web/modals/threads/cant-leave-thread-modal.react.js
@@ -11,11 +11,11 @@
 };
 function CantLeaveThreadModal(props: Props): React.Node {
   return (
-    <Modal name="Cannot leave thread" onClose={props.onClose}>
+    <Modal name="Cannot leave chat" onClose={props.onClose}>
       <div className={css.modal_body}>
         <p>
-          You are the only admin left of this thread. Please promote somebody
-          else to admin before leaving.
+          You are the only admin left of this chat. Please promote somebody else
+          to admin before leaving.
         </p>
         <Button
           onClick={props.onClose}
diff --git a/web/modals/threads/confirm-leave-thread-modal.react.js b/web/modals/threads/confirm-leave-thread-modal.react.js
--- a/web/modals/threads/confirm-leave-thread-modal.react.js
+++ b/web/modals/threads/confirm-leave-thread-modal.react.js
@@ -36,7 +36,7 @@
             Cancel
           </Button>
           <Button variant="danger" onClick={onConfirm} type="submit">
-            Yes, leave Thread
+            Yes, leave chat
           </Button>
         </div>
       </div>
diff --git a/web/modals/threads/members/members-list.react.js b/web/modals/threads/members/members-list.react.js
--- a/web/modals/threads/members/members-list.react.js
+++ b/web/modals/threads/members/members-list.react.js
@@ -63,7 +63,7 @@
   if (!hasMembers) {
     content = (
       <div className={css.noUsers}>
-        No matching users were found in the thread!
+        No matching users were found in the chat!
       </div>
     );
   }
diff --git a/web/modals/threads/new-thread-modal.react.js b/web/modals/threads/new-thread-modal.react.js
--- a/web/modals/threads/new-thread-modal.react.js
+++ b/web/modals/threads/new-thread-modal.react.js
@@ -84,7 +84,7 @@
       threadTypeSection = (
         <div className={css['new-thread-privacy-container']}>
           <div className={css['modal-radio-selector']}>
-            <div className={css['form-title']}>Thread type</div>
+            <div className={css['form-title']}>Chat type</div>
             <div className={css['form-enum-selector']}>
               <div className={css['form-enum-container']}>
                 <input
@@ -131,16 +131,16 @@
       );
     }
     return (
-      <Modal name="New thread" onClose={this.props.onClose} size="large">
+      <Modal name="New chat" onClose={this.props.onClose} size="large">
         <div className={css['modal-body']}>
           <form method="POST">
             <div>
-              <div className={css['form-title']}>Thread name</div>
+              <div className={css['form-title']}>Chat name</div>
               <div className={css['form-content']}>
                 <input
                   type="text"
                   value={firstLine(this.state.name)}
-                  placeholder="Thread name"
+                  placeholder="Chat name"
                   onChange={this.onChangeName}
                   disabled={this.props.inputDisabled}
                   ref={this.nameInputRef}
@@ -152,7 +152,7 @@
               <div className={css['form-content']}>
                 <textarea
                   value={this.state.description}
-                  placeholder="Thread description"
+                  placeholder="Chat description"
                   onChange={this.onChangeDescription}
                   disabled={this.props.inputDisabled}
                 />
@@ -233,7 +233,7 @@
     if (threadType === undefined) {
       this.setState(
         {
-          errorMessage: 'thread type unspecified',
+          errorMessage: 'chat type unspecified',
         },
         () => {
           invariant(this.openPrivacyInput, 'openPrivacyInput ref unset');
@@ -257,7 +257,7 @@
           threadType === 4 ||
           threadType === 6 ||
           threadType === 7,
-        "Sidebars and communities can't be created from the thread composer",
+        "Sidebars and communities can't be created from the chat composer",
       );
       const query = this.props.calendarQuery();
       const response = await this.props.newThread({
@@ -296,10 +296,7 @@
     const parentThreadInfo: ?ThreadInfo = useSelector(state =>
       parentThreadID ? threadInfoSelector(state)[parentThreadID] : null,
     );
-    invariant(
-      !parentThreadID || parentThreadInfo,
-      'parent thread should exist',
-    );
+    invariant(!parentThreadID || parentThreadInfo, 'parent chat should exist');
     const inputDisabled = useSelector(loadingStatusSelector) === 'loading';
     const calendarQuery = useSelector(nonThreadCalendarQuery);
     const callNewThread = useServerCall(newThread);
diff --git a/web/modals/threads/settings/thread-settings-delete-tab.react.js b/web/modals/threads/settings/thread-settings-delete-tab.react.js
--- a/web/modals/threads/settings/thread-settings-delete-tab.react.js
+++ b/web/modals/threads/settings/thread-settings-delete-tab.react.js
@@ -87,7 +87,7 @@
       <div>
         <SWMansionIcon icon="warning-circle" size={22} />
         <p className={css.deletion_warning}>
-          Your thread will be permanently deleted. There is no way to reverse
+          Your chat will be permanently deleted. There is no way to reverse
           this.
         </p>
       </div>
diff --git a/web/modals/threads/settings/thread-settings-general-tab.react.js b/web/modals/threads/settings/thread-settings-general-tab.react.js
--- a/web/modals/threads/settings/thread-settings-general-tab.react.js
+++ b/web/modals/threads/settings/thread-settings-general-tab.react.js
@@ -147,7 +147,7 @@
   return (
     <form method="POST">
       <div>
-        <div className={css.form_title}>Thread name</div>
+        <div className={css.form_title}>Chat name</div>
         <div className={css.form_content}>
           <Input
             type="text"
@@ -166,7 +166,7 @@
         <div className={css.form_content}>
           <textarea
             value={queuedChanges.description ?? threadInfo.description ?? ''}
-            placeholder="Thread description"
+            placeholder="Chat description"
             onChange={onChangeDescription}
             disabled={threadSettingsOperationInProgress}
             rows={3}
diff --git a/web/modals/threads/settings/thread-settings-modal.react.js b/web/modals/threads/settings/thread-settings-modal.react.js
--- a/web/modals/threads/settings/thread-settings-modal.react.js
+++ b/web/modals/threads/settings/thread-settings-modal.react.js
@@ -102,9 +102,9 @@
 
     if (!threadInfo) {
       return (
-        <Modal onClose={modalContext.popModal} name="Invalid thread">
+        <Modal onClose={modalContext.popModal} name="Invalid chat">
           <div className={css.modal_body}>
-            <p>You no longer have permission to view this thread</p>
+            <p>You no longer have permission to view this chat</p>
           </div>
         </Modal>
       );
@@ -170,7 +170,7 @@
 
     return (
       <Modal
-        name="Thread settings"
+        name="Chat settings"
         onClose={modalContext.popModal}
         icon="settings"
       >
diff --git a/web/modals/threads/settings/thread-settings-privacy-tab.react.js b/web/modals/threads/settings/thread-settings-privacy-tab.react.js
--- a/web/modals/threads/settings/thread-settings-privacy-tab.react.js
+++ b/web/modals/threads/settings/thread-settings-privacy-tab.react.js
@@ -139,7 +139,7 @@
 
   return (
     <form method="POST">
-      <div className={css.form_title}>Thread type</div>
+      <div className={css.form_title}>Chat type</div>
       <div className={css.enum_container}>
         <EnumSettingsOption
           selected={
diff --git a/web/modals/threads/subchannels/subchannels-modal.react.js b/web/modals/threads/subchannels/subchannels-modal.react.js
--- a/web/modals/threads/subchannels/subchannels-modal.react.js
+++ b/web/modals/threads/subchannels/subchannels-modal.react.js
@@ -113,7 +113,7 @@
     if (!filteredSubchannelsChatList.length) {
       return (
         <div className={css.noSubchannels}>
-          No matching subchannels were found in the thread!
+          No matching subchannels were found in the channel!
         </div>
       );
     }