diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
index 29e00a3..d76a11d 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
@@ -285,8 +285,18 @@ public function hasNewEntity() {
    */
   public static function calculateDependencies(FieldDefinitionInterface $field_definition) {
     $dependencies = [];
+    // Create dependencies on target bundles.
+    $target_entity_type = \Drupal::entityManager()->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type'));
+    $handler_settings = $field_definition->getSetting('handler_settings');
+    if (isset($handler_settings['target_bundles'])) {
+      foreach ($handler_settings['target_bundles'] as $target_bundle) {
+        // Create dependency on the bundle.
+        $bundle_config_dependency = $target_entity_type->getBundleConfigDependency($target_bundle);
+        $dependencies[$bundle_config_dependency['type']][] = $bundle_config_dependency['name'];
+      }
+    }
+    // Create dependencies on default value entities, if any.
     if ($default_value = $field_definition->getDefaultValueLiteral()) {
-      $target_entity_type = \Drupal::entityManager()->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type'));
       foreach ($default_value as $value) {
         if (is_array($value) && isset($value['target_uuid'])) {
           $entity = \Drupal::entityManager()->loadEntityByUuid($target_entity_type->id(), $value['target_uuid']);
@@ -306,19 +316,34 @@ public static function calculateDependencies(FieldDefinitionInterface $field_def
    */
   public static function onDependencyRemoval(FieldDefinitionInterface $field_definition, array $dependencies) {
     $changed = FALSE;
+    $target_entity_type = \Drupal::entityManager()->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type'));
+    $handler_settings = $field_definition->getSetting('handler_settings');
+    if (isset($handler_settings['target_bundles'])) {
+      $target_bundles_changed = FALSE;
+      foreach ($handler_settings['target_bundles'] as $target_bundle) {
+        $bundle_config_dependency = $target_entity_type->getBundleConfigDependency($target_bundle);
+        if (isset($dependencies[$bundle_config_dependency['type']][$bundle_config_dependency['name']])) {
+          unset($handler_settings['target_bundles'][$target_bundle]);
+          $target_bundles_changed = $changed = TRUE;
+        }
+      }
+      if ($target_bundles_changed) {
+        $field_definition->setSetting('handler_settings', $handler_settings);
+      }
+    }
     if ($default_value = $field_definition->getDefaultValueLiteral()) {
-      $target_entity_type = \Drupal::entityManager()->getDefinition($field_definition->getFieldStorageDefinition()->getSetting('target_type'));
+      $default_value_changed = FALSE;
       foreach ($default_value as $key => $value) {
         if (is_array($value) && isset($value['target_uuid'])) {
           $entity = \Drupal::entityManager()->loadEntityByUuid($target_entity_type->id(), $value['target_uuid']);
           // @see \Drupal\Core\Field\EntityReferenceFieldItemList::processDefaultValue()
           if ($entity && isset($dependencies[$entity->getConfigDependencyKey()][$entity->getConfigDependencyName()])) {
             unset($default_value[$key]);
-            $changed = TRUE;
+            $default_value_changed = $changed = TRUE;
           }
         }
       }
-      if ($changed) {
+      if ($default_value_changed) {
         $field_definition->setDefaultValue($default_value);
       }
     }
