diff --git a/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue b/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue
index 96a10002758721b2220ace2460c02607b6bb2214..dd0d8e725b4cbc80448113818a177584e948fda7 100644
--- a/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue
+++ b/aleksis/apps/maka/frontend/components/grades/UpdateOrCreateGrade.vue
@@ -1,5 +1,5 @@
 <script>
-import { createGrades } from "./grades.graphql";
+import { createGrades, updateGrades } from "./grades.graphql";
 import mutateMixin from "aleksis.core/mixins/mutateMixin.js";
 
 export default {
@@ -58,6 +58,31 @@ export default {
         // TODO
         if (this.value) {
           // → Preexisting grade, edit mutation
+          this.mutate(
+            updateGrades,
+            {
+              input: [
+                {
+                  id: this.value.id,
+                  person: this.personId,
+                  effort: this.effort.id,
+                  grade: newValue,
+                },
+              ],
+            },
+            (storedEfforts, incomingGrades) => {
+              const effort = storedEfforts.find(
+                (effort) => effort.id === this.effort.id,
+              );
+
+              incomingGrades.forEach((newGrade) => {
+                const index = effort.grades.findIndex(g => g.id === newGrade.id);
+                effort.grades[index].grade = newGrade.grade;
+              });
+
+              return storedEfforts;
+            },
+          );
         } else {
           // Create and return a grade object
           this.mutate(