diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index 20ed818133d3c58c96a9c303fcdca480a7a8f814..ca04816ee710a846d2ebc973b518e6dd02750fac 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -575,12 +575,14 @@ YARN_INSTALLED_APPS = [
     "vue-router@^3.5.2",
     "vite@^4.0.1",
     "vite-plugin-pwa@^0.14.1",
+    "vite-plugin-top-level-await@^1.2.2",
     "@vitejs/plugin-vue2@^2.2.0",
     "@rollup/plugin-node-resolve@^15.0.1",
     "@rollup/plugin-graphql@^2.0.2",
     "@rollup/plugin-virtual@^3.0.1",
     "rollup-plugin-license@^3.0.1",
     "vue-i18n@^8.0.0",
+    "browserslist-to-esbuild@^1.2.0",
     "@sentry/vue@^7.28.0",
     "prettier@^2.8.1",
     "eslint@^8.26.0",
diff --git a/aleksis/core/vite.config.js b/aleksis/core/vite.config.js
index 2283090317658bed826e7eb52fe7ef0df000375b..fcaf916e41decd4053c9805b8e310b9baa1a2ad8 100644
--- a/aleksis/core/vite.config.js
+++ b/aleksis/core/vite.config.js
@@ -29,11 +29,19 @@ import { nodeResolve } from "@rollup/plugin-node-resolve";
 import graphql from "@rollup/plugin-graphql";
 import virtual from "@rollup/plugin-virtual";
 import { VitePWA } from "vite-plugin-pwa";
+import topLevelAwait from "vite-plugin-top-level-await";
+import browserslistToEsbuild from "browserslist-to-esbuild";
 const license = require("rollup-plugin-license");
 
 // Read the hints writen by `aleksis-admin vite`
 const django_values = JSON.parse(fs.readFileSync("./django-vite-values.json"));
 
+// Browsers supported by us
+const browsersList = [
+  "defaults and supports es6-module",
+  ">0.2% in de and supports es6-module",
+];
+
 /**
  * Generate code to import messages from a single AlekSIS app.
  */
@@ -98,7 +106,7 @@ export default defineConfig({
   build: {
     outDir: path.resolve("./vite_bundles/"),
     manifest: true,
-    target: ["firefox102", "chrome108", "safari16"],
+    target: browserslistToEsbuild(browsersList),
     rollupOptions: {
       input: django_values.coreAssetDir + "/index.js",
       output: {
@@ -160,6 +168,7 @@ export default defineConfig({
     vue(),
     nodeResolve({ modulePaths: [path.resolve(django_values.node_modules)] }),
     graphql(),
+    topLevelAwait(),
     license({
       // A package.json will be written here by `aleksis-admin vite`
       cwd: path.resolve(django_values.cacheDir),