diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 18fb48f52ffbbafbe34b475bd8f54cc960feb2fe..03ad79e3bc2413d5c5518b2cc81bdcddb322e0ad 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,8 +14,11 @@ Fixed
 
 * It wasn't possible to run data checks due to broken color data checks.
 * Recurrence information for calendar events weren't removed on deletion.
-* Recurring events without until value weren't shown.
+* Full day events didn't work in calendar.
 * [Dev] AddressInputType missed country field.
+* Detail pages, e.g. for groups, did not work anymore.
+* The configured theme colors were not used by the frontend.
+* Recurring events without until value weren't shown.
 
 `4.0`_ - 2025-03-29
 -------------------
diff --git a/aleksis/core/frontend/app/vuetify.js b/aleksis/core/frontend/app/vuetify.js
index b10c696946e6310a293b408a9e1c9aae050ddd6d..d7fd8877b985bc857f995122b60317e3be892c4b 100644
--- a/aleksis/core/frontend/app/vuetify.js
+++ b/aleksis/core/frontend/app/vuetify.js
@@ -40,10 +40,6 @@ const vuetifyOpts = {
   theme: {
     options: {
       customProperties: true,
-      themeCache: {
-        get: (key) => localStorage.getItem(key),
-        set: (key, value) => localStorage.setItem(key, value),
-      },
     },
   },
 };
diff --git a/aleksis/core/frontend/plugins/aleksis.js b/aleksis/core/frontend/plugins/aleksis.js
index e268fc6c344c31a5720f9378dc68316c633b49c0..e83385ef0b8825be50288f05f900a90dddf1c608 100644
--- a/aleksis/core/frontend/plugins/aleksis.js
+++ b/aleksis/core/frontend/plugins/aleksis.js
@@ -56,36 +56,42 @@ AleksisVue.install = function (Vue) {
   Vue.$registerGlobalComponents = function () {
     const globalComponents = {
       // General stuff
-      AvatarClickbox: "../components/generic/AvatarClickbox.vue",
-      CalendarWithControls: "../components/calendar/CalendarWithControls.vue",
-      ErrorPage: "../components/app/ErrorPage.vue",
-      MessageBox: "../components/generic/MessageBox.vue",
-      SmallContainer: "../components/generic/SmallContainer.vue",
+      AvatarClickbox: import("../components/generic/AvatarClickbox.vue"),
+      CalendarWithControls: import(
+        "../components/calendar/CalendarWithControls.vue"
+      ),
+      ErrorPage: import("../components/app/ErrorPage.vue"),
+      MessageBox: import("../components/generic/MessageBox.vue"),
+      SmallContainer: import("../components/generic/SmallContainer.vue"),
 
       // Layout
-      DetailView: "../components/generic/DetailView.vue",
-      ListView: "../components/generic/ListView.vue",
+      DetailView: import("../components/generic/DetailView.vue"),
+      ListView: import("../components/generic/ListView.vue"),
 
       // Buttons:
-      BackButton: "../components/generic/BackButton.vue",
-      ButtonMenu: "../components/generic/ButtonMenu.vue",
-      CancelButton: "../components/generic/buttons/CancelButton.vue",
-      CreateButton: "../components/generic/buttons/CreateButton.vue",
-      DeleteButton: "../components/generic/buttons/DeleteButton.vue",
-      DialogCloseButton: "../components/generic/buttons/DialogCloseButton.vue",
-      EditButton: "../components/generic/buttons/EditButton.vue",
-      FabButton: "../components/generic/buttons/FabButton.vue",
-      FilterButton: "../components/generic/buttons/FilterButton.vue",
-      IconButton: "../components/generic/buttons/IconButton.vue",
-      PrimaryActionButton:
-        "../components/generic/buttons/PrimaryActionButton.vue",
-      SaveButton: "../components/generic/buttons/SaveButton.vue",
-      SecondaryActionButton:
-        "../components/generic/buttons/SecondaryActionButton.vue",
+      BackButton: import("../components/generic/BackButton.vue"),
+      ButtonMenu: import("../components/generic/ButtonMenu.vue"),
+      CancelButton: import("../components/generic/buttons/CancelButton.vue"),
+      CreateButton: import("../components/generic/buttons/CreateButton.vue"),
+      DeleteButton: import("../components/generic/buttons/DeleteButton.vue"),
+      DialogCloseButton: import(
+        "../components/generic/buttons/DialogCloseButton.vue"
+      ),
+      EditButton: import("../components/generic/buttons/EditButton.vue"),
+      FabButton: import("../components/generic/buttons/FabButton.vue"),
+      FilterButton: import("../components/generic/buttons/FilterButton.vue"),
+      IconButton: import("../components/generic/buttons/IconButton.vue"),
+      PrimaryActionButton: import(
+        "../components/generic/buttons/PrimaryActionButton.vue"
+      ),
+      SaveButton: import("../components/generic/buttons/SaveButton.vue"),
+      SecondaryActionButton: import(
+        "../components/generic/buttons/SecondaryActionButton.vue"
+      ),
     };
 
-    for (let [name, path] of Object.entries(globalComponents)) {
-      Vue.component(name, () => import(path));
+    for (let [name, module] of Object.entries(globalComponents)) {
+      Vue.component(name, () => module);
     }
   };
 
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index b0cbc0c09af83511c1bd10cba2f297897ae16046..bb6e29a59e49b21f3477b38acb3749143f99c30b 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -1760,9 +1760,9 @@ class CalendarEvent(
     @property
     def real_datetime_start(self) -> datetime:
         """Get real start datetime of this event."""
-        if hasattr(self, "odatetime"):
+        if hasattr(self, "odatetime") and self.odatetime:
             return self.get_in_timezone(self.odatetime)
-        elif hasattr(self, "odate"):
+        elif hasattr(self, "odate") and self.odate:
             return self.odate.date()
         elif self.datetime_start:
             return self.get_in_timezone(self.datetime_start)
@@ -1771,11 +1771,11 @@ class CalendarEvent(
     @property
     def real_datetime_end(self) -> datetime:
         """Get real end datetime of this event."""
-        if hasattr(self, "odatetime"):
+        if hasattr(self, "odatetime") and self.odatetime:
             return self.get_in_timezone(self.odatetime + self.duration)
         elif self.datetime_end:
             return self.get_in_timezone(self.datetime_end)
-        elif hasattr(self, "odate"):
+        elif hasattr(self, "odate") and self.odate:
             # RFC 5545 states that the end date is not inclusive
             return (self.odate + self.duration + timedelta(days=1)).date()
         return self.date_end + timedelta(days=1)