diff --git a/core/modules/menu_ui/menu_ui.module b/core/modules/menu_ui/menu_ui.module
index 92254c2..a2588e8 100644
--- a/core/modules/menu_ui/menu_ui.module
+++ b/core/modules/menu_ui/menu_ui.module
@@ -17,7 +17,9 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\menu_link_content\Entity\MenuLinkContent;
+use Drupal\node\Entity\NodeType;
 use Drupal\node\NodeTypeInterface;
+use Drupal\system\MenuInterface;
 use Drupal\system\Entity\Menu;
 use Drupal\node\NodeInterface;
 
@@ -112,6 +114,21 @@ function menu_ui_menu_delete(Menu $menu) {
   if (\Drupal::moduleHandler()->moduleExists('block')) {
     \Drupal::service('plugin.manager.block')->clearCachedDefinitions();
   }
+
+  if (\Drupal::moduleHandler()->moduleExists('node')) {
+    // Remove this menu from node types referencing the deleted menu.
+    $node_types = NodeType::loadMultiple();
+    foreach ($node_types as $node_type) {
+      /** @var \Drupal\node\NodeTypeInterface $node_type */
+      $menu_ids = $node_type->getThirdPartySetting('menu_ui', 'available_menus', []);
+      if (in_array($menu->id(), $menu_ids)) {
+        $menu_ids = array_diff($menu_ids, [$menu->id()]);
+        $node_type
+          ->setThirdPartySetting('menu_ui', 'available_menus', $menu_ids)
+          ->save();
+      }
+    }
+  }
 }
 
 /**
@@ -272,12 +289,12 @@ function menu_ui_form_node_form_alter(&$form, FormStateInterface $form_state) {
   $node_type = $node->type->entity;
   /** @var \Drupal\Core\Menu\MenuParentFormSelectorInterface $menu_parent_selector */
   $menu_parent_selector = \Drupal::service('menu.parent_form_selector');
-  $menu_names = menu_ui_get_menus();
   $type_menus = $node_type->getThirdPartySetting('menu_ui', 'available_menus', array('main'));
-  $available_menus = array();
-  foreach ($type_menus as $menu) {
-    $available_menus[$menu] = $menu_names[$menu];
-  }
+  // Load menus via storage. If available menu ID's are invalid then menu load
+  // will fail silently.
+  $available_menus = array_map(function(MenuInterface $menu) {
+    return $menu->label();
+  }, Menu::loadMultiple($type_menus));
   if ($defaults['id']) {
     $default = $defaults['menu_name'] . ':' . $defaults['parent'];
   }
diff --git a/core/modules/menu_ui/src/Tests/MenuNodeTest.php b/core/modules/menu_ui/src/Tests/MenuNodeTest.php
index 3fc8423..d939424 100644
--- a/core/modules/menu_ui/src/Tests/MenuNodeTest.php
+++ b/core/modules/menu_ui/src/Tests/MenuNodeTest.php
@@ -2,9 +2,11 @@
 
 namespace Drupal\menu_ui\Tests;
 
+use Drupal\Core\Url;
 use Drupal\simpletest\WebTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\menu_link_content\Entity\MenuLinkContent;
+use Drupal\system\Entity\Menu;
 use Drupal\node\Entity\Node;
 
 /**
@@ -22,6 +24,13 @@ class MenuNodeTest extends WebTestBase {
   protected $editor;
 
   /**
+   * A test content type.
+   *
+   * @var \Drupal\node\NodeTypeInterface
+   */
+  protected $contentType;
+
+  /**
    * Modules to enable.
    *
    * @var array
@@ -34,7 +43,7 @@ protected function setUp() {
     $this->drupalPlaceBlock('system_menu_block:main');
     $this->drupalPlaceBlock('page_title_block');
 
-    $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
+    $this->contentType = $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
 
     $this->editor = $this->drupalCreateUser(array(
       'access administration pages',
@@ -338,4 +347,46 @@ function testMultilingualMenuNodeFormWidget() {
     $this->assertFieldById('edit-menu-title', $translated_node_title);
   }
 
+  /**
+   * Test the node form with invalid menu settings.
+   *
+   * Checks whether menu settings fields on node form are valid even if settings
+   * contain invalid menu_ui configuration.
+   */
+  function testNodeFormInvalidMenu() {
+    $menu = Menu::create([
+      'id' => $this->randomMachineName(),
+      'label' => $this->randomString(),
+    ]);
+    $menu->save();
+    // Non-existent menu ID:
+    $menu_id_decoy = $this->randomMachineName();
+
+    $menu_ids = [
+      $menu->id(),
+      $menu_id_decoy,
+    ];
+    $this->contentType
+      ->setThirdPartySetting('menu_ui', 'available_menus', $menu_ids)
+      ->save();
+
+    $menu_link_content = MenuLinkContent::create([
+      'title' => $this->randomString(),
+      'link' => ['uri' => 'route:<front>'],
+      'menu_name' => $menu->id(),
+    ]);
+    $menu_link_content->save();
+
+    $url = Url::fromRoute('node.add')
+      ->setRouteParameter('node_type', $this->contentType->id());
+    $this->drupalGet($url);
+
+    $select_id = 'edit-menu-menu-parent';
+    $options_count = $this->xpath('//select[@id="' . $select_id . '"]/option');
+    $this->assertEqual(2, count($options_count), 'There are two options in the menu parent select field.');
+    $this->assertOption($select_id, $menu->id() . ':');
+    $this->assertOption($select_id, $menu->id() . ':' . $menu_link_content->getPluginId());
+    $this->assertNoOption($select_id, $menu_id_decoy . ':');
+  }
+
 }
diff --git a/core/modules/menu_ui/tests/src/Kernel/MenuNodeTest.php b/core/modules/menu_ui/tests/src/Kernel/MenuNodeTest.php
new file mode 100644
index 0000000..059e3c6
--- /dev/null
+++ b/core/modules/menu_ui/tests/src/Kernel/MenuNodeTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\Tests\menu_ui\Kernel;
+
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\node\Entity\NodeType;
+use Drupal\system\Entity\Menu;
+
+/**
+ * Tests node type settings are updated when menus are changed.
+ *
+ * @group menu_ui
+ */
+class MenuNodeTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['system', 'menu_ui', 'node', 'user', 'field', 'text'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installConfig(['menu_ui', 'node']);
+    $this->installEntitySchema('node');
+  }
+
+  /**
+   * Tests whether node type available menus are updated when a menu is deleted.
+   */
+  public function testNodeTypeAvailableMenu() {
+    $menu = Menu::create(['id' => $this->randomMachineName()]);
+    $menu->save();
+    $node_type = NodeType::create(['type' => $this->randomMachineName()])
+      ->setThirdPartySetting('menu_ui', 'available_menus', [$menu->id()]);
+    $node_type->save();
+    $menu->delete();
+
+    $node_type = NodeType::load($node_type->id());
+    $menu_ids = $node_type->getThirdPartySetting('menu_ui', 'available_menus');
+    $this->assertFalse(in_array($menu->id(), $menu_ids), 'Content type does not contain deleted menu in available_menus setting.');
+  }
+
+}
