diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f943d18b85c705bd5e5b8aa92adb86473ea5522b..3ff3ec3b0e2ba8f31c19f9636e3d49412e2abb9a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -97,7 +97,7 @@ build-data-service:
     expire_in: 1 days
 
 build-ui:
-  image: oven/bun:1.0.26-alpine
+  image: oven/bun:1.1.20-alpine
   stage: build
   script:
     - "cd ./dbrepo-ui && bun install && bun run build"
@@ -299,6 +299,21 @@ test-lib:
       junit: ./lib/python/report.xml
   coverage: '/TOTAL.*?([0-9]{1,3})%/'
 
+test-ui:
+  stage: test
+  image: docker.io/docker:24-dind
+  variables:
+    UI_RUNTIME_OPTIONS: --max_old_space_size=256
+  needs:
+    - build-ui
+  dependencies:
+    - build-ui
+  before_script:
+    - docker compose build dbrepo-ui
+    - docker compose up -d dbrepo-ui
+  script:
+    - bash ./dbrepo-ui/test/test_heap.sh || exit 1
+
 scan-sonarqube:
   image: sonarsource/sonar-scanner-cli:10.0
   stage: scan
diff --git a/dbrepo-dashboard-service/dashboards/system.json b/dbrepo-dashboard-service/dashboards/system.json
index abb4b61243d65dd3f3a8c3d2f4b53c8e87863575..e37d7be19f66f2b9b39928d85fe1741e45db760f 100644
--- a/dbrepo-dashboard-service/dashboards/system.json
+++ b/dbrepo-dashboard-service/dashboards/system.json
@@ -18,7 +18,6 @@
   "editable": true,
   "fiscalYearStartMonth": 0,
   "graphTooltip": 1,
-  "id": 3,
   "links": [
     {
       "asDropdown": false,
@@ -1282,7 +1281,8 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "green"
+                "color": "green",
+                "value": null
               }
             ]
           },
@@ -1440,7 +1440,8 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "green"
+                "color": "green",
+                "value": null
               },
               {
                 "color": "red",
@@ -1602,7 +1603,8 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "green"
+                "color": "green",
+                "value": null
               }
             ]
           },
@@ -1724,7 +1726,8 @@
             "mode": "absolute",
             "steps": [
               {
-                "color": "green"
+                "color": "green",
+                "value": null
               }
             ]
           },
@@ -1817,6 +1820,6 @@
   "timezone": "browser",
   "title": "NEW",
   "uid": "bdz20owu8zn5se1",
-  "version": 31,
+  "version": 1,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/dbrepo-ui/Dockerfile b/dbrepo-ui/Dockerfile
index eef243cca855f6cf18275b8f29231332c420e886..a73e31674fd8b7b755779bc5aa479855c3e6ffd8 100644
--- a/dbrepo-ui/Dockerfile
+++ b/dbrepo-ui/Dockerfile
@@ -25,7 +25,7 @@ COPY ./nuxt.config.ts ./nuxt.config.ts
 
 RUN bun run build
 
-FROM node:18.19.0-alpine3.19 AS runtime
+FROM node:22.9.0-alpine3.20 AS runtime
 
 ARG APP_VERSION="latest"
 ARG COMMIT=""
@@ -42,7 +42,6 @@ RUN chmod -R 755 /app/.output
 
 ENV NUXT_PUBLIC_VERSION="${APP_VERSION:-}"
 ENV NUXT_PUBLIC_COMMIT="${COMMIT:-}"
-ENV NODE_OPTIONS="--max_old_space_size=256"
 
 EXPOSE 3000
 
diff --git a/dbrepo-ui/components/OntologiesList.vue b/dbrepo-ui/components/OntologiesList.vue
index c3ffd3994541bf29dfa7c3f091d6089760624f86..44f0eddc3f4c8b3542cd1b7f237cac05603c6375 100644
--- a/dbrepo-ui/components/OntologiesList.vue
+++ b/dbrepo-ui/components/OntologiesList.vue
@@ -8,10 +8,12 @@
       rounded="0">
       <v-divider
         class="mx-4" />
-      <v-card-title
-        v-text="ontology.prefix" />
-      <v-card-subtitle
-        v-text="ontology.uri" />
+      <v-card-title>
+        {{ ontology.prefix }}
+      </v-card-title>
+      <v-card-subtitle>
+        {{ ontology.uri }}
+      </v-card-subtitle>
       <v-card-text>
         <div
           class="db-tags">
diff --git a/dbrepo-ui/components/container/ContainerCard.vue b/dbrepo-ui/components/container/ContainerCard.vue
index b2937cf6b4fb7f1a243056ea52ccd4649e205772..ed1479f64d3ad8043968e03edbfcd940190e3fb6 100644
--- a/dbrepo-ui/components/container/ContainerCard.vue
+++ b/dbrepo-ui/components/container/ContainerCard.vue
@@ -4,9 +4,12 @@
     variant="flat"
     rounded="0">
     <v-divider class="mx-4" />
-    <v-card-title
-      v-text="container.name" />
-    <v-card-subtitle v-text="$t('pages.container.subtitle.text')" />
+    <v-card-title>
+      {{ container.name }}
+    </v-card-title>
+    <v-card-subtitle>
+      {{ $t('pages.container.subtitle.text') }}
+    </v-card-subtitle>
     <v-card-text>
       <v-progress-linear
         v-model="utilization"
diff --git a/dbrepo-ui/components/database/DatabaseCard.vue b/dbrepo-ui/components/database/DatabaseCard.vue
index 48aefa7493ce5beb52d8ec62cf794d64368b8489..fba3853a31cf25649f915d4c0a3e422f5ec879bf 100644
--- a/dbrepo-ui/components/database/DatabaseCard.vue
+++ b/dbrepo-ui/components/database/DatabaseCard.vue
@@ -9,8 +9,9 @@
     <v-divider class="mx-4" />
     <v-card-title>
       <span
-        class="text-primary text-decoration-underline"
-        v-text="formatTitle(database)" />
+        class="text-primary text-decoration-underline">
+        {{ formatTitle(database) }}
+      </span>
       <v-progress-circular
         v-if="loading"
         color="primary"
@@ -18,56 +19,66 @@
         class="ml-1"
         indeterminate />
     </v-card-title>
-    <v-card-subtitle
-      v-text="formatCreators(database)" />
+    <v-card-subtitle>
+      {{ formatCreators(database) }}
+    </v-card-subtitle>
     <v-card-text>
-      <div v-text="identifierDescription(database)" />
+      <div>
+        {{ identifierDescription(database) }}
+      </div>
       <div class="mt-2 db-tags">
         <v-chip
           v-if="database.is_public"
           size="small"
           color="success"
-          :text="$t('toolbars.database.public')"
-          variant="outlined" />
+          variant="outlined">
+          {{ $t('toolbars.database.public') }}
+        </v-chip>
         <v-chip
           v-if="!database.is_public"
           size="small"
           :color="colorVariant"
           variant="outlined"
-          :text="$t('toolbars.database.private')"
-          flat />
+          flat>
+          {{ $t('toolbars.database.private') }}
+        </v-chip>
         <v-chip
           v-if="identifierYear(database)"
           size="small"
           :color="colorVariant"
-          variant="outlined"
-          v-text="identifierYear(database)" />
+          variant="outlined">
+          {{ identifierYear(database) }}
+        </v-chip>
         <v-chip
           v-if="identifier(database)"
           size="small"
           :color="colorVariant"
-          variant="outlined"
-          v-text="identifierPublisher(database)" />
+          variant="outlined">
+          {{ identifierPublisher(database) }}
+        </v-chip>
         <v-chip
           v-for="(license, i) in identifierLicenses(database)"
           :key="`l-${i}`"
           size="small"
           color="success"
-          variant="outlined"
-          v-text="license.identifier" />
+          variant="outlined">
+          {{ license.identifier }}
+        </v-chip>
         <v-chip
           v-for="(funder, i) in identifierFunders(database)"
           :key="`f-${i}`"
           size="small"
           :color="colorVariant"
-          variant="outlined"
-          v-text="funder.funder_name" />
+          variant="outlined">
+          {{ funder.funder_name }}
+        </v-chip>
         <v-chip
           v-if="identifierLanguage(database)"
           size="small"
           :color="colorVariant"
-          variant="outlined"
-          v-text="identifierLanguage(database)" />
+          variant="outlined">
+          {{ identifierLanguage(database) }}
+        </v-chip>
       </div>
     </v-card-text>
   </v-card>
diff --git a/dbrepo-ui/components/database/DatabaseCreate.vue b/dbrepo-ui/components/database/DatabaseCreate.vue
index 8d909b4da350c1cbc10dfad7d595799aa3adee4e..5da87cebbda9731ae842636654a40ce6fdea14a8 100644
--- a/dbrepo-ui/components/database/DatabaseCreate.vue
+++ b/dbrepo-ui/components/database/DatabaseCreate.vue
@@ -6,9 +6,13 @@
       autocomplete="off"
       @submit.prevent="submit">
       <v-card
-        variant="elevated"
-        :title="$t('pages.database.subpages.create.title')"
-        :subtitle="$t('pages.database.subpages.create.subtitle')">
+        variant="elevated">
+        <v-card-title>
+          {{ $t('pages.database.subpages.create.title') }}
+        </v-card-title>
+        <v-card-subtitle>
+          {{ $t('pages.database.subpages.create.subtitle') }}
+        </v-card-subtitle>
         <v-card-text>
           <v-row dense>
             <v-col>
@@ -58,16 +62,18 @@
           <v-spacer />
           <v-btn
             :variant="buttonVariant"
-            :text="$t('navigation.cancel')"
-            @click="cancel" />
+            @click="cancel">
+            {{ $t('navigation.cancel') }}
+          </v-btn>
           <v-btn
             :disabled="!valid || loading"
             color="primary"
             type="submit"
             variant="flat"
-            :text="$t('pages.database.subpages.create.submit.text')"
             :loading="loading"
-            @click="create" />
+            @click="create">
+            {{ $t('pages.database.subpages.create.submit.text') }}
+          </v-btn>
         </v-card-actions>
       </v-card>
     </v-form>
diff --git a/dbrepo-ui/components/database/DatabaseToolbar.vue b/dbrepo-ui/components/database/DatabaseToolbar.vue
index 741252475c31ef841260266d3d4fcb459b35cd64..5f3c8c83989bd20fa67f6f327fdc9676767acbb4 100644
--- a/dbrepo-ui/components/database/DatabaseToolbar.vue
+++ b/dbrepo-ui/components/database/DatabaseToolbar.vue
@@ -8,8 +8,9 @@
           type="subtitle"
           width="200" />
         <span
-          v-if="database && $vuetify.display.lgAndUp"
-          v-text="database.name" />
+          v-if="database && $vuetify.display.lgAndUp">
+          {{ database.name }}
+        </span>
         <v-chip
           v-if="database && database.is_public"
           size="small"
diff --git a/dbrepo-ui/components/dialogs/DropTable.vue b/dbrepo-ui/components/dialogs/DropTable.vue
index 1f62735de5e6ce549386894f525074f53d5cdd5a..d465c882d0529a817be21f836ea82739fc30155b 100644
--- a/dbrepo-ui/components/dialogs/DropTable.vue
+++ b/dbrepo-ui/components/dialogs/DropTable.vue
@@ -7,9 +7,13 @@
         <v-card-text>
           <v-row dense>
             <v-col>
-              <span v-text="$t('pages.table.subpages.drop.warning.prefix')" />
+              <span>
+                {{ $t('pages.table.subpages.drop.warning.prefix') }}
+              </span>
               &nbsp;<code class="code-key">{{ table.internal_name }}</code>&nbsp;
-              <span v-text="$t('pages.table.subpages.drop.warning.suffix')" />
+              <span>
+                {{ $t('pages.table.subpages.drop.warning.suffix') }}
+              </span>
             </v-col>
           </v-row>
           <v-row>
diff --git a/dbrepo-ui/components/dialogs/Semantics.vue b/dbrepo-ui/components/dialogs/Semantics.vue
index a4a7104788ce1e12460ad693ac543058b60cdf6c..8d3c573f7b205368fd354372a9e166f2ee81a14f 100644
--- a/dbrepo-ui/components/dialogs/Semantics.vue
+++ b/dbrepo-ui/components/dialogs/Semantics.vue
@@ -12,14 +12,21 @@
             <v-alert
               border="start"
               color="info">
-              <p
-                v-text="$t('pages.table.subpages.semantics.info')" />
+              <p>
+                {{ $t('pages.table.subpages.semantics.info') }}
+              </p>
               <p
                 class="mt-1"
                 v-for="(ontology, idx) in ontologies"
                 :key="`o-${idx}`">
-                <v-badge inline :content="badge(ontology).text" :color="badge(ontology).color">
-                  <a :href="ontology.uri" v-text="ontology.uri_pattern" />
+                <v-badge
+                  inline
+                  :content="badge(ontology).text"
+                  :color="badge(ontology).color">
+                  <a
+                    :href="ontology.uri">
+                    {{ ontology.uri_pattern }}
+                  </a>
                 </v-badge>
               </p>
             </v-alert>
@@ -34,11 +41,13 @@
               color="info">
               <p>
                 <a
-                  :href="entity.uri"
-                  v-text="entity.name ? entity.name : entity.uri" />
+                  :href="entity.uri">
+                  {{ entity.name ? entity.name : entity.uri }}
+                </a>
+              </p>
+              <p>
+                {{ entity.description }}
               </p>
-              <p
-                v-text="entity.description" />
             </v-alert>
           </v-col>
         </v-row>
@@ -65,8 +74,9 @@
                 lines="one"
                 v-model="recommendation"
                 select-strategy="single-independent">
-                <v-list-subheader
-                  v-text="$t('pages.table.subpages.semantics.recommended')" />
+                <v-list-subheader>
+                  {{ $t('pages.table.subpages.semantics.recommended') }}
+                </v-list-subheader>
                 <v-list-item
                   v-for="(item, idx) in recommendations"
                   :key="`r-${idx}`"
@@ -77,8 +87,12 @@
                       <v-checkbox-btn :model-value="isActive"></v-checkbox-btn>
                     </v-list-item-action>
                   </template>
-                  <v-list-item-title v-text="item.label" />
-                  <v-list-item-subtitle v-text="subtitle(item)" />
+                  <v-list-item-title>
+                    {{ item.label }}
+                  </v-list-item-title>
+                  <v-list-item-subtitle>
+                    {{ subtitle(item) }}
+                  </v-list-item-subtitle>
                 </v-list-item>
               </v-list>
             </v-col>
diff --git a/dbrepo-ui/components/dialogs/ViewSemanticEntity.vue b/dbrepo-ui/components/dialogs/ViewSemanticEntity.vue
index ede7fe25bcd421c0304f41d224be7615598a9251..41b69f89892e3068a781e5cac0ffafee767c473a 100644
--- a/dbrepo-ui/components/dialogs/ViewSemanticEntity.vue
+++ b/dbrepo-ui/components/dialogs/ViewSemanticEntity.vue
@@ -1,17 +1,32 @@
 <template>
   <div>
     <v-card>
-      <v-card-title v-text="entity.name" />
+      <v-card-title>
+        {{ entity.name }}
+      </v-card-title>
       <v-card-subtitle>
-        <a :href="entity.uri" target="_blank" v-text="entity.uri" />
+        <a
+          :href="entity.uri"
+          target="_blank">
+          {{ entity.uri }}
+        </a>
       </v-card-subtitle>
       <v-card-text>
-        <p v-text="description" />
+        <p>
+          {{ description }}
+        </p>
       </v-card-text>
-      <div v-for="(item,idx) in entity.columns" :key="idx">
+      <div
+        v-for="(item,idx) in entity.columns"
+        :key="idx">
         <v-list-item two-line :to="link(item)">
-          <v-list-item-title v-text="item.name" />
-          <v-list-item-subtitle class="mt-2" v-text="link(item)" />
+          <v-list-item-title>
+            {{ item.name }}
+          </v-list-item-title>
+          <v-list-item-subtitle
+            class="mt-2">
+            {{ link(item) }}
+          </v-list-item-subtitle>
         </v-list-item>
       </div>
       <v-card-actions>
diff --git a/dbrepo-ui/components/identifier/Citation.vue b/dbrepo-ui/components/identifier/Citation.vue
index 6f35ac915e255610965015ccd16adcf1dad03597..7cd99194b099987f3853fde4afd7bf92f463dd38 100644
--- a/dbrepo-ui/components/identifier/Citation.vue
+++ b/dbrepo-ui/components/identifier/Citation.vue
@@ -1,7 +1,10 @@
 <template>
-  <v-row no-gutters>
-    <v-col v-if="!loading" md="10">
-      <pre v-text="citation" />
+  <v-row
+    no-gutters>
+    <v-col
+      v-if="!loading"
+      md="10">
+      <pre>{{ citation }}</pre>
     </v-col>
     <v-col
       v-if="!$vuetify.display.mdAndDown"
diff --git a/dbrepo-ui/components/identifier/Creators.vue b/dbrepo-ui/components/identifier/Creators.vue
index 706736b21b155f5dc0265b0993f23b435bd5c345..8aa5fac7aa7f06ca809179a3903a5e23830504e4 100644
--- a/dbrepo-ui/components/identifier/Creators.vue
+++ b/dbrepo-ui/components/identifier/Creators.vue
@@ -16,12 +16,14 @@
           v-if="hasRor(personOrOrg)"
           class="mr-1"
           :ror="personOrOrg.name_identifier" />
-        <span
-          v-text="personOrOrg.creator_name" />
+        <span>
+          {{ personOrOrg.creator_name }}
+        </span>
         <sup
           v-if="hasAffiliation(personOrOrg)"
-          v-text="personOrOrg.affiliation_index"
-          class="ml-1" />
+          class="ml-1">
+          {{ personOrOrg.affiliation_index }}
+        </sup>
         <span
           v-if="!isLast(creators, i)">;&nbsp;</span>
       </span>
@@ -30,7 +32,9 @@
       <span
         v-for="(affiliation, i) in affiliations"
         :key="`c-${i}`">
-        <sup v-text="i+1" />
+        <sup>
+          {{ i+1 }}
+        </sup>
         {{ affiliation.name }}
         <RorIcon
           v-if="hasRor(affiliation)"
diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue
index 0de61931265d5359c07637d935aa9101a1ebca6a..1795d058660ff08288b9054435e44362d84cf0e7 100644
--- a/dbrepo-ui/components/identifier/Persist.vue
+++ b/dbrepo-ui/components/identifier/Persist.vue
@@ -589,14 +589,20 @@
             v-if="identifier.licenses.length > 0"
             color="tertiary">
             <p>
-              <a :href="identifier.licenses[0].uri" target="_blank">
-                <strong v-text="identifier.licenses[0].identifier" />&nbsp;<sup><v-icon x-small>mdi-open-in-new</v-icon></sup>
+              <a
+                :href="identifier.licenses[0].uri"
+                target="_blank">
+                <strong>
+                  {{ identifier.licenses[0].identifier }}
+                </strong>
+                &nbsp;<sup><v-icon x-small>mdi-open-in-new</v-icon></sup>
               </a>
             </p>
             <p
               v-if="identifier.licenses[0].description"
-              class="mt-2"
-              v-text="identifier.licenses[0].description" />
+              class="mt-2">
+              {{ identifier.licenses[0].description }}
+            </p>
           </v-alert>
         </v-card-text>
         <v-card-text>
@@ -755,7 +761,7 @@
               <v-list-item>
                 <v-list-item-title>
                   {{ $t('pages.identifier.subpages.create.summary.record') }} {{ resourceHumanDescription.prefix }}
-                  &quot;<strong v-text="resourceHumanDescription.info" />&quot;
+                  &quot;<strong>{{ resourceHumanDescription.info }}</strong>&quot;
                 </v-list-item-title>
                 <template v-slot:prepend>
                   <v-icon
@@ -775,7 +781,7 @@
                 <v-list-item-title
                   v-if="identifier.licenses.length > 0">
                   {{ $t('pages.identifier.subpages.create.summary.license') }}
-                  &quot;<strong v-text="identifier.licenses[0].identifier" />&quot;
+                  &quot;<strong>{{ identifier.licenses[0].identifier }}</strong>&quot;
                 </v-list-item-title>
                 <v-list-item-title
                   v-else>
@@ -791,7 +797,7 @@
                 v-if="identifier.publisher">
                 <v-list-item-title>
                   {{ $t('pages.identifier.subpages.create.summary.publisher') }}
-                  &quot;<strong v-text="identifier.publisher" />&quot;
+                  &quot;<strong>{{ identifier.publisher }}</strong>&quot;
                 </v-list-item-title>
                 <template v-slot:prepend>
                   <v-icon
diff --git a/dbrepo-ui/components/identifier/Summary.vue b/dbrepo-ui/components/identifier/Summary.vue
index f4a5f7c880fc9618093ca82726159e598c16d998..267693276c18cde26769f387ddc2f3f34ec97689 100644
--- a/dbrepo-ui/components/identifier/Summary.vue
+++ b/dbrepo-ui/components/identifier/Summary.vue
@@ -18,7 +18,9 @@
           <p
             v-for="(title, i) in identifier.titles"
             :key="`t-${i}`">
-            <span v-text="title.title" />
+            <span>
+              {{ title.title }}
+            </span>
           </p>
         </v-list-item>
         <v-list-item
@@ -28,32 +30,42 @@
             v-for="(description, i) in identifier.descriptions"
             :key="`d-${i}`">
             <div
-              v-text="description?.type"
-              class="text-subtitle-2" />
-            <span v-text="description.description" />
+              class="text-subtitle-2">
+              {{ description?.type }}
+            </div>
+            <span>
+              {{ description.description }}
+            </span>
           </p>
         </v-list-item>
         <v-list-item
           :title="$t('pages.identifier.publisher.title')"
           density="compact">
-          <div v-text="identifier.publisher" />
+          <div>
+            {{ identifier.publisher }}
+          </div>
         </v-list-item>
         <v-list-item
           :title="$t('pages.identifier.creators.title')"
           density="compact">
-          <Creators :person-or-orgs="identifier.creators" />
+          <Creators
+            :person-or-orgs="identifier.creators" />
         </v-list-item>
         <v-list-item
           v-if="identifierLang"
           :title="$t('pages.identifier.language.title')"
           density="compact">
-          <div v-text="identifierLang" />
+          <div>
+            {{ identifierLang }}
+          </div>
         </v-list-item>
         <v-list-item
           v-if="publication"
           :title="$t('pages.identifier.publication-date.title')"
           density="compact">
-          <div v-text="publication" />
+          <div>
+            {{ publication }}
+          </div>
         </v-list-item>
         <v-list-item
           v-if="identifier.related_identifiers && identifier.related_identifiers.length > 0"
@@ -75,16 +87,19 @@
             :key="`f-${i}`">
             <a
               v-if="funder.funder_identifier"
-              v-text="funder.funder_name"
-              :href="funder.funder_identifier" />
+              :href="funder.funder_identifier">
+              {{ funder.funder_name }}
+            </a>
             <span
               v-if="funder.award_title"
-              class="ml-1"
-              v-text="funder.award_title" />
+              class="ml-1">
+              {{ funder.award_title }}
+            </span>
             <span
               v-if="funder.award_number"
-              class="ml-1"
-              v-text="`(${funder.award_number})`" />
+              class="ml-1">
+              ({{ funder.award_number }})
+            </span>
           </p>
         </v-list-item>
         <v-list-item
@@ -95,11 +110,14 @@
             v-for="(license, i) in identifier.licenses"
             :key="`l-${i}`">
             <span>
-              <span v-text="i > 0 ? ', ' : ''" />
+              <span>
+                {{ i > 0 ? ', ' : '' }}
+              </span>
               <a
                 v-if="license"
-                v-text="license.identifier"
-                :href="license.uri" />
+                :href="license.uri">
+                {{ license.identifier }}
+              </a>
             </span>
           </p>
         </v-list-item>
diff --git a/dbrepo-ui/components/search/AdvancedSearch.vue b/dbrepo-ui/components/search/AdvancedSearch.vue
index 17a2839c64ce4b7584591c64e1be8f00715d7f28..13de402e019f2a791f0233c4fc611164e46e20d8 100644
--- a/dbrepo-ui/components/search/AdvancedSearch.vue
+++ b/dbrepo-ui/components/search/AdvancedSearch.vue
@@ -110,7 +110,9 @@
             v-if="isEligibleYearRangeSearch"
             dense>
             <v-col>
-              <p v-text="$t('pages.search.publication-range.hint')" />
+              <p>
+                {{ $t('pages.search.publication-range.hint') }}
+              </p>
             </v-col>
           </v-row>
           <v-row
@@ -125,7 +127,9 @@
                 :hint="$t('pages.search.start-year.hint')"
                 :variant="inputVariant"
                 required
-                :rules="[v => !!v || $t('validation.required')]"
+                :rules="[
+                  v => !!v || $t('validation.required')
+                ]"
                 clearable />
             </v-col>
             <v-col cols="3">
@@ -144,12 +148,17 @@
             <v-col>
               <p
                 v-if="isEligibleUnitIndependentSearch"
-                v-text="$t('pages.search.concept-unit.hint')"
-                class="mt-4" />
+                class="mt-4">
+                {{ $t('pages.search.concept-unit.hint') }}
+              </p>
             </v-col>
           </v-row>
-          <v-row v-if="isEligibleConceptOrUnitSearch || isEligibleUnitIndependentSearch" dense>
-            <v-col v-if="isEligibleConceptOrUnitSearch || isEligibleUnitIndependentSearch" cols="3">
+          <v-row
+            v-if="isEligibleConceptOrUnitSearch || isEligibleUnitIndependentSearch"
+            dense>
+            <v-col
+              v-if="isEligibleConceptOrUnitSearch || isEligibleUnitIndependentSearch"
+              cols="3">
               <v-select
                 v-model="advancedSearchData['tables.columns.concept.uri']"
                 clearable
@@ -162,7 +171,9 @@
                 :label="$t('pages.search.concept.label')"
                 :hint="$t('pages.search.concept.hint')" />
             </v-col>
-            <v-col v-if="isEligibleConceptOrUnitSearch || isEligibleUnitIndependentSearch" cols="3">
+            <v-col
+              v-if="isEligibleConceptOrUnitSearch || isEligibleUnitIndependentSearch"
+              cols="3">
               <v-select
                 v-model="advancedSearchData['tables.columns.unit.uri']"
                 clearable
@@ -175,7 +186,9 @@
                 :label="$t('pages.search.unit.label')"
                 :hint="$t('pages.search.unit.hint')" />
             </v-col>
-            <v-col v-if="isEligibleUnitIndependentSearch" cols="3">
+            <v-col
+              v-if="isEligibleUnitIndependentSearch"
+              cols="3">
               <v-text-field
                 v-model="advancedSearchData['t1']"
                 clearable
@@ -185,7 +198,9 @@
                 :label="$t('pages.search.start.label')"
                 :hint="$t('pages.search.start.hint')" />
             </v-col>
-            <v-col v-if="isEligibleUnitIndependentSearch" cols="3">
+            <v-col
+              v-if="isEligibleUnitIndependentSearch"
+              cols="3">
               <v-text-field
                 v-model="advancedSearchData['t2']"
                 clearable
@@ -196,7 +211,8 @@
                 :hint="$t('pages.search.end.hint')" />
             </v-col>
           </v-row>
-          <v-row dense>
+          <v-row
+            dense>
             <v-col>
               <v-btn
                 type="submit"
@@ -205,8 +221,9 @@
                 :loading="loading"
                 :disabled="!valid || loading || loadingFields"
                 size="small"
-                :text="$t('navigation.search')"
-                @click="advancedSearch" />
+                @click="advancedSearch">
+                {{ $t('navigation.search') }}
+              </v-btn>
             </v-col>
           </v-row>
         </v-form>
diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue
index 9ae991620375976dd3c53eee4b5756c35734ad4e..d19ec1598fb39cf0e9a02d4b6aafcf6d722b99c7 100644
--- a/dbrepo-ui/components/subset/Builder.vue
+++ b/dbrepo-ui/components/subset/Builder.vue
@@ -194,7 +194,7 @@
                     <v-col
                       md="8"
                       class="text-center">
-                      <pre v-text="clause.type.toUpperCase()" />
+                      <pre>{{ clause.type.toUpperCase() }}</pre>
                     </v-col>
                   </v-row>
                   <div
@@ -233,13 +233,17 @@
                   <v-alert
                     border="start"
                     color="warning">
-                    <span v-text="$t('pages.subset.subpages.create.expert.warn')" />
-                    <pre style="white-space:inherit;" v-text="unsupported.join(', ')" />
+                    <span>
+                      {{ $t('pages.subset.subpages.create.expert.warn') }}
+                    </span>
+                    <pre style="white-space:inherit;">{{ unsupported.join(', ') }}</pre>
                   </v-alert>
                 </v-col>
               </v-row>
               <v-row dense>
-                <v-col v-text="$t('pages.subset.subpages.create.subtitle')" />
+                <v-col>
+                  {{ $t('pages.subset.subpages.create.subtitle') }}
+                </v-col>
               </v-row>
               <v-row dense>
                 <v-col>
diff --git a/dbrepo-ui/components/table/BlobDownload.vue b/dbrepo-ui/components/table/BlobDownload.vue
index 6ae215e95bf782447f0b0261b470af531a378083..7a96b5e27ba1c738da29770c0b667c3f558d3d9d 100644
--- a/dbrepo-ui/components/table/BlobDownload.vue
+++ b/dbrepo-ui/components/table/BlobDownload.vue
@@ -1,6 +1,6 @@
 <template>
   <div>
-    <pre v-text="description" />
+    <pre>{{ description }}</pre>
   </div>
 </template>
 
diff --git a/dbrepo-ui/components/table/TableImport.vue b/dbrepo-ui/components/table/TableImport.vue
index a4c55404dc32d3bcdd6f3d249a3c3b2fc5db5a8f..84c1011c9b24842c7bb1ed563919af61f6211833 100644
--- a/dbrepo-ui/components/table/TableImport.vue
+++ b/dbrepo-ui/components/table/TableImport.vue
@@ -99,8 +99,9 @@
           v-if="$route.query.location"
           dense>
           <v-col>
-            <p
-              v-text="$t('pages.table.subpages.import.storage.text')" />
+            <p>
+              {{ $t('pages.table.subpages.import.storage.text') }}
+            </p>
             <v-chip
               prepend-icon="mdi-cloud-upload"
               label>
@@ -122,9 +123,13 @@
                   border="start"
                   color="warning">
                   {{ $t('pages.table.subpages.import.separator.warn.prefix') }}
-                  <strong v-text="tableImport.separator"/>
+                  <strong>
+                    {{ tableImport.separator }}
+                  </strong>
                   {{ $t('pages.table.subpages.import.separator.warn.middle') }}
-                  <strong v-text="suggestedAnalyseSeparator"/>
+                  <strong>
+                    {{ suggestedAnalyseSeparator }}
+                  </strong>
                   {{ $t('pages.table.subpages.import.separator.warn.suffix') }}
                 </v-alert>
               </v-col>
@@ -236,7 +241,9 @@
             <v-alert
               border="start"
               color="success">
-              <span v-text="$t(`pages.table.subpages.import.summary.text`)"/>
+              <span>
+                {{ $t(`pages.table.subpages.import.summary.text`)}}
+              </span>
             </v-alert>
           </v-col>
         </v-row>
diff --git a/dbrepo-ui/components/table/TableToolbar.vue b/dbrepo-ui/components/table/TableToolbar.vue
index ef95ad1bd2eee6406925a956a3dda14950070a7d..4c1c86fba656fb0d87f87fac7690c98289a26c9e 100644
--- a/dbrepo-ui/components/table/TableToolbar.vue
+++ b/dbrepo-ui/components/table/TableToolbar.vue
@@ -12,8 +12,9 @@
           type="subtitle"
           width="200" />
         <span
-          v-if="table && $vuetify.display.lgAndUp"
-          v-text="table.name" />
+          v-if="table && $vuetify.display.lgAndUp">
+          {{ table.name}}
+        </span>
       </v-toolbar-title>
       <v-spacer />
       <v-btn
diff --git a/dbrepo-ui/components/user/UserBadge.vue b/dbrepo-ui/components/user/UserBadge.vue
index 65945725e4954a99cda99696626d0a6d947edfd7..71da03d9290ba16928411adda02f3f9eb99aec16 100644
--- a/dbrepo-ui/components/user/UserBadge.vue
+++ b/dbrepo-ui/components/user/UserBadge.vue
@@ -8,9 +8,14 @@
       <v-badge
         inline
         content="you"
-        color="code">{{ creatorName }}</v-badge>
+        color="code">
+        {{ creatorName }}
+      </v-badge>
+    </span>
+    <span
+      v-else>
+      {{ creatorName }}
     </span>
-    <span v-else v-text="creatorName" />
   </p>
 </template>
 
diff --git a/dbrepo-ui/layouts/default.vue b/dbrepo-ui/layouts/default.vue
index fef6700c4f95024619ae0563533a9a42fd3425a7..51b936816299f1565b2517fb0b8daeb01fa5af2f 100644
--- a/dbrepo-ui/layouts/default.vue
+++ b/dbrepo-ui/layouts/default.vue
@@ -17,8 +17,9 @@
       <v-list-item
         class="mt-2">
         <v-list-item-title
-          class="text-h6"
-          v-text="title" />
+          class="text-h6">
+          {{ title }}
+        </v-list-item-title>
       </v-list-item>
       <v-list nav>
         <v-list-item
@@ -49,7 +50,7 @@
           border="start"
           tile
           :type="message.type">
-          {{ message.message }}<span v-if="message.link">&nbsp;&mdash;&nbsp;<a :href="message.link" v-text="message.link_text ? message.link_text : message.link" /></span>
+          {{ message.message }}<span v-if="message.link">&nbsp;&mdash;&nbsp;<a :href="message.link">{{ message.link_text ? message.link_text : message.link }}</a></span>
         </v-alert>
         <div class="d-flex pa-2">
           <v-spacer />
diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue
index e2b139fe8fd2a2616c7dae56b8383e502bdb95e3..432b14e21a60968048440da6f0084eb535aa06a7 100644
--- a/dbrepo-ui/pages/database/[database_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/info.vue
@@ -45,22 +45,30 @@
               <v-list-item
                 :title="$t('pages.database.name.title')"
                 density="compact">
-                <div v-text="database.name" />
+                <div>
+                  {{ database.name }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.database.internal-name.title')"
                 density="compact">
-                <div v-text="database.internal_name" />
+                <div>
+                  {{ database.internal_name }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.database.visibility.title')"
                 density="compact">
-                <div v-text="`${database.is_public ? 'Public' : 'Private'}`" />
+                <div>
+                  {{ database.is_public ? 'Public' : 'Private' }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.database.size.title')"
                 density="compact">
-                <div v-text="databaseSize" />
+                <div>
+                  {{ databaseSize }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.database.owner.title')"
@@ -74,7 +82,9 @@
               <v-list-item
                 :title="$t('pages.database.created.title')"
                 density="compact">
-                <div v-text="createdUTC" />
+                <div>
+                  {{ createdUTC }}
+                </div>
               </v-list-item>
               <v-list-item
                 v-if="access && access.type"
@@ -87,9 +97,14 @@
                       inline
                       :content="databaseExtraInfo"
                       color="secondary">
-                      <span v-text="accessDescription.text" />
+                      <span>
+                        {{ accessDescription.text }}
+                      </span>
                     </v-badge>
-                    <span v-else v-text="accessDescription.text" />
+                    <span
+                      v-else>
+                      {{ accessDescription.text }}
+                    </span>
                   </span>
                 </div>
               </v-list-item>
@@ -97,9 +112,8 @@
                 v-if="access"
                 :title="$t('pages.database.connection.title')"
                 density="compact">
-                <div>
-                  <pre class="pb-1" v-text="jdbcString" />
-                </div>
+                <pre
+                  class="pb-1">{{ jdbcString }}</pre>
               </v-list-item>
               <v-list-item
                 v-if="database.contact"
@@ -131,29 +145,39 @@
               <v-list-item
                 :title="$t('pages.container.name.title')"
                 density="compact">
-                <div v-text="container_name" />
+                <div>
+                  {{ container_name }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.container.internal-name.title')"
                 density="compact">
-                <div v-text="container_internal_name" />
+                <div>
+                  {{ container_internal_name }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.container.image-name.title')"
                 density="compact">
-                <div v-text="image_name" />
+                <div>
+                  {{ image_name }}
+                </div>
               </v-list-item>
               <v-list-item
                 :title="$t('pages.container.image-tag.title')"
                 density="compact">
-                <div v-text="image_version" />
+                <div>
+                  {{ image_version }}
+                </div>
               </v-list-item>
             </v-list>
           </v-card-text>
         </v-card>
       </v-window-item>
     </v-window>
-    <v-breadcrumbs :items="items" class="pa-0 mt-2" />
+    <v-breadcrumbs
+      :items="items"
+      class="pa-0 mt-2" />
   </div>
 </template>
 
diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue
index 1d2d9dca0c873f300ec0a1b3c41795595fd085ee..c205e8c431dc6851d9b9b21c0dc8adc916d9d7f5 100644
--- a/dbrepo-ui/pages/database/[database_id]/settings.vue
+++ b/dbrepo-ui/pages/database/[database_id]/settings.vue
@@ -89,7 +89,10 @@
             :items="database.accesses"
             :items-per-page="10">
             <template v-slot:item.qualified_name="{ item }">
-              <span v-if="item && item.user" v-text="item.user.qualified_name" />
+              <span
+                v-if="item && item.user">
+                {{ item.user.qualified_name }}
+              </span>
             </template>
             <template v-slot:item.action="{ item }">
               <v-btn
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue
index 4902e2c54f243c7a2e4f3df90f3aa16cf7c26753..b063317e074d69d97c99812a74cdd22a5d3feceb 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/data.vue
@@ -11,8 +11,9 @@
           color="secondary"
           width="500" />
         <span
-          v-else
-          v-text="executionUTC" />
+          v-else>
+          {{ executionUTC }}
+        </span>
       </v-toolbar-title>
       <v-spacer />
       <v-btn
diff --git a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue
index 1d9101fbf240d8d577026e53361f2cedb8f6486e..01620ea35eebf78969c6353b9ccaa0e7e9fdfb05 100644
--- a/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/subset/[subset_id]/info.vue
@@ -52,7 +52,7 @@
           <v-list-item
             :title="$t('pages.subset.query-hash.title')"
             density="compact">
-            <pre v-text="`${$t('pages.subset.query-hash.prefix')}${subset.query_hash}`" />
+            <pre>{{ $t('pages.subset.query-hash.prefix') }}{{ subset.query_hash }}</pre>
           </v-list-item>
           <v-list-item
             v-if="executionUTC"
@@ -63,7 +63,7 @@
           <v-list-item
             :title="$t('pages.subset.result-hash.title')"
             density="compact">
-            <pre v-text="result_hash" />
+            <pre>{{ result_hash }}</pre>
           </v-list-item>
           <v-list-item
             :title="$t('pages.subset.result-rows.title')"
@@ -90,8 +90,9 @@
             :title="$t('pages.database.name.title')">
             <NuxtLink
               class="text-primary"
-              :to="`/database/${database.id}`"
-              v-text="database.internal_name" />
+              :to="`/database/${database.id}`">
+              {{ database.internal_name }}
+            </NuxtLink>
           </v-list-item>
         </v-list>
       </v-card-text>
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue
index 72e7501d16625e32d3c05e32072a3a3cb3a719e3..85570c5c363ff0cafda08d389c6f8f055a932ce0 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/data.vue
@@ -60,8 +60,9 @@
       <v-card
         v-if="error"
         variant="flat">
-        <v-card-text
-          v-text="$t('error.table.connection')" />
+        <v-card-text>
+          {{ $t('error.table.connection') }}
+        </v-card-text>
       </v-card>
       <v-data-table-server
         v-if="!error"
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue
index 08b42c0d936c7e034b67e09edbd07203edde12d7..0221c64df232721f3a81b6bf2641ad37ce6fbf32 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/info.vue
@@ -67,9 +67,14 @@
                 inline
                 color="secondary"
                 :content="brokerExtraInfo">
-                <span v-text="accessDescription" />
+                <span>
+                  {{ accessDescription }}
+                </span>
               </v-badge>
-              <span v-else v-text="accessDescription" />
+              <span
+                v-else>
+                {{ accessDescription}}
+              </span>
             </span>
           </v-list-item>
         </v-list>
@@ -87,7 +92,9 @@
           dense>
           <v-list-item
             :title="$t('pages.table.protocol.title')">
-            <span v-text="$t('pages.table.protocol.name')" />
+            <span>
+              {{ $t('pages.table.protocol.name') }}
+            </span>
           </v-list-item>
           <v-list-item
             :title="$t('pages.table.exchange.title')">
@@ -100,7 +107,7 @@
           <v-list-item
             :title="$t('pages.table.routing-key.title')">
             <div v-if="table.routing_key">
-              <pre v-text="table.routing_key" />
+              <pre>{{ table.routing_key }}</pre>
             </div>
           </v-list-item>
           <v-list-item
@@ -113,8 +120,7 @@
                 :content="port.secure ? $t('pages.table.connection.secure') : $t('pages.table.connection.insecure')"
                 :color="port.secure ? 'success' : ''">
               <pre
-                class="pb-1"
-                v-text="amqpString(port)" />
+                class="pb-1">{{ amqpString(port) }}</pre>
               </v-badge>
             </p>
           </v-list-item>
@@ -137,8 +143,9 @@
             :title="$t('pages.database.name.title')">
             <NuxtLink
               class="text-primary"
-              :to="`/database/${database.id}`"
-              v-text="database.internal_name" />
+              :to="`/database/${database.id}`">
+              {{ database.internal_name }}
+            </NuxtLink>
           </v-list-item>
         </v-list>
       </v-card-text>
diff --git a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue
index 7e8aed6717ee9fd22190b56ef6b943f441348974..c9f9882c6cff6bc4b2d91d2857eb3d3b15e37c84 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/[table_id]/schema.vue
@@ -20,8 +20,10 @@
         :items="table.columns">
         <template v-slot:item.is_null_allowed="{ item }">
           <span
-            v-if="item.is_null_allowed"
-            v-text="$t('pages.table.subpages.schema.bullet')" /> {{ item.is_null_allowed }}
+            v-if="item.is_null_allowed">
+            {{ $t('pages.table.subpages.schema.bullet') }}
+          </span>
+          {{ item.is_null_allowed }}
         </template>
         <template v-slot:item.extra="{ item }">
           <pre>{{ extra(item) }}</pre>
@@ -47,8 +49,9 @@
             @click="pick(item, 'concept')" />
           <a
             v-if="!canAssignSemanticInformation && hasConcept(item)"
-            :href="item.concept.uri"
-            v-text="item.concept.name ? item.concept.name : item.concept.uri" />
+            :href="item.concept.uri">
+            {{ item.concept.name ? item.concept.name : item.concept.uri }}
+          </a>
         </template>
         <template v-slot:item.column_unit="{ item }">
           <v-btn
@@ -68,8 +71,9 @@
             @click="pick(item, 'unit')" />
           <a
             v-if="!canAssignSemanticInformation && hasUnit(item)"
-            :href="item.unit.uri"
-            v-text="item.unit.name ? item.unit.name : item.unit.uri" />
+            :href="item.unit.uri">
+            {{ item.unit.name ? item.unit.name : item.unit.uri }}
+          </a>
         </template>
       </v-data-table>
     </v-card>
@@ -84,18 +88,18 @@
           <ul>
             <li v-if="table.constraints.primary_key.length > 0">
               <strong>PRIMARY KEY</strong>
-              (<i v-text="primaryKeysColumns" />)
+              (<i>{{ primaryKeysColumns }}</i>)
             </li>
             <li v-for="(foreignKey, i) in table.constraints.foreign_keys" :key="`fk-${i}`">
-              <strong>FOREIGN KEY</strong> <span v-text="foreignKey.name" /> (<i v-text="foreignKeyColumns(foreignKey)" />) <strong>REFERENCES</strong> <a :href="`/database/${database.id}/table/${foreignKey.referenced_table.id}/schema`" v-text="foreignKeyReferencedTable(foreignKey)" /> (<i v-text="foreignKeyReferencedColumns(foreignKey)" />)
+              <strong>FOREIGN KEY</strong> <span>{{ foreignKey.name }}</span> (<i>{{ foreignKeyColumns(foreignKey) }}</i>) <strong>REFERENCES</strong> <a :href="`/database/${database.id}/table/${foreignKey.referenced_table.id}/schema`">{{ foreignKeyReferencedTable(foreignKey) }}</a> (<i>{{ foreignKeyReferencedColumns(foreignKey) }}</i>)
             </li>
             <li v-for="(uniqueConstraint, i) in table.constraints.uniques" :key="`uk-${i}`">
               <strong>UNIQUE INDEX</strong>
-              (<i v-text="uniqueColumns(uniqueConstraint)" />)
+              (<i>{{ uniqueColumns(uniqueConstraint) }}</i>)
             </li>
             <li v-for="(checkConstraint, i) in table.constraints.checks" :key="`uk-${i}`">
               <strong>CHECK CONSTRAINT</strong>
-              (<i v-text="checkConstraint" />)
+              (<i>{{ checkConstraint }}</i>)
             </li>
           </ul>
         </v-container>
diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue
index e1d71643ea84be7a727ba031715f72ce817b4209..c54314abcba4d714426e4990527d1a53b3a287d6 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue
@@ -22,8 +22,9 @@
               color="info">
               {{ $t('pages.table.subpages.import.dataset.text') }}
               <NuxtLink
-                :href="`/database/${$route.params.database_id}/table/create/schema`"
-                v-text="$t('pages.table.subpages.import.schema.text')" />
+                :href="`/database/${$route.params.database_id}/table/create/schema`">
+                {{ $t('pages.table.subpages.import.schema.text') }}
+              </NuxtLink>
             </v-alert>
           </v-col>
         </v-row>
@@ -140,7 +141,9 @@
                     border="start"
                     color="success">
                     {{ $t('pages.table.subpages.create.summary.text') }}
-                    <strong v-text="table.internal_name"/>
+                    <strong>
+                      {{ table.internal_name }}
+                    </strong>
                   </v-alert>
                 </v-col>
               </v-row>
diff --git a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue
index 79493ec39f3a13054df2e4b605f7da3fdb442805..57f943f22b36ee21f858f15120d5ca812b8b8bfc 100644
--- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue
+++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue
@@ -116,8 +116,9 @@
                 <v-col md="8">
                   <v-alert
                     border="start"
-                    color="success"
-                    v-text="$t('pages.table.subpages.schema.summary.text') + ' ' + table.internal_name" />
+                    color="success">
+                    {{ $t('pages.table.subpages.schema.summary.text') + ' ' + table.internal_name }}
+                  </v-alert>
                 </v-col>
               </v-row>
               <v-row>
diff --git a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue
index 3ec97f2bdaec1109edc16f1bedf0ee22b07a1f52..064fa5f3f20f0c9e1be84fc010e215745834d278 100644
--- a/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/info.vue
@@ -65,8 +65,9 @@
                 :title="$t('pages.database.name.title')">
                 <NuxtLink
                   class="text-primary"
-                  :to="`/database/${database.id}`"
-                  v-text="database.internal_name" />
+                  :to="`/database/${database.id}`">
+                  {{ database.internal_name }}
+                </NuxtLink>
               </v-list-item>
             </v-list>
           </v-card-text>
diff --git a/dbrepo-ui/pages/search.vue b/dbrepo-ui/pages/search.vue
index fe427b25efa416f242eac5405cecdfb9cb7379a1..b2d0f0219515530ac47b84342c66561ba117a288 100644
--- a/dbrepo-ui/pages/search.vue
+++ b/dbrepo-ui/pages/search.vue
@@ -2,17 +2,19 @@
   <div>
     <v-toolbar
       variant="flat">
-      <v-toolbar-title
-        v-text="header" />
+      <v-toolbar-title>
+        {{ header }}
+      </v-toolbar-title>
       <v-spacer />
       <v-btn
         v-if="canCreateDatabase"
         class="mr-4"
         prepend-icon="mdi-plus"
-        :text="$t('toolbars.database.create.text')"
         color="primary"
         variant="flat"
-        @click.stop="createDbDialog = true" />
+        @click.stop="createDbDialog = true">
+        {{ $t('toolbars.database.create.text') }}
+      </v-btn>
     </v-toolbar>
     <v-card
       rounded="0"
@@ -25,7 +27,7 @@
       v-if="isDatabaseSearch"
       :loading="loading"
       :databases="results" />
-    <div v-else>
+    <div>
       <v-card
         v-for="(result, idx) in results"
         :key="idx"
@@ -36,10 +38,16 @@
         <v-divider class="mx-4" />
         <v-card-title
           class="text-primary text-decoration-underline">
-          <a v-if="link(result)" :href="link(result)">{{ title(result) }}</a>
-          <span v-else>{{ title(result) }}</span>
+          <a v-if="link(result)" :href="link(result)">
+            {{ title(result) }}
+          </a>
+          <span v-else>
+            {{ title(result) }}
+          </span>
         </v-card-title>
-        <v-card-subtitle v-text="description(result)" />
+        <v-card-subtitle>
+          {{ description(result) }}
+        </v-card-subtitle>
         <v-card-text>
           <div
             v-if="tags(result).length > 0"
@@ -49,8 +57,9 @@
               :key="i"
               size="small"
               :color="tag.color"
-              variant="outlined"
-              v-text="tag.text" />
+              variant="outlined">
+              {{ tag.text }}
+            </v-chip>
           </div>
         </v-card-text>
       </v-card>
diff --git a/dbrepo-ui/pages/semantic/index.vue b/dbrepo-ui/pages/semantic/index.vue
index c5f12d48f48efe9c60825af6f1078f8ae439feb8..480483aaf83bf68911090c1f7dcdbe051542676d 100644
--- a/dbrepo-ui/pages/semantic/index.vue
+++ b/dbrepo-ui/pages/semantic/index.vue
@@ -1,7 +1,9 @@
 <template>
   <div v-if="canListOntologies">
     <v-toolbar flat>
-      <v-toolbar-title v-text="$t('pages.semantics.title')" />
+      <v-toolbar-title>
+        {{ $t('pages.semantics.title') }}
+      </v-toolbar-title>
       <v-spacer />
       <v-btn
         v-if="canListOntologies"
@@ -13,10 +15,12 @@
         <v-tabs
           v-model="tab"
           color="primary">
-          <v-tab
-            v-text="$t('toolbars.semantic.ontologies.concepts')" />
-          <v-tab
-            v-text="$t('toolbars.semantic.ontologies.units')" />
+          <v-tab>
+            {{ $t('toolbars.semantic.ontologies.concepts') }}
+          </v-tab>
+          <v-tab>
+            {{ $t('toolbars.semantic.ontologies.units') }}
+          </v-tab>
         </v-tabs>
       </template>
     </v-toolbar>
@@ -30,7 +34,10 @@
           :footer-props="footerProps"
           :items-per-page-options="footerProps.itemsPerPageOptions">
           <template v-slot:item.uri="{ item }">
-            <a :href="item.uri" target="_blank" v-text="item.uri" />
+            <a :href="item.uri"
+               target="_blank">
+              {{ item.uri }}
+            </a>
           </template>
           <template v-slot:item.action="{ item }">
             <v-btn
diff --git a/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue b/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue
index 41cfa20426c6d51a12f656ef7cd40bc0dff45405..108ef73e4bfdb6d6f79357c341808dc264302123 100644
--- a/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue
+++ b/dbrepo-ui/pages/semantic/ontology/_ontology_id/index.vue
@@ -1,20 +1,38 @@
 <template>
-  <div v-if="canListOntologies">
+  <div
+    v-if="canListOntologies">
     <v-toolbar flat>
       <v-toolbar-title>
-        <v-btn id="back-btn" plain class="mr-2" to="/semantic/ontology">
+        <v-btn
+          id="back-btn"
+          plain
+          class="mr-2"
+          to="/semantic/ontology">
           <v-icon left>mdi-arrow-left</v-icon>
         </v-btn>
       </v-toolbar-title>
       <v-toolbar-title>
-        <v-skeleton-loader v-if="loading" type="text" class="skeleton-small" />
+        <v-skeleton-loader
+          v-if="loading"
+          type="text"
+          class="skeleton-small" />
         <span v-if="!loading">
-          Ontology <a v-if="ontology" :href="ontology.uri" target="_blank" v-text="ontology.uri" />
+          Ontology
+          <a
+            v-if="ontology"
+            :href="ontology.uri"
+            target="_blank">
+            {{ ontology.uri }}
+          </a>
         </span>
       </v-toolbar-title>
       <v-spacer />
       <v-toolbar-title>
-        <v-btn v-if="canDeleteOntology" :loading="loadingDelete" color="error" @click="deleteOntology">
+        <v-btn
+          v-if="canDeleteOntology"
+          :loading="loadingDelete"
+          color="error"
+          @click="deleteOntology">
           Delete Ontology
         </v-btn>
       </v-toolbar-title>
diff --git a/dbrepo-ui/pages/semantic/ontology/index.vue b/dbrepo-ui/pages/semantic/ontology/index.vue
index c4c5291aefcce046d401c4986fee05a530d897fa..a19b5216c14650cac687b502b2e47706b37ace0a 100644
--- a/dbrepo-ui/pages/semantic/ontology/index.vue
+++ b/dbrepo-ui/pages/semantic/ontology/index.vue
@@ -6,8 +6,9 @@
         size="small"
         icon="mdi-arrow-left"
         to="/semantic" />
-      <v-toolbar-title
-        v-text="ontologies.length + ' ' + $t('toolbars.semantic.ontologies.title')" />
+      <v-toolbar-title>
+        {{ ontologies.length + ' ' + $t('toolbars.semantic.ontologies.title') }}
+      </v-toolbar-title>
       <v-spacer />
       <v-btn
         v-if="canCreateOntology"
diff --git a/dbrepo-ui/test/test_heap.sh b/dbrepo-ui/test/test_heap.sh
new file mode 100755
index 0000000000000000000000000000000000000000..51acc0cf295d63ed794cb655ca8b44184b27e9b4
--- /dev/null
+++ b/dbrepo-ui/test/test_heap.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+CALLS=1000
+CONCURRENCY=10
+ENDPOINT=http://localhost
+
+ab -n "${CALLS}" -c "${CONCURRENCY}" "${ENDPOINT}/"
+ab -n "${CALLS}" -c "${CONCURRENCY}" "${ENDPOINT}/search"
+ab -n "${CALLS}" -c "${CONCURRENCY}" "${ENDPOINT}/login"
+ab -n "${CALLS}" -c "${CONCURRENCY}" "${ENDPOINT}/signup"
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index cb11953b3b0d828ab5db6698276733c921c8653b..7453cd261f18371e8d392f17a36c9deb16b14945 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -320,6 +320,7 @@ services:
         COMMIT: ${CI_COMMIT_SHA:-}
       network: host
     environment:
+      NODE_OPTIONS: "${UI_RUNTIME_OPTIONS:-}"
       NUXT_PUBLIC_API_CLIENT: "${BASE_URL:-http://localhost}"
       NUXT_PUBLIC_API_SERVER: "${BASE_URL:-http://localhost}"
       NUXT_PUBLIC_UPLOAD_CLIENT: "${BASE_URL:-http://localhost}/api/upload/files"
diff --git a/make/test.mk b/make/test.mk
index c3d2cd8804831f25d7450d0f34914c69c6f53477..b3ad94f9ba405a39a921b02cb1cd227535d350b5 100644
--- a/make/test.mk
+++ b/make/test.mk
@@ -15,3 +15,7 @@ test-analyse-service: ## Test the Analyse Service.
 .PHONY: test-lib
 test-lib: ## Test the Python Library.
 	bash ./lib/python/test.sh
+
+.PHONY: test-ui
+test-ui: ## Test the UI.
+	bash ./dbrepo-ui/test/test_heap.sh