diff --git a/client-nuxt/pages/analysis.vue b/client-nuxt/pages/analysis.vue
index fad79036bad38b6c4e328a4f863d28a002003fca..f1f763e802422f5ddf6be2457c9e084393bdfee1 100644
--- a/client-nuxt/pages/analysis.vue
+++ b/client-nuxt/pages/analysis.vue
@@ -4,33 +4,37 @@
       :analysis="sanitizedAnalysis"
       :headers="headers"
       :sort-by="['id']"
+      :loading="$fetchState.pending"
       title="Analysis"
       @go-to-item="goToAnalysis"
     ></generic-table>
+    <v-card-text>
+      <error-alert v-if="error" :error-message="error"></error-alert>
+    </v-card-text>
   </v-card>
 </template>
 
 <script>
-import GenericTable from '../components/GenericTable.vue'
+import GenericTable from '@/components/GenericTable.vue'
+import ErrorAlert from '@/components/ErrorAlert'
+
 export default {
-  components: { GenericTable },
-  async asyncData({ $axios }) {
+  components: {
+    GenericTable,
+    ErrorAlert,
+  },
+  async fetch() {
     try {
-      const analysis = await $axios.$get(`/api/analysis/`)
-      return {
-        analysis,
-      }
+      this.analysis = await this.$axios.$get(`/api/analysis/`)
     } catch (error) {
-      if (error.response.status === 403) {
-        return []
-      } else {
-        throw error
-      }
+      this.error = error
     }
   },
+
   data() {
     return {
       analysis: [],
+      error: null,
       search: '',
       headers: [
         { text: 'Id', value: 'id' },
@@ -54,6 +58,9 @@ export default {
       }))
     },
   },
+  mounted() {
+    this.$fetch()
+  },
   methods: {
     goToAnalysis(ev) {
       const {