diff --git a/CHANGES.md b/CHANGES.md
index e235a8f00..db483b802 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -50,6 +50,8 @@ is a number of cores)
 - [COMMENTS] Notifications in Backend, Profile Section, and Mention Email Notification [Taiga #9233](https://tree.taiga.io/project/penpot/us/9233)
 
 ### :bug: Bugs fixed
+
+- Fix missing state refresh on notifications update [Taiga #10253](https://tree.taiga.io/project/penpot/issue/10253)
 - Fix icon visualization on select component [Taiga #8889](https://tree.taiga.io/project/penpot/issue/8889)
 - Fix typo on integration tests docs [Taiga #10112](https://tree.taiga.io/project/penpot/issue/10112)
 - Fix problem with alt key measures being stuck [Taiga #9348](https://tree.taiga.io/project/penpot/issue/9348)
diff --git a/frontend/src/app/main/data/profile.cljs b/frontend/src/app/main/data/profile.cljs
index c69a3fa45..b43ef9f55 100644
--- a/frontend/src/app/main/data/profile.cljs
+++ b/frontend/src/app/main/data/profile.cljs
@@ -14,11 +14,12 @@
    [app.config :as cf]
    [app.main.data.event :as ev]
    [app.main.data.media :as di]
+   [app.main.data.notifications :as ntf]
    [app.main.data.team :as-alias dtm]
    [app.main.repo :as rp]
    [app.main.router :as rt]
    [app.plugins.register :as plugins.register]
-   [app.util.i18n :as i18n]
+   [app.util.i18n :as i18n :refer [tr]]
    [app.util.storage :as storage]
    [beicon.v2.core :as rx]
    [potok.v2.core :as ptk]))
@@ -239,25 +240,24 @@
    [:email-comments [::sm/one-of #{:all :partial :none}]]
    [:email-invites [::sm/one-of #{:all :none}]]])
 
+(def ^:private check-update-notifications-params
+  (sm/check-fn schema:update-notifications))
+
 (defn update-notifications
   [data]
-  (dm/assert!
-   "expected valid parameters"
-   (sm/check schema:update-notifications data))
-
+  (assert (check-update-notifications-params data))
   (ptk/reify ::update-notifications
     ev/Event
     (-data [_] {})
 
+    ptk/UpdateEvent
+    (update [_ state]
+      (update-in state [:profile :props] assoc :notifications data))
+
     ptk/WatchEvent
     (watch [_ _ _]
-      (let [{:keys [on-error on-success]
-             :or {on-error identity
-                  on-success identity}} (meta data)]
-        (->> (rp/cmd! :update-profile-notifications data)
-             (rx/tap on-success)
-             (rx/catch #(do (on-error %) (rx/empty)))
-             (rx/ignore))))))
+      (->> (rp/cmd! :update-profile-notifications data)
+           (rx/map #(ntf/success (tr "dashboard.notifications.notifications-saved")))))))
 
 (defn update-profile-props
   [props]
diff --git a/frontend/src/app/main/ui/settings.cljs b/frontend/src/app/main/ui/settings.cljs
index e66c3f5ad..aa30c4f73 100644
--- a/frontend/src/app/main/ui/settings.cljs
+++ b/frontend/src/app/main/ui/settings.cljs
@@ -17,7 +17,7 @@
    [app.main.ui.settings.change-email]
    [app.main.ui.settings.delete-account]
    [app.main.ui.settings.feedback :refer [feedback-page]]
-   [app.main.ui.settings.notifications :refer [notifications-page]]
+   [app.main.ui.settings.notifications :refer [notifications-page*]]
    [app.main.ui.settings.options :refer [options-page]]
    [app.main.ui.settings.password :refer [password-page]]
    [app.main.ui.settings.profile :refer [profile-page]]
@@ -71,4 +71,4 @@
           [:& access-tokens-page]
 
           :settings-notifications
-          [:& notifications-page])]]]]))
+          [:& notifications-page* {:profile profile}])]]]]))
diff --git a/frontend/src/app/main/ui/settings/notifications.cljs b/frontend/src/app/main/ui/settings/notifications.cljs
index b402b3af8..5779474c7 100644
--- a/frontend/src/app/main/ui/settings/notifications.cljs
+++ b/frontend/src/app/main/ui/settings/notifications.cljs
@@ -9,14 +9,11 @@
   (:require
    [app.common.data :as d]
    [app.common.schema :as sm]
-   [app.main.data.notifications :as ntf]
    [app.main.data.profile :as dp]
-   [app.main.refs :as refs]
    [app.main.store :as st]
    [app.main.ui.components.forms :as fm]
    [app.util.dom :as dom]
    [app.util.i18n :as i18n :refer [tr]]
-   [okulary.core :as l]
    [rumext.v2 :as mf]))
 
 (def default-notification-settings
@@ -24,29 +21,9 @@
    :email-comments :partial
    :email-invites :all})
 
-(def notification-settings-ref
-  (l/derived
-   (fn [profile]
-     (-> (merge default-notification-settings
-                (-> profile :props :notifications))
-         (d/update-vals d/name)))
-   refs/profile))
-
-(defn- on-error
-  [form _]
-  (reset! form nil)
-  (st/emit! (ntf/error (tr "generic.error"))))
-
-(defn- on-success
-  [_]
-  (st/emit! (ntf/success (tr "dashboard.notifications.notifications-saved"))))
-
 (defn- on-submit
-  [form event]
-  (dom/prevent-default event)
-  (let [params (with-meta (:clean-data @form)
-                 {:on-success (partial on-success form)
-                  :on-error (partial on-error form)})]
+  [form _event]
+  (let [params (:clean-data @form)]
     (st/emit! (dp/update-notifications params))))
 
 (def ^:private schema:notifications-form
@@ -55,11 +32,15 @@
    [:email-comments [::sm/one-of #{:all :partial :none}]]
    [:email-invites [::sm/one-of #{:all :partial :none}]]])
 
-(mf/defc notifications-page
-  []
-  (let [settings (mf/deref notification-settings-ref)
-        form    (fm/use-form :schema schema:notifications-form
-                             :initial settings)]
+(mf/defc notifications-page*
+  [{:keys [profile]}]
+  (let [settings (mf/with-memo [profile]
+                   (-> (merge default-notification-settings
+                              (-> profile :props :notifications))
+                       (update-vals d/name)))
+        form     (fm/use-form :schema schema:notifications-form
+                              :initial settings)]
+
     (mf/with-effect []
       (dom/set-html-title (tr "title.settings.notifications")))