diff --git a/packages/component-faraday-ui/src/PublonsTable.js b/packages/component-faraday-ui/src/PublonsTable.js
index 015f7e76e43306545f2b948944a96cb1c726db1a..13b395298181a88c645ebd7d27df94c3dfd30991 100644
--- a/packages/component-faraday-ui/src/PublonsTable.js
+++ b/packages/component-faraday-ui/src/PublonsTable.js
@@ -1,7 +1,7 @@
 import React from 'react'
 import styled from 'styled-components'
 import { th } from '@pubsweet/ui-toolkit'
-import { Button } from '@pubsweet/ui'
+import { Button, Spinner } from '@pubsweet/ui'
 import { get } from 'lodash'
 import { compose, withHandlers, withProps } from 'recompose'
 
@@ -12,8 +12,10 @@ const PublonsTable = ({
   onInviteReviewer,
   setFetching,
   isFetching,
+  isPublonsFetching,
 }) =>
-  reviewers.length > 0 && (
+  (isPublonsFetching && <Spinner />) ||
+  (reviewers.length > 0 && (
     <Table>
       <thead>
         <tr>
@@ -31,15 +33,15 @@ const PublonsTable = ({
       </thead>
       <tbody>
         {reviewers.map(reviewer => (
-          <TableRow key={reviewer.id}>
+          <TableRow key={reviewer.email}>
             <td>
-              <Text>{`${get(reviewer, 'publishingName', '')}`}</Text>
+              <Text>{`${get(reviewer, 'name', '')}`}</Text>
             </td>
             <td>
-              <Text>{`${get(reviewer, 'recentOrganizations.name', '')}`}</Text>
+              <Text>{`${get(reviewer, 'affiliation', '')}`}</Text>
             </td>
             <td>
-              <Text>{`${get(reviewer, 'numVerifiedReviews', '')}`}</Text>
+              <Text>{`${get(reviewer, 'reviews', '')}`}</Text>
             </td>
             <HiddenCell>
               <OpenModal
@@ -50,7 +52,7 @@ const PublonsTable = ({
                 title="Send invitation to review?"
               >
                 {showModal => (
-                  <Button onClick={showModal} secondary size="small">
+                  <Button onClick={showModal} primary size="small">
                     SEND
                   </Button>
                 )}
@@ -60,7 +62,7 @@ const PublonsTable = ({
         ))}
       </tbody>
     </Table>
-  )
+  ))
 
 export default compose(
   withFetching,
diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
index d37e18d643603014793260733f8510e433663e95..27658fcfcc4f852e281b2043612eda0dd5efa1b1 100644
--- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
+++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
@@ -26,6 +26,7 @@ const ReviewerDetails = ({
   fragment,
   invitations,
   publons,
+  isPublonsFetching,
   previewFile,
   downloadFile,
   canInviteReviewers,
@@ -93,7 +94,10 @@ const ReviewerDetails = ({
                   {publons.length === 0 && (
                     <Text align="center">No suggestions yet.</Text>
                   )}
-                  <PublonsTable reviewers={publons} />
+                  <PublonsTable
+                    isPublonsFetching={isPublonsFetching}
+                    reviewers={publons}
+                  />
                 </Fragment>
               )}
               {selectedTab === 2 && (
diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js
index d7418509783f4d241bb9fb5077156b7709b82f62..4eca664f9b5ae203a5d247fd1d01a584ba0dc5e3 100644
--- a/packages/component-manuscript/src/components/ManuscriptLayout.js
+++ b/packages/component-manuscript/src/components/ManuscriptLayout.js
@@ -57,6 +57,7 @@ const ManuscriptLayout = ({
   toggleReviewerResponse,
   invitationsWithReviewers,
   publonReviewers,
+  isPublonsFetching,
   reviewerResponseExpanded,
   pendingOwnRecommendation,
   toggleReviewerRecommendations,
@@ -178,6 +179,7 @@ const ManuscriptLayout = ({
             fragment={fragment}
             getSignedUrl={getSignedUrl}
             invitations={invitationsWithReviewers}
+            isPublonsFetching={isPublonsFetching}
             journal={journal}
             onInvitePublonReviewer={onInvitePublonReviewer}
             onInviteReviewer={onInviteReviewer}
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index b92e0b9b87415a676936e41159367336bc5e3da4..1d28fc98bfb3c890629463f578c33bc3c5e3b65d 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -25,7 +25,6 @@ import {
   inviteReviewer,
   revokeReviewer,
   reviewerDecision,
-  getPublonReviewers,
 } from 'pubsweet-components-faraday/src/redux/reviewers'
 import {
   hasManuscriptFailure,
@@ -55,7 +54,11 @@ import {
   getFragmentReviewerRecommendations,
   getInvitationsWithReviewersForFragment,
 } from 'pubsweet-component-faraday-selectors'
-import { RemoteOpener, handleError } from 'pubsweet-component-faraday-ui'
+import {
+  RemoteOpener,
+  handleError,
+  withFetching,
+} from 'pubsweet-component-faraday-ui'
 
 import ManuscriptLayout from './ManuscriptLayout'
 import { parseEicDecision, parseSearchParams, redirectToError } from './utils'
@@ -73,6 +76,7 @@ export default compose(
   setDisplayName('ManuscriptPage'),
   withJournal,
   withRouter,
+  withFetching,
   withState('publonReviewers', 'setPub', []),
   withState('editorInChief', 'setEiC', 'N/A'),
   ConnectPage(({ match }) => [
@@ -169,7 +173,6 @@ export default compose(
         state,
         get(fragment, 'id', ''),
       ),
-      publonReviewers: getPublonReviewers(get(fragment, 'id', '')),
     }),
   ),
   ConnectPage(({ currentUser }) => {
@@ -417,12 +420,12 @@ export default compose(
     toggleReviewerRecommendations: toggle,
     reviewerRecommendationExpanded: expanded,
   })),
-  withProps(({ currentUser, submittedOwnRecommendation }) => ({
+  withProps(({ currentUser, submittedOwnRecommendation, isFetching }) => ({
     getSignedUrl,
-    publonReviewers: [],
     shouldReview:
       get(currentUser, 'isReviewer', false) &&
       isUndefined(submittedOwnRecommendation),
+    isPublonFetching: isFetching,
   })),
   lifecycle({
     componentDidMount() {
@@ -436,12 +439,15 @@ export default compose(
         clearCustomError,
         hasManuscriptFailure,
         fetchUpdatedCollection,
-        currentUser: { isInvitedHE, isInvitedToReview },
-        publonReviewers,
+        currentUser: {
+          isInvitedHE,
+          isInvitedToReview,
+          permissions: { canInviteReviewers },
+        },
+        setFetching,
+        isFetching,
       } = this.props
 
-      // publonReviewers.then(publons => console.log('PUBLONS', publons))
-
       if (hasManuscriptFailure) {
         history.push('/not-found')
         clearCustomError()
@@ -461,11 +467,14 @@ export default compose(
         setEditorInChief(head(res.users)),
       )
 
-      apiGet(`/fragments/${fragmentId}/publons`).then(res => {
-        if (!publonReviewers) {
+      if (canInviteReviewers) {
+        setFetching({ isFetching: true })
+        console.log(isFetching)
+        apiGet(`/fragments/${fragmentId}/publons`).then(res => {
+          setFetching({ isFetching: false })
           setPublons(res)
-        }
-      })
+        })
+      }
 
       if (isInvitedHE) {
         this.props.toggleHEResponse()
diff --git a/packages/components-faraday/src/redux/reviewers.js b/packages/components-faraday/src/redux/reviewers.js
index d17294f52a49541591c2f2e04610b53196e681f6..9d2ee9b6333822535652d83f30b1802a21a879df 100644
--- a/packages/components-faraday/src/redux/reviewers.js
+++ b/packages/components-faraday/src/redux/reviewers.js
@@ -57,9 +57,6 @@ export const getCollectionReviewers = (collectionId, fragmentId) => dispatch =>
   apiGet(
     `/collections/${collectionId}/fragments/${fragmentId}/invitations?role=reviewer`,
   )
-
-export const getPublonReviewers = fragmentId =>
-  apiGet(`/fragments/${fragmentId}/publons`)
 // #endregion
 
 export const inviteReviewer = ({