diff --git a/bigbluebutton-html5/imports/ui/components/panel-manager/component.jsx b/bigbluebutton-html5/imports/ui/components/panel-manager/component.jsx
index ec52e29e5dc9f4fe7f83e92b31948d4fa5fef50e..f33368bc7a0e219629caf65310326d7d4d35e38c 100644
--- a/bigbluebutton-html5/imports/ui/components/panel-manager/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/panel-manager/component.jsx
@@ -28,6 +28,14 @@ const propTypes = {
   openPanel: PropTypes.string.isRequired,
 };
 
+// Variables for resizing user-list.
+const USERLIST_MIN_WIDTH_PX = 150;
+const USERLIST_MAX_WIDTH_PX = 240;
+
+// Variables for resizing chat.
+const CHAT_MIN_WIDTH = 150;
+const CHAT_MAX_WIDTH = 350;
+
 class PanelManager extends Component {
   constructor() {
     super();
@@ -37,6 +45,11 @@ class PanelManager extends Component {
     this.breakoutroomKey = _.uniqueId('breakoutroom-');
     this.chatKey = _.uniqueId('chat-');
     this.pollKey = _.uniqueId('poll-');
+
+    this.state = {
+      chatWidth: 340,
+      userlistWidth: 180,
+    };
   }
 
   renderUserList() {
@@ -57,13 +70,7 @@ class PanelManager extends Component {
   }
 
   renderUserListResizable() {
-    // Variables for resizing user-list.
-    const USERLIST_MIN_WIDTH_PX = 150;
-    const USERLIST_MAX_WIDTH_PX = 240;
-    const USERLIST_DEFAULT_WIDTH_RELATIVE = 18;
-
-    // decide whether using pixel or percentage unit as a default width for userList
-    const USERLIST_DEFAULT_WIDTH = (window.innerWidth * (USERLIST_DEFAULT_WIDTH_RELATIVE / 100.0)) < USERLIST_MAX_WIDTH_PX ? `${USERLIST_DEFAULT_WIDTH_RELATIVE}%` : USERLIST_MAX_WIDTH_PX;
+    const { userlistWidth } = this.state;
 
     const resizableEnableOptions = {
       top: false,
@@ -78,13 +85,17 @@ class PanelManager extends Component {
 
     return (
       <Resizable
-        defaultSize={{ width: USERLIST_DEFAULT_WIDTH }}
         minWidth={USERLIST_MIN_WIDTH_PX}
         maxWidth={USERLIST_MAX_WIDTH_PX}
         ref={(node) => { this.resizableUserList = node; }}
-        className={styles.resizableUserList}
         enable={resizableEnableOptions}
         key={this.userlistKey}
+        size={{ width: userlistWidth }}
+        onResizeStop={(e, direction, ref, d) => {
+          this.setState({
+            userlistWidth: userlistWidth + d.width,
+          });
+        }}
       >
         {this.renderUserList()}
       </Resizable>
@@ -106,10 +117,7 @@ class PanelManager extends Component {
   }
 
   renderChatResizable() {
-    // Variables for resizing chat.
-    const CHAT_MIN_WIDTH = '10%';
-    const CHAT_MAX_WIDTH = '25%';
-    const CHAT_DEFAULT_WIDTH = '15%';
+    const { chatWidth } = this.state;
 
     const resizableEnableOptions = {
       top: false,
@@ -124,13 +132,17 @@ class PanelManager extends Component {
 
     return (
       <Resizable
-        defaultSize={{ width: CHAT_DEFAULT_WIDTH }}
         minWidth={CHAT_MIN_WIDTH}
         maxWidth={CHAT_MAX_WIDTH}
         ref={(node) => { this.resizableChat = node; }}
-        className={styles.resizableChat}
         enable={resizableEnableOptions}
         key={this.chatKey}
+        size={{ width: chatWidth }}
+        onResizeStop={(e, direction, ref, d) => {
+          this.setState({
+            chatWidth: chatWidth + d.width,
+          });
+        }}
       >
         {this.renderChat()}
       </Resizable>