diff --git a/aleksis/core/frontend/app/apollo.js b/aleksis/core/frontend/app/apollo.js
index a78ef2247b9e6235373a128f9d1f6717de388af4..cc468b8e9550cf83f7d27de2ab547734f44b5526 100644
--- a/aleksis/core/frontend/app/apollo.js
+++ b/aleksis/core/frontend/app/apollo.js
@@ -60,12 +60,15 @@ const apolloOpts = {
             console.error("GraphQL query error:", err.message);
           }
           // Add a snackbar on all errors returned by the GraphQL endpoint
-          vm.$root.snackbarItems.push({
-            id: crypto.randomUUID(),
-            timeout: 5000,
-            messageKey: "graphql.snackbar_error_message",
-            color: "red",
-          });
+          //  If App is offline, don't add snackbar since only the ping query is active
+          if (!vm.$root.offline) {
+            vm.$root.snackbarItems.push({
+              id: crypto.randomUUID(),
+              timeout: 5000,
+              messageKey: "graphql.snackbar_error_message",
+              color: "red",
+            });
+          }
         }
         if (networkError) {
           // Set app offline globally on network errors
diff --git a/aleksis/core/frontend/app/sentry.js b/aleksis/core/frontend/app/sentry.js
new file mode 100644
index 0000000000000000000000000000000000000000..ca54d469b0456568f0c952dac7bdfeb9d73ec6fd
--- /dev/null
+++ b/aleksis/core/frontend/app/sentry.js
@@ -0,0 +1,4 @@
+import * as Sentry from "@sentry/vue";
+import { BrowserTracing } from "@sentry/tracing";
+
+export default { Sentry, BrowserTracing };
diff --git a/aleksis/core/frontend/components/app/App.vue b/aleksis/core/frontend/components/app/App.vue
index ab6abeb05ac8816e2e9f3423ba7fe69b74aa33b3..919fd2219cd24839a3a6f6758d675bacb78e1bf6 100644
--- a/aleksis/core/frontend/components/app/App.vue
+++ b/aleksis/core/frontend/components/app/App.vue
@@ -187,8 +187,8 @@
       :key="item.id"
       :snackbar-item="item"
     />
-    <v-snackbar v-model="needRefresh" v-if="!refreshDismissed">
-      {{ $t("service_worker.new_version_available") }}
+    <v-snackbar v-model="needRefresh" v-if="!refreshDismissed" timeout="-1">
+      {{ $t("service_worker.new_version_available") }}  
 
       <template #action="{ attrs }">
         <v-btn color="primary" text @click="updateServiceWorker()">