diff --git a/aleksis/core/apps.py b/aleksis/core/apps.py
index 648d063a378f30fddbbece6474c3b84a5a65bed6..680299673400ff4824e7dcac4f0b15d30f417754 100644
--- a/aleksis/core/apps.py
+++ b/aleksis/core/apps.py
@@ -27,8 +27,17 @@ class CoreConfig(AppConfig):
         ([2019, 2020], "Tom Teichler", "tom.teichler@teckids.org"),
     )
 
-    def config_updated(self, *args, **kwargs) -> None:
-        clean_scss()
+    def preference_updated(
+        self,
+        sender: Any,
+        section: Optional[str] = None,,
+        name: Optional[str] = None,
+        old_value: Optional[Any] = None,
+        new_value: Optional[Any] = None,
+        **kwargs,
+    ) -> None:
+        if section == "theme":
+            clean_scss()
 
     def post_migrate(
         self,
diff --git a/aleksis/core/util/apps.py b/aleksis/core/util/apps.py
index dbf6159252c0b20aee9fcc422fb21360c7fbc1e0..50c9c242dbd8584480ee3b48fe1619edc3b892f6 100644
--- a/aleksis/core/util/apps.py
+++ b/aleksis/core/util/apps.py
@@ -6,7 +6,7 @@ from django.contrib.auth.signals import user_logged_in, user_logged_out
 from django.db.models.signals import post_migrate, pre_migrate
 from django.http import HttpRequest
 
-from constance.signals import config_updated
+from dynamic_preferences.signals import preference_updated
 from license_expression import Licensing, LicenseSymbol
 from spdx_license_list import LICENSES
 
@@ -31,7 +31,7 @@ class AppConfig(django.apps.AppConfig):
         # Register default listeners
         pre_migrate.connect(self.pre_migrate, sender=self)
         post_migrate.connect(self.post_migrate, sender=self)
-        config_updated.connect(self.config_updated)
+        preference_updated.connect(self.preference_updated)
         user_logged_in.connect(self.user_logged_in)
         user_logged_out.connect(self.user_logged_out)
 
@@ -126,14 +126,16 @@ class AppConfig(django.apps.AppConfig):
 
         # TODO Try getting from distribution if not set
 
-    def config_updated(
+    def preference_updated(
         self,
-        key: Optional[str] = "",
+        sender: Any,
+        section: Optional[str] = None,,
+        name: Optional[str] = None,
         old_value: Optional[Any] = None,
         new_value: Optional[Any] = None,
         **kwargs,
     ) -> None:
-        """ Called on every app instance if a Constance config chagnes, and once on startup
+        """ Called on every app instance if a dynamic preference changes, and once on startup
 
         By default, it does nothing.
         """