diff --git a/web/pgadmin/misc/dependencies/static/js/DependenciesComponent.jsx b/web/pgadmin/misc/dependencies/static/js/DependenciesComponent.jsx
new file mode 100644
index 000000000..db5230db2
--- /dev/null
+++ b/web/pgadmin/misc/dependencies/static/js/DependenciesComponent.jsx
@@ -0,0 +1,81 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import _ from 'lodash';
+import React, { useEffect } from 'react';
+import PgTable from 'sources/components/PgTable';
+import gettext from 'sources/gettext';
+import PropTypes from 'prop-types';
+
+export default function DependenciesComponent(res) {
+  const [tablebData, setTableData] = React.useState([]);
+  var columns = [
+    {
+      Header: 'Type',
+      accessor: 'type',
+      sortble: true,
+      resizable: false,
+      disableGlobalFilter: true,
+    },
+    {
+      Header: 'Name',
+      accessor: 'name',
+      sortble: true,
+      resizable: false,
+      disableGlobalFilter: true,
+    },
+    {
+      Header: 'Restriction',
+      accessor: 'field',
+      sortble: true,
+      resizable: true,
+      disableGlobalFilter: false,
+      minWidth: 280,
+    },
+  ];
+
+  useEffect(() => {
+    var data = res.res;
+    if (!_.isUndefined(data)) {
+      data.forEach((element) => {
+        if (element.icon && _.isUndefined(element.icon.type)) {
+          element['icon'] = {
+            type: element.icon,
+          };
+        }
+      });
+      setTableData(data);
+    }
+  });
+
+  return (
+    <>
+      {!_.isUndefined(res.res) ? (
+        <PgTable
+          height={window.innerHeight - 450}
+          columns={columns}
+          data={tablebData}
+        ></PgTable>
+      ) : (
+        <>
+          <div className="negative-space">
+            <div className="pg-panel-message">
+              {' '}
+              {gettext(res.msg)}
+            </div>
+          </div>
+        </>
+      )}
+    </>
+  );
+}
+
+DependenciesComponent.propTypes = {
+  res: PropTypes.array,
+};
diff --git a/web/pgadmin/misc/dependencies/static/js/dependencies.js b/web/pgadmin/misc/dependencies/static/js/dependencies.js
index 86ae5364d..47a37deb1 100644
--- a/web/pgadmin/misc/dependencies/static/js/dependencies.js
+++ b/web/pgadmin/misc/dependencies/static/js/dependencies.js
@@ -8,6 +8,10 @@
 //////////////////////////////////////////////////////////////
 
 import Notify from '../../../../static/js/helpers/Notifier';
+import ReactDOM from 'react-dom';
+import DependenciesComponent from './DependenciesComponent';
+import Theme from 'sources/Theme';
+import React from 'react';
 
 define('misc.dependencies', [
   'sources/gettext', 'underscore', 'jquery', 'backbone',
@@ -168,8 +172,6 @@ define('misc.dependencies', [
         msg = gettext('Please select an object in the tree view.'),
         panel = this.dependenciesPanel,
         $container = panel.layout().scene().find('.pg-panel-content'),
-        $msgContainer = $container.find('.pg-panel-depends-message'),
-        $gridContainer = $container.find('.pg-panel-dependencies-container'),
         treeHierarchy = pgBrowser.tree.getTreeNodeHierarchy(item);
 
       if (node) {
@@ -199,101 +201,93 @@ define('misc.dependencies', [
           this.dependenciesGrid.columns.models[2].set({
             'label': gettext('Restriction'),
           });
-
-          // Hide message container and show grid container.
-          $msgContainer.addClass('d-none');
-          $gridContainer.removeClass('d-none');
-
           var timer = '';
           var ajaxHook = function() {
             $.ajax({
               url: url,
               type: 'GET',
-              beforeSend: function(xhr) {
-                xhr.setRequestHeader(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
-                // Generate a timer for the request
-                timer = setTimeout(function() {
-                  // notify user if request is taking longer than 1 second
-
-                  $msgContainer.text(gettext('Fetching dependency information from the server...'));
-                  $msgContainer.removeClass('d-none');
-                  msg = '';
-
-                }, 1000);
-              },
             })
-              .done(function(res) {
+              .done(function (res) {
                 clearTimeout(timer);
-
                 if (res.length > 0) {
+                  res.forEach((Element) => {
+                    var node = pgBrowser.Nodes[Element.type];
+                    if (Element.icon == null || Element.icon == '') {
+                      Element.icon = node
+                        ? _.isFunction(node['node_image'])
+                          ? node['node_image'].apply(node, [null, null])
+                          : node['node_image'] || 'icon-' + Element.type
+                        : 'icon-' + Element.type;
+                    }
+                  });
 
-                  if (!$msgContainer.hasClass('d-none')) {
-                    $msgContainer.addClass('d-none');
-                  }
-                  $gridContainer.removeClass('d-none');
-
-                  self.dependenciesData = res;
-
-                  // Load only 100 rows
-                  self.dependenciesCollection.reset(self.dependenciesData.splice(0, 100), {parse: true});
-
-                  // Load more rows on scroll down
-                  pgBrowser.Events.on(
-                    'pgadmin-browser:panel-dependencies:' +
-                  wcDocker.EVENT.SCROLLED,
-                    self.__loadMoreRows
+                  ReactDOM.render(
+                    <Theme>
+                      <DependenciesComponent res={res} />
+                    </Theme>,
+                    $container[0]
                   );
                 } else {
-                  // Do not listen the scroll event
-                  pgBrowser.Events.off(
-                    'pgadmin-browser:panel-dependencies:' +
-                  wcDocker.EVENT.SCROLLED
+                  ReactDOM.render(
+                    <Theme>
+                      <DependenciesComponent msg={msg} />
+                    </Theme>,
+                    $container[0]
                   );
-
-                  self.dependenciesCollection.reset({silent: true});
-                  $msgContainer.text(msg);
-                  $msgContainer.removeClass('d-none');
-
-                  if (!$gridContainer.hasClass('d-none')) {
-                    $gridContainer.addClass('d-none');
-                  }
                 }
-
-
               })
-              .fail(function(xhr, error, message) {
+              .fail(function (xhr, error, message) {
                 var _label = treeHierarchy[node_type].label;
                 pgBrowser.Events.trigger(
-                  'pgadmin:node:retrieval:error', 'depends', xhr, error, message
+                  'pgadmin:node:retrieval:error',
+                  'depends',
+                  xhr,
+                  error,
+                  message
                 );
-                if (!Alertify.pgHandleItemError(xhr, error, message, {
-                  item: item,
-                  info: treeHierarchy,
-                })) {
+                if (
+                  !Alertify.pgHandleItemError(xhr, error, message, {
+                    item: item,
+                    info: treeHierarchy,
+                  })
+                ) {
                   Notify.pgNotifier(
-                    error, xhr,
-                    gettext('Error retrieving data from the server: %s', message || _label),
-                    function(alertMsg) {
-                      if(alertMsg === 'CRYPTKEY_SET') {
-                        ajaxHook();
+                    error,
+                    xhr,
+                    gettext(
+                      'Error retrieving data from the server: %s',
+                      message || _label
+                    ),
+                    function (alertMsg) {
+                      if (alertMsg === 'CRYPTKEY_SET') {
+                        ajaxHook($container);
                       } else {
                         console.warn(arguments);
                       }
-                    });
+                    }
+                  );
                 }
                 // show failed message.
-                $msgContainer.text(gettext('Failed to retrieve data from the server.'));
+                ReactDOM.render(
+                  <Theme>
+                    <DependenciesComponent
+                      msg={gettext('Failed to retrieve data from the server.')}
+                    />
+                  </Theme>,
+                  $container[0]
+                );
               });
           };
-          ajaxHook();
+          ajaxHook($container);
         }
       }
       if (msg != '') {
-        $msgContainer.text(msg);
-        $msgContainer.removeClass('d-none');
-        if (!$gridContainer.hasClass('d-none')) {
-          $gridContainer.addClass('d-none');
-        }
+        ReactDOM.render(
+          <Theme>
+            <DependenciesComponent  msg={msg}/>
+          </Theme>,
+          $container[0]
+        );
       }
     },
     showReactDependencies: function(item, data, node) {
diff --git a/web/pgadmin/misc/dependents/static/js/DependentComponent.jsx b/web/pgadmin/misc/dependents/static/js/DependentComponent.jsx
new file mode 100644
index 000000000..2362c3249
--- /dev/null
+++ b/web/pgadmin/misc/dependents/static/js/DependentComponent.jsx
@@ -0,0 +1,86 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import _ from 'lodash';
+import React, { useEffect } from 'react';
+import PgTable from 'sources/components/PgTable';
+import gettext from 'sources/gettext';
+import PropTypes from 'prop-types';
+
+export default function DependentComponent(res) {
+  const [tablebData, setTableData] = React.useState([]);
+  var columns = [
+    {
+      Header: 'Type',
+      accessor: 'type',
+      sortble: true,
+      resizable: false,
+      disableGlobalFilter: true,
+    },
+    {
+      Header: 'Name',
+      accessor: 'name',
+      sortble: true,
+      resizable: false,
+      disableGlobalFilter: true,
+    },
+    {
+      Header: 'Restriction',
+      accessor: 'field',
+      sortble: true,
+      resizable: true,
+      disableGlobalFilter: false,
+      minWidth: 280,
+    },
+  ];
+
+  // setTableData(res);
+  useEffect(() => {
+    var data = res.res;
+    if (!_.isUndefined(data)) {
+      data.forEach(
+        (element) => {
+          if (element.icon && _.isUndefined(element.icon.type)) {
+            element['icon'] = {
+              type: element.icon,
+            };
+          }
+        },
+      );
+      setTableData(data);
+    }
+  });
+
+  
+
+  return (
+    <>
+      {!_.isUndefined(res.res) ? (
+        <PgTable
+          height={window.innerHeight - 450}
+          columns={columns}
+          data={tablebData}
+        ></PgTable>
+      ) : (
+        <>
+          <div className="negative-space">
+            <div className="pg-panel-message">
+              {' '}
+              {gettext(res.msg)}
+            </div>
+          </div>
+        </>
+      )}
+    </>
+  );
+}
+
+DependentComponent.propTypes = {
+  res: PropTypes.array,
+};
diff --git a/web/pgadmin/misc/dependents/static/js/dependents.js b/web/pgadmin/misc/dependents/static/js/dependents.js
index ce7932a88..7ac469ffb 100644
--- a/web/pgadmin/misc/dependents/static/js/dependents.js
+++ b/web/pgadmin/misc/dependents/static/js/dependents.js
@@ -8,6 +8,10 @@
 //////////////////////////////////////////////////////////////
 
 import Notify from '../../../../static/js/helpers/Notifier';
+import ReactDOM from 'react-dom';
+import DependentComponent from './DependentComponent';
+import Theme from 'sources/Theme';
+import React from 'react';
 
 define('misc.dependents', [
   'sources/gettext', 'underscore', 'jquery', 'backbone',
@@ -18,8 +22,6 @@ define('misc.dependents', [
   if (pgBrowser.NodeDependents)
     return pgBrowser.NodeDependents;
 
-  var wcDocker = window.wcDocker;
-
   pgBrowser.NodeDependents = pgBrowser.NodeDependents || {};
 
   _.extend(pgBrowser.NodeDependents, {
@@ -164,12 +166,9 @@ define('misc.dependents', [
 
     // Fetch the actual data and update the collection
     __updateCollection: function(url, node, item, node_type) {
-      let self = this,
-        msg = gettext('Please select an object in the tree view.'),
+      let msg = gettext('Please select an object in the tree view.'),
         panel = this.dependentsPanel,
         $container = panel.layout().scene().find('.pg-panel-content'),
-        $msgContainer = $container.find('.pg-panel-depends-message'),
-        $gridContainer = $container.find('.pg-panel-dependents-container'),
         treeHierarchy = pgBrowser.tree.getTreeNodeHierarchy(item);
 
       if (node) {
@@ -204,68 +203,37 @@ define('misc.dependents', [
               'label': gettext('Restriction'),
             });
           }
-
-          // Hide message container and show grid container.
-          $msgContainer.addClass('d-none');
-          $gridContainer.removeClass('d-none');
-
-          var timer = '';
           var ajaxHook = function() {
             $.ajax({
               url: url,
               type: 'GET',
-              beforeSend: function(xhr) {
-                xhr.setRequestHeader(pgAdmin.csrf_token_header, pgAdmin.csrf_token);
-                // Generate a timer for the request
-                timer = setTimeout(function() {
-                  // notify user if request is taking longer than 1 second
-
-                  $msgContainer.text(gettext('Fetching dependent information from the server...'));
-                  $msgContainer.removeClass('d-none');
-                  msg = '';
-
-                }, 1000);
-              },
             })
               .done(function(res) {
-                clearTimeout(timer);
-
                 if (res.length > 0) {
-
-                  if (!$msgContainer.hasClass('d-none')) {
-                    $msgContainer.addClass('d-none');
-                  }
-                  $gridContainer.removeClass('d-none');
-
-                  self.dependentData = res;
-
-                  // Load only 100 rows
-                  self.dependentCollection.reset(self.dependentData.splice(0, 100), {parse: true});
-
-                  // Load more rows on scroll down
-                  pgBrowser.Events.on(
-                    'pgadmin-browser:panel-dependents:' +
-                  wcDocker.EVENT.SCROLLED,
-                    self.__loadMoreRows
+                  res.forEach((Element)=>{
+                    var node = pgBrowser.Nodes[Element.type];
+                    if(Element.icon == null || Element.icon == '') {
+                      Element.icon = node ? (_.isFunction(node['node_image']) ?
+                        (node['node_image']).apply(node, [null, null]) :
+                        (node['node_image'] || ('icon-' + Element.type))) :
+                        ('icon-' + Element.type);
+                    }
+                  });
+                  ReactDOM.render(
+                    <Theme>
+                      <DependentComponent  res={res}/>
+                    </Theme>,
+                    $container[0]
                   );
-
-                } else {
-                  // Do not listen the scroll event
-                  pgBrowser.Events.off(
-                    'pgadmin-browser:panel-dependents:' +
-                  wcDocker.EVENT.SCROLLED
+                }
+                else{
+                  ReactDOM.render(
+                    <Theme>
+                      <DependentComponent  msg={msg}/>
+                    </Theme>,
+                    $container[0]
                   );
-
-                  self.dependentCollection.reset({silent: true});
-                  $msgContainer.text(msg);
-                  $msgContainer.removeClass('d-none');
-
-                  if (!$gridContainer.hasClass('d-none')) {
-                    $gridContainer.addClass('d-none');
-                  }
                 }
-
-
               })
               .fail(function(xhr, error, message) {
                 var _label = treeHierarchy[node_type].label;
@@ -288,18 +256,24 @@ define('misc.dependents', [
                     });
                 }
                 // show failed message.
-                $msgContainer.text(gettext('Failed to retrieve data from the server.'));
+                ReactDOM.render(
+                  <Theme>
+                    <DependentComponent  msg={gettext('Failed to retrieve data from the server.')}/>
+                  </Theme>,
+                  $container[0]
+                );
               });
           };
           ajaxHook();
         }
       }
       if (msg != '') {
-        $msgContainer.text(msg);
-        $msgContainer.removeClass('d-none');
-        if (!$gridContainer.hasClass('d-none')) {
-          $gridContainer.addClass('d-none');
-        }
+        ReactDOM.render(
+          <Theme>
+            <DependentComponent  msg={msg}/>
+          </Theme>,
+          $container[0]
+        );
       }
     },
     __loadMoreRows: function() {
diff --git a/web/pgadmin/misc/statistics/static/js/StatiscticsComponent.jsx b/web/pgadmin/misc/statistics/static/js/StatiscticsComponent.jsx
new file mode 100644
index 000000000..795a1ab2f
--- /dev/null
+++ b/web/pgadmin/misc/statistics/static/js/StatiscticsComponent.jsx
@@ -0,0 +1,99 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import _ from 'lodash';
+import React, { useEffect } from 'react';
+import PgTable from 'sources/components/PgTable';
+import gettext from 'sources/gettext';
+import PropTypes from 'prop-types';
+
+export default function StaticticsComponent({
+  res,
+  tableData,
+  singleLineStatistics,
+  msg
+}) {
+  // const classes = useStyles();
+  const [tablebData, setTableData] = React.useState([]);
+  var columns = '';
+
+  if (singleLineStatistics) {
+    columns = [
+      {
+        Header: 'Statictics',
+        accessor: 'name',
+        sortble: true,
+        resizable: false,
+        disableGlobalFilter: true,
+      },
+      {
+        Header: 'Value',
+        accessor: 'value',
+        sortble: true,
+        resizable: false,
+        disableGlobalFilter: true,
+      },
+    ];
+  } else {
+    columns = [];
+    if (!_.isUndefined(res)) {
+      res.forEach((row) => {
+        var column = {
+          Header: row.name,
+          accessor: row.name,
+          sortble: true,
+          resizable: false,
+          disableGlobalFilter: true,
+        };
+        columns.push(column);
+      });
+    }
+  }
+  useEffect(() => {
+    var data = tableData;
+    if (!_.isUndefined(data)) {
+      data.forEach((element) => {
+        if (element.icon && _.isUndefined(element.icon.type)) {
+          element['icon'] = {
+            type: element.icon,
+          };
+        }
+      });
+      setTableData(tableData);
+    }
+  });
+
+  return (
+    <>
+      {!_.isUndefined(res)  ? (
+        <PgTable
+          height={window.innerHeight - 450}
+          columns={columns}
+          data={tablebData}
+        ></PgTable>
+      ) : (
+        <>
+          <div className="negative-space">
+            <div className="pg-panel-message">
+              {' '}
+              {gettext(msg)}
+            </div>
+          </div>
+        </>
+      )}
+    </>
+  );
+}
+
+StaticticsComponent.propTypes = {
+  res: PropTypes.array,
+  tableData: PropTypes.array,
+  msg: PropTypes.string,
+  singleLineStatistics: PropTypes.bool,
+};
diff --git a/web/pgadmin/misc/statistics/static/js/statistics.js b/web/pgadmin/misc/statistics/static/js/statistics.js
index a32d7f4e6..ce5aee7e5 100644
--- a/web/pgadmin/misc/statistics/static/js/statistics.js
+++ b/web/pgadmin/misc/statistics/static/js/statistics.js
@@ -8,6 +8,10 @@
 //////////////////////////////////////////////////////////////
 
 import Notify from '../../../../static/js/helpers/Notifier';
+import ReactDOM from 'react-dom';
+import StatiscticsComponent from './StatiscticsComponent';
+import Theme from 'sources/Theme';
+import React from 'react';
 
 define('misc.statistics', [
   'sources/gettext', 'underscore', 'jquery', 'backbone',
@@ -46,70 +50,6 @@ define('misc.statistics', [
     },
   });
 
-  var PGBooleanCell = Backgrid.Extension.SwitchCell.extend({
-      defaults: _.extend({}, Backgrid.Extension.SwitchCell.prototype.defaults),
-    }),
-    typeCellMapper = {
-      // boolean
-      16: PGBooleanCell,
-      // int8
-      20: Backgrid.IntegerCell,
-      // int2
-      21: Backgrid.IntegerCell,
-      // int4
-      23: Backgrid.IntegerCell,
-      // float4
-      700: Backgrid.NumberCell,
-      // float8
-      701: Backgrid.NumberCell,
-      // numeric
-      1700: Backgrid.NumberCell,
-      // abstime
-      702: Backgrid.DatetimeCell,
-      // reltime
-      703: Backgrid.DatetimeCell,
-      // date
-      1082: Backgrid.DatetimeCell.extend({
-        includeDate: true,
-        includeTime: false,
-        includeMilli: false,
-      }),
-      // time
-      1083: Backgrid.DatetimeCell.extend({
-        includeDate: false,
-        includeTime: true,
-        includeMilli: true,
-      }),
-      // timestamp
-      1114: Backgrid.DatetimeCell.extend({
-        includeDate: true,
-        includeTime: true,
-        includeMilli: true,
-      }),
-      // timestamptz
-      1184: 'string'
-      /* Backgrid.DatetimeCell.extend({
-              includeDate: true, includeTime: true, includeMilli: true
-            }) */
-      ,
-      1266: 'string',
-      /* Backgrid.DatetimeCell.extend({
-            includeDate: false, includeTime: true, includeMilli: true
-          }) */
-    },
-    GRID_CLASSES = 'backgrid presentation table table-bordered table-noouter-border table-hover',
-    wcDocker = window.wcDocker;
-
-  _.extend(
-    PGBooleanCell.prototype.defaults.options, {
-      onText: gettext('True'),
-      offText: gettext('False'),
-      onColor: 'success',
-      offColor: 'ternary',
-      size: 'mini',
-    }
-  );
-
   _.extend(pgBrowser.NodeStatistics, {
     init: function() {
       if (this.initialized) {
@@ -119,7 +59,7 @@ define('misc.statistics', [
       _.bindAll(
         this,
         'showStatistics', 'toggleVisibility',
-        '__createMultiLineStatistics', '__createSingleLineStatistics', '__loadMoreRows');
+        '__createSingleLineStatistics', '__loadMoreRows');
 
       _.extend(
         this, {
@@ -188,7 +128,6 @@ define('misc.statistics', [
     __updateCollection: function(url, node, item, node_type) {
       var $container = this.panel[0].layout().scene().find('.pg-panel-content'),
         $msgContainer = $container.find('.pg-panel-statistics-message'),
-        $gridContainer = $container.find('.pg-panel-statistics-container'),
         panel = this.panel,
         self = this,
         msg = '',
@@ -228,11 +167,12 @@ define('misc.statistics', [
                 timer = setTimeout(function() {
                   // notify user if request is taking longer than 1 second
 
-                  $msgContainer.text(gettext('Retrieving data from the server...'));
-                  $msgContainer.removeClass('d-none');
-                  if (self.grid) {
-                    self.grid.remove();
-                  }
+                  ReactDOM.render(
+                    <Theme>
+                      <StatiscticsComponent  msg={gettext('Retrieving data from the server...')}/>
+                    </Theme>,
+                    $container[0]
+                  );
                 }, 1000);
               },
             })
@@ -243,49 +183,35 @@ define('misc.statistics', [
                 if (res.data) {
                   var data = self.data = res.data;
                   if (node.hasCollectiveStatistics || data['rows'].length > 1) {
-                  // Listen scroll event to load more rows
-                    pgBrowser.Events.on(
-                      'pgadmin-browser:panel-statistics:' +
-                    wcDocker.EVENT.SCROLLED,
-                      self.__loadMoreRows
+                    let tableData = [];
+                    res.data.rows.forEach((row) => {
+                      tableData.push({...row, icon: ''});
+                    });
+                    ReactDOM.render(
+                      <Theme>
+                        <StatiscticsComponent  res={res.data.columns} tableData={tableData} singleLineStatistics={false}/>
+                      </Theme>,
+                      $container[0]
                     );
-                    self.__createMultiLineStatistics.call(self, data, node.statsPrettifyFields);
                   } else {
-                  // Do not listen the scroll event
-                    pgBrowser.Events.off(
-                      'pgadmin-browser:panel-statistics:' +
-                    wcDocker.EVENT.SCROLLED,
-                      self.__loadMoreRows
+                    var tableData = self.__createSingleLineStatistics.call(self, data, node.statsPrettifyFields);
+                    ReactDOM.render(
+                      <Theme>
+                        <StatiscticsComponent  res={res.data.columns} tableData={tableData} singleLineStatistics={true}/>
+                      </Theme>,
+                      $container[0]
                     );
-                    self.__createSingleLineStatistics.call(self, data, node.statsPrettifyFields);
-                  }
-
-                  if (self.grid) {
-                    delete self.grid;
-                    self.grid = null;
                   }
-
-                  self.grid = new Backgrid.Grid({
-                    emptyText: gettext('No data found'),
-                    columns: self.columns,
-                    collection: self.collection,
-                    className: GRID_CLASSES,
-                  });
-                  self.grid.render();
-                  $gridContainer.empty();
-                  $gridContainer.append(self.grid.$el);
-
-                  if (!$msgContainer.hasClass('d-none')) {
-                    $msgContainer.addClass('d-none');
-                  }
-                  $gridContainer.removeClass('d-none');
-
-                } else if (res.info) {
-                  if (!$gridContainer.hasClass('d-none')) {
-                    $gridContainer.addClass('d-none');
-                  }
-                  $msgContainer.text(res.info);
-                  $msgContainer.removeClass('d-none');
+                } 
+                else if (res.info) {
+                  
+                  ReactDOM.render(
+                    <Theme>
+                      <StatiscticsComponent  msg={res.info}/>
+                    </Theme>,
+                    $container[0]
+                  );
+                  
                 }
               })
               .fail(function(xhr, error, message) {
@@ -310,7 +236,12 @@ define('misc.statistics', [
                   );
                 }
                 // show failed message.
-                $msgContainer.text(gettext('Failed to retrieve data from the server.'));
+                ReactDOM.render(
+                  <Theme>
+                    <StatiscticsComponent  msg={gettext('Failed to retrieve data from the server.')}/>
+                  </Theme>,
+                  $container[0]
+                );
               });
           };
 
@@ -318,12 +249,12 @@ define('misc.statistics', [
         }
       }
       if (msg != '') {
-        // Hide the grid container and show the default message container
-        if (!$gridContainer.hasClass('d-none'))
-          $gridContainer.addClass('d-none');
-        $msgContainer.removeClass('d-none');
-
-        $msgContainer.text(msg);
+        ReactDOM.render(
+          <Theme>
+            <StatiscticsComponent  msg={msg}/>
+          </Theme>,
+          $container[0]
+        );
       }
     },
     refreshStatistics: function(item, data, node) {
@@ -363,37 +294,6 @@ define('misc.statistics', [
         }, 400);
     },
 
-    __createMultiLineStatistics: function(data, prettifyFields) {
-      var rows = data['rows'],
-        columns = data['columns'];
-
-      this.columns = [];
-      for (var idx in columns) {
-        var rawColumn = columns[idx],
-          cell_type = typeCellMapper[rawColumn['type_code']] || 'string';
-
-        // Don't show PID comma separated
-        if (rawColumn['name'] == 'PID') {
-          cell_type = cell_type.extend({
-            orderSeparator: '',
-          });
-        }
-
-        var col = {
-          editable: false,
-          name: rawColumn['name'],
-          cell: cell_type,
-        };
-        if (_.indexOf(prettifyFields, rawColumn['name']) != -1) {
-          col['formatter'] = SizeFormatter;
-        }
-        this.columns.push(col);
-
-      }
-
-      this.collection.reset(rows.splice(0, 50));
-    },
-
     __loadMoreRows: function() {
       let elem = $('.pg-panel-statistics-container').closest('.wcFrameCenter')[0];
       if ((elem.scrollHeight - 10) < elem.scrollTop + elem.offsetHeight) {
@@ -414,15 +314,16 @@ define('misc.statistics', [
       for (var idx in columns) {
         name = (columns[idx])['name'];
         res.push({
-          'statistics': name,
+          'name': name,
           // Check if row is undefined?
           'value': row && row[name] ?
             ((_.indexOf(prettifyFields, name) != -1) ?
               sizePrettify(row[name]) : row[name]) : null,
+          'icon': '',
         });
       }
 
-      this.collection.reset(res);
+      return res;
     },
   });
 
diff --git a/web/pgadmin/static/js/components/PgTable.jsx b/web/pgadmin/static/js/components/PgTable.jsx
index da27a43dc..f97cecb2a 100644
--- a/web/pgadmin/static/js/components/PgTable.jsx
+++ b/web/pgadmin/static/js/components/PgTable.jsx
@@ -17,6 +17,7 @@ import clsx from 'clsx';
 import PropTypes from 'prop-types';
 import AutoSizer from 'react-virtualized-auto-sizer';
 import { Checkbox } from '@material-ui/core';
+import gettext from 'sources/gettext';
 
 const useStyles = makeStyles((theme) => ({
   root: {
@@ -236,50 +237,73 @@ export default function PgTable({ columns, data, isSelectRow, ...props }) {
   );
   // Render the UI for your table
   return (
-    <AutoSizer className={classes.autoResizer}>
-      {({ height }) => (
-        <div {...getTableProps()} className={classes.table}>
-          <div>
-            {headerGroups.map(headerGroup => (
-              <div key={''} {...headerGroup.getHeaderGroupProps()}>
-                {headerGroup.headers.map(column => (
-                  <div key={column.id} {...column.getHeaderProps()} className={clsx(classes.tableCellHeader, column.className)}>
-                    <div {...(column.sortble ? column.getSortByToggleProps() : {})}>
-                      {column.render('Header')}
-                      <span>
-                        {column.isSorted
-                          ? column.isSortedDesc
-                            ? ' 🔽'
-                            : ' 🔼'
-                          : ''}
-                      </span>
-                      {column.resizable &&
+    <>
+      {rows.length > 0 ? (
+        <AutoSizer className={classes.autoResizer}>
+          {({ height }) => (
+            <div {...getTableProps()} className={classes.table}>
+              <div>
+                {headerGroups.map((headerGroup) => (
+                  <div key={''} {...headerGroup.getHeaderGroupProps()}>
+                    {headerGroup.headers.map((column) => (
+                      <div
+                        key={column.id}
+                        {...column.getHeaderProps()}
+                        className={clsx(
+                          classes.tableCellHeader,
+                          column.className
+                        )}
+                      >
                         <div
-                          {...column.getResizerProps()}
-                          className={classes.resizer}
-                        />}
-                    </div>
+                          {...(column.sortble
+                            ? column.getSortByToggleProps()
+                            : {})}
+                        >
+                          {column.render('Header')}
+                          <span>
+                            {column.isSorted
+                              ? column.isSortedDesc
+                                ? ' 🔽'
+                                : ' 🔼'
+                              : ''}
+                          </span>
+                          {column.resizable && (
+                            <div
+                              {...column.getResizerProps()}
+                              className={classes.resizer}
+                            />
+                          )}
+                        </div>
+                      </div>
+                    ))}
                   </div>
                 ))}
               </div>
-            ))}
-          </div>
-
-          <div {...getTableBodyProps()}>
-
-            <FixedSizeList
-              height={height - 75}
-              itemCount={rows.length}
-              itemSize={35}
-              sorted={props?.sortOptions}
-            >
-              {RenderRow}
-            </FixedSizeList>
 
+              <div {...getTableBodyProps()}>
+                <FixedSizeList
+                  height={height - 75}
+                  itemCount={rows.length}
+                  itemSize={35}
+                  sorted={props?.sortOptions}
+                >
+                  {RenderRow}
+                </FixedSizeList>
+              </div>
+            </div>
+          )}
+        </AutoSizer>
+      ) : (
+        <>
+          <div className="negative-space">
+            <div className="pg-panel-message">
+              {' '}
+              {gettext('No Record')}
+            </div>
           </div>
-        </div>
+        </>
       )}
-    </AutoSizer>
+    </>
   );
 }
 
