diff --git a/core/lib/Drupal/Core/Entity/Field/FieldTypePluginManager.php b/core/lib/Drupal/Core/Entity/Field/FieldTypePluginManager.php
index 5269769..6ea2e82 100644
--- a/core/lib/Drupal/Core/Entity/Field/FieldTypePluginManager.php
+++ b/core/lib/Drupal/Core/Entity/Field/FieldTypePluginManager.php
@@ -29,6 +29,13 @@ class FieldTypePluginManager extends DefaultPluginManager {
   );
 
   /**
+   * An array of field type options.
+   *
+   * @var array
+   */
+  protected $fieldTypeOptions;
+
+  /**
    * Constructs the FieldTypePluginManager object
    *
    * @param \Traversable $namespaces
@@ -81,4 +88,36 @@ public function getDefaultInstanceSettings($type) {
     return isset($info['instance_settings']) ? $info['instance_settings'] : array();
   }
 
+  /**
+   * Returns an array of field type options.
+   *
+   * @param string|null $type
+   *   (optional) The name of a field type, or NULL to retrieve all field type
+   *   options. Defaults to NULL.
+   *
+   * @return array
+   *   If no field type is provided, returns an array of all field type labels,
+   *   keyed by field type machine name.
+   */
+  public function getOptions($type = NULL) {
+    if (!isset($this->fieldTypeOptions)) {
+      $options = array();
+      // Gather valid field types.
+      foreach ($this->getDefinitions() as $field_type => $definition) {
+        // Skip field types which should not be added via user interface.
+        if (empty($definition['no_ui'])) {
+          $options[$field_type] = $definition['label'];
+        }
+      }
+      asort($options);
+      $this->fieldTypeOptions = $options;
+    }
+
+    if (isset($type)) {
+      return !empty($this->fieldTypeOptions[$type]) ? $this->fieldTypeOptions[$type] : array();
+    }
+
+    return $this->fieldTypeOptions;
+  }
+
 }
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
index a2dbb68..501c14d 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/FieldOverview.php
@@ -167,15 +167,7 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL,
       }
     }
 
-    // Gather valid field types.
-    $field_type_options = array();
-    foreach ($field_types as $name => $field_type) {
-      // Skip field types which should not be added via user interface.
-      if (empty($field_type['no_ui'])) {
-        $field_type_options[$name] = $field_type['label'];
-      }
-    }
-    asort($field_type_options);
+    $field_type_options = $this->fieldTypeManager->getOptions();
 
     // Additional row: add new field.
     if ($field_type_options) {
