diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module
index 40e9bc92e9..c9a4633b36 100644
--- a/core/modules/menu_ui/menu_ui.module
+++ b/core/modules/menu_ui/menu_ui.module
@@ -108,22 +108,38 @@ function _menu_ui_node_save(NodeInterface $node, array $values) {
       $entity = $entity->getUntranslated();
       $entity->set($entity->getEntityType()->getKey('langcode'), $node->language()->getId());
     }
+    // Check if the value has changed before updating.
+    $isChanged = FALSE;
+    foreach (['title','description','menu_name','parent'] as $field) {
+      if ($entity->$field->value !== trim($values[$field])) {
+        $entity->$field->value = trim($values[$field]);
+        $isChanged = TRUE;
+      }
+    }
+    if ($entity->weight->value !== trim($values['weight'])) {
+      $entity->weight->value = $values['weight'] ?? 0;
+      $isChanged = TRUE;
+    }
+    if ($isChanged) {
+      $entity->isDefaultRevision($node->isDefaultRevision());
+      $entity->save();
+    }
   }
   else {
     // Create a new menu_link_content entity.
     $entity = MenuLinkContent::create([
       'link' => ['uri' => 'entity:node/' . $node->id()],
       'langcode' => $node->language()->getId(),
+      'title' => trim($values['title']),
+      'description' => trim($values['description']),
+      'menu_name' => trim($values['menu_name']),
+      'parent' => trim($values['parent']),
+      'weight' => $values['weight'] ?? 0,
     ]);
     $entity->enabled->value = 1;
+    $entity->isDefaultRevision($node->isDefaultRevision());
+    $entity->save();
   }
-  $entity->title->value = trim($values['title']);
-  $entity->description->value = trim($values['description']);
-  $entity->menu_name->value = $values['menu_name'];
-  $entity->parent->value = $values['parent'];
-  $entity->weight->value = $values['weight'] ?? 0;
-  $entity->isDefaultRevision($node->isDefaultRevision());
-  $entity->save();
 }
 
 /**
