diff --git a/core/modules/quickedit/src/MetadataGenerator.php b/core/modules/quickedit/src/MetadataGenerator.php
index f01256f..3563f9f 100644
--- a/core/modules/quickedit/src/MetadataGenerator.php
+++ b/core/modules/quickedit/src/MetadataGenerator.php
@@ -73,7 +73,11 @@ public function generateFieldMetadata(FieldItemListInterface $items, $view_mode)
     }
 
     // Early-return if no editor is available.
-    $formatter_id = EntityViewDisplay::collectRenderDisplay($entity, $view_mode)->getRenderer($field_name)->getPluginId();
+    $formatter = EntityViewDisplay::collectRenderDisplay($entity, $view_mode)->getRenderer($field_name);
+    if (empty($formatter)) {
+      return ['access' => FALSE];
+    }
+    $formatter_id = $formatter->getPluginId();
     $editor_id = $this->editorSelector->getEditor($formatter_id, $items);
     if (!isset($editor_id)) {
       return ['access' => FALSE];
diff --git a/core/modules/quickedit/tests/src/Kernel/MetadataGeneratorTest.php b/core/modules/quickedit/tests/src/Kernel/MetadataGeneratorTest.php
index 75f3030..ef4d2d5 100644
--- a/core/modules/quickedit/tests/src/Kernel/MetadataGeneratorTest.php
+++ b/core/modules/quickedit/tests/src/Kernel/MetadataGeneratorTest.php
@@ -87,11 +87,25 @@ public function testSimpleEntityType() {
       'number_integer',
       []
     );
+    $field_3_name = 'field_without_formatter';
+    $field_3_label = 'A field without a formatter';
+    $this->createFieldWithStorage(
+      $field_3_name, 'integer', 1, $field_3_label,
+      // Instance settings.
+      [],
+      // Widget type & settings.
+      NULL,
+      [],
+      // no formatter available.
+      NULL,
+      []
+    );
 
     // Create an entity with values for this text field.
     $entity = EntityTest::create();
     $entity->{$field_1_name}->value = 'Test';
     $entity->{$field_2_name}->value = 42;
+    $entity->{$field_3_name}->value = 1;
     $entity->save();
     $entity = EntityTest::load($entity->id());
 
@@ -114,6 +128,14 @@ public function testSimpleEntityType() {
       'editor' => 'form',
     ];
     $this->assertEqual($expected_2, $metadata_2, 'The correct metadata is generated for the second field.');
+
+    // Verify metadata for field 3.
+    $items_3 = $entity->get($field_3_name);
+    $metadata_3 = $this->metadataGenerator->generateFieldMetadata($items_3, 'default');
+    $expected_3 = [
+      'access' => FALSE,
+    ];
+    $this->assertEqual($expected_3, $metadata_3, 'No metadata is generated for the third field.');
   }
 
   /**
diff --git a/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php b/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php
index 8cc2d2f..f008585 100644
--- a/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php
+++ b/core/modules/quickedit/tests/src/Kernel/QuickEditTestBase.php
@@ -86,20 +86,24 @@ protected function createFieldWithStorage($field_name, $type, $cardinality, $lab
     ]);
     $this->fields->$field->save();
 
-    entity_get_form_display('entity_test', 'entity_test', 'default')
-      ->setComponent($field_name, [
-        'type' => $widget_type,
-        'settings' => $widget_settings,
-      ])
-      ->save();
+    if (!empty($widget_type)) {
+      entity_get_form_display('entity_test', 'entity_test', 'default')
+        ->setComponent($field_name, [
+          'type' => $widget_type,
+          'settings' => $widget_settings,
+        ])
+        ->save();
+    }
 
-    entity_get_display('entity_test', 'entity_test', 'default')
-      ->setComponent($field_name, [
-        'label' => 'above',
-        'type' => $formatter_type,
-        'settings' => $formatter_settings,
-      ])
-      ->save();
+    if (!empty($formatter_type)) {
+      entity_get_display('entity_test', 'entity_test', 'default')
+        ->setComponent($field_name, [
+          'label' => 'above',
+          'type' => $formatter_type,
+          'settings' => $formatter_settings,
+        ])
+        ->save();
+    }
   }
 
 }
