diff --git a/web/pages/embed/chat/readonly/index.tsx b/web/pages/embed/chat/readonly/index.tsx
index 8a2ea39ee..282b9a851 100644
--- a/web/pages/embed/chat/readonly/index.tsx
+++ b/web/pages/embed/chat/readonly/index.tsx
@@ -1,4 +1,5 @@
 import { useRecoilValue } from 'recoil';
+import { ErrorBoundary } from 'react-error-boundary';
 import { ChatMessage } from '../../../../interfaces/chat-message.model';
 import { ChatContainer } from '../../../../components/chat/ChatContainer/ChatContainer';
 import {
@@ -8,6 +9,7 @@ import {
   isChatAvailableSelector,
 } from '../../../../components/stores/ClientConfigStore';
 import { Theme } from '../../../../components/theme/Theme';
+import { ComponentError } from '../../../../components/ui/ComponentError/ComponentError';
 
 export default function ReadOnlyChatEmbed() {
   const currentUser = useRecoilValue(currentUserAtom);
@@ -16,19 +18,26 @@ export default function ReadOnlyChatEmbed() {
 
   return (
     <div>
-      <ClientConfigStore />
-      <Theme />
-      {currentUser && (
-        <ChatContainer
-          messages={messages}
-          usernameToHighlight={currentUser.displayName}
-          chatUserId={currentUser.id}
-          isModerator={false}
-          showInput={false}
-          height="100vh"
-          chatAvailable={isChatAvailable}
-        />
-      )}
+      <ErrorBoundary
+        // eslint-disable-next-line react/no-unstable-nested-components
+        fallbackRender={({ error }) => (
+          <ComponentError componentName="ReadWriteChatEmbed" message={error.message} />
+        )}
+      >
+        <ClientConfigStore />
+        <Theme />
+        {currentUser && (
+          <ChatContainer
+            messages={messages}
+            usernameToHighlight={currentUser.displayName}
+            chatUserId={currentUser.id}
+            isModerator={false}
+            showInput={false}
+            height="100vh"
+            chatAvailable={isChatAvailable}
+          />
+        )}
+      </ErrorBoundary>
     </div>
   );
 }
diff --git a/web/pages/embed/chat/readwrite/index.tsx b/web/pages/embed/chat/readwrite/index.tsx
index 365e1edb6..6b7fbfc59 100644
--- a/web/pages/embed/chat/readwrite/index.tsx
+++ b/web/pages/embed/chat/readwrite/index.tsx
@@ -1,6 +1,7 @@
 /* eslint-disable react/no-unknown-property */
 import { useRecoilValue } from 'recoil';
 import { useEffect } from 'react';
+import { ErrorBoundary } from 'react-error-boundary';
 import { ChatMessage } from '../../../../interfaces/chat-message.model';
 import { ChatContainer } from '../../../../components/chat/ChatContainer/ChatContainer';
 import {
@@ -17,6 +18,7 @@ import { ClientConfig } from '../../../../interfaces/client-config.model';
 import { AppStateOptions } from '../../../../components/stores/application-state';
 import { ServerStatus } from '../../../../interfaces/server-status.model';
 import { Theme } from '../../../../components/theme/Theme';
+import { ComponentError } from '../../../../components/ui/ComponentError/ComponentError';
 
 export default function ReadWriteChatEmbed() {
   const currentUser = useRecoilValue(currentUserAtom);
@@ -47,22 +49,34 @@ export default function ReadWriteChatEmbed() {
           }
         `}
       </style>
-      <ClientConfigStore />
-      <Theme />
-      <Header name={headerText} chatAvailable chatDisabled={chatDisabled} online={videoAvailable} />
-      {currentUser && (
-        <div id="chat-container">
-          <ChatContainer
-            messages={messages}
-            usernameToHighlight={currentUser.displayName}
-            chatUserId={currentUser.id}
-            isModerator={currentUser.isModerator}
-            showInput
-            height="92vh"
-            chatAvailable={isChatAvailable}
-          />
-        </div>
-      )}
+      <ErrorBoundary
+        // eslint-disable-next-line react/no-unstable-nested-components
+        fallbackRender={({ error }) => (
+          <ComponentError componentName="ReadWriteChatEmbed" message={error.message} />
+        )}
+      >
+        <ClientConfigStore />
+        <Theme />
+        <Header
+          name={headerText}
+          chatAvailable
+          chatDisabled={chatDisabled}
+          online={videoAvailable}
+        />
+        {currentUser && (
+          <div id="chat-container">
+            <ChatContainer
+              messages={messages}
+              usernameToHighlight={currentUser.displayName}
+              chatUserId={currentUser.id}
+              isModerator={currentUser.isModerator}
+              showInput
+              height="92vh"
+              chatAvailable={isChatAvailable}
+            />
+          </div>
+        )}
+      </ErrorBoundary>
     </div>
   );
 }