diff --git a/core/modules/field_ui/field_ui.api.php b/core/modules/field_ui/field_ui.api.php
index 92cbaf2..1a4a870 100644
--- a/core/modules/field_ui/field_ui.api.php
+++ b/core/modules/field_ui/field_ui.api.php
@@ -123,5 +123,25 @@ function hook_field_widget_settings_summary_alter(&$summary, $context) {
 }
 
 /**
+ * Alters the field options being saved to the default view/form display.
+ *
+ * @param array $options
+ *   An array of view/form display component options.
+ * @param string $display_type
+ *   Either 'view' or 'form', depending if the display being configured is an
+ *   instance of EntityFormDisplayInterface or EntityViewDisplayInterface.
+ * @param \Drupal\Core\Field\FieldConfigInterface $field
+ *   The field config entity.
+ *
+ * @see \Drupal\field_ui\Form\FieldStorageAddForm::configureEntityFormDisplay()
+ * @see \Drupal\field_ui\Form\FieldStorageAddForm::configureEntityViewDisplay()
+ */
+function hook_field_ui_default_display_field_options_alter(array &$options, $display_type, \Drupal\Core\Field\FieldConfigInterface $field) {
+  if ($display_type === 'view' && $field->getName() === 'field_my_awesome_field') {
+    $options['label'] = 'hidden';
+  }
+}
+
+/**
  * @} End of "addtogroup field_types".
  */
diff --git a/core/modules/field_ui/src/Form/FieldStorageAddForm.php b/core/modules/field_ui/src/Form/FieldStorageAddForm.php
index 584cc96..b150bad 100644
--- a/core/modules/field_ui/src/Form/FieldStorageAddForm.php
+++ b/core/modules/field_ui/src/Form/FieldStorageAddForm.php
@@ -4,6 +4,8 @@
 
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Field\FieldConfigInterface;
 use Drupal\Core\Field\FieldTypePluginManagerInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -55,6 +57,13 @@ class FieldStorageAddForm extends FormBase {
   protected $configFactory;
 
   /**
+   * The module handler to invoke the alter hook.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
    * Constructs a new FieldStorageAddForm object.
    *
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
@@ -63,11 +72,14 @@ class FieldStorageAddForm extends FormBase {
    *   The field type plugin manager.
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   The configuration factory.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   The module handler.
    */
-  public function __construct(EntityManagerInterface $entity_manager, FieldTypePluginManagerInterface $field_type_plugin_manager, ConfigFactoryInterface $config_factory) {
+  public function __construct(EntityManagerInterface $entity_manager, FieldTypePluginManagerInterface $field_type_plugin_manager, ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler) {
     $this->entityManager = $entity_manager;
     $this->fieldTypePluginManager = $field_type_plugin_manager;
     $this->configFactory = $config_factory;
+    $this->moduleHandler = $module_handler;
   }
 
   /**
@@ -84,7 +96,8 @@ public static function create(ContainerInterface $container) {
     return new static(
       $container->get('entity.manager'),
       $container->get('plugin.manager.field.field_type'),
-      $container->get('config.factory')
+      $container->get('config.factory'),
+      $container->get('module_handler')
     );
   }
 
@@ -353,8 +366,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         $field = $this->entityManager->getStorage('field_config')->create($field_values);
         $field->save();
 
-        $this->configureEntityFormDisplay($values['field_name'], $widget_id, $widget_settings);
-        $this->configureEntityViewDisplay($values['field_name'], $formatter_id, $formatter_settings);
+        $this->configureEntityFormDisplay($field, $widget_id, $widget_settings);
+        $this->configureEntityViewDisplay($field, $formatter_id, $formatter_settings);
 
         // Always show the field settings step, as the cardinality needs to be
         // configured for new fields.
@@ -387,8 +400,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         ]);
         $field->save();
 
-        $this->configureEntityFormDisplay($field_name);
-        $this->configureEntityViewDisplay($field_name);
+        $this->configureEntityFormDisplay($field);
+        $this->configureEntityViewDisplay($field);
 
         $route_parameters = [
           'field_config' => $field->id(),
@@ -418,14 +431,15 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
   /**
    * Configures the field for the default form mode.
    *
-   * @param string $field_name
-   *   The field name.
+   * @param \Drupal\Core\Field\FieldConfigInterface $field
+   *   The field config entity.
    * @param string|null $widget_id
    *   (optional) The plugin ID of the widget. Defaults to NULL.
    * @param array $widget_settings
    *   (optional) An array of widget settings. Defaults to an empty array.
    */
-  protected function configureEntityFormDisplay($field_name, $widget_id = NULL, array $widget_settings = []) {
+  protected function configureEntityFormDisplay(FieldConfigInterface $field, $widget_id = NULL, array $widget_settings = []) {
+    $field_name = $field->getName();
     $options = [];
     if ($widget_id) {
       $options['type'] = $widget_id;
@@ -434,8 +448,11 @@ protected function configureEntityFormDisplay($field_name, $widget_id = NULL, ar
       }
     }
     // Make sure the field is displayed in the 'default' form mode (using
-    // default widget and settings). It stays hidden for other form modes
-    // until it is explicitly configured.
+    // default widget and settings). It stays hidden for other form modes until
+    // it is explicitly configured, but we let other modules have a say here
+    // before saving the display.
+    $display_type = 'form';
+    $this->moduleHandler->alter('field_ui_default_display_field_options', $options, $display_type, $field);
     entity_get_form_display($this->entityTypeId, $this->bundle, 'default')
       ->setComponent($field_name, $options)
       ->save();
@@ -444,14 +461,15 @@ protected function configureEntityFormDisplay($field_name, $widget_id = NULL, ar
   /**
    * Configures the field for the default view mode.
    *
-   * @param string $field_name
-   *   The field name.
+   * @param \Drupal\Core\Field\FieldConfigInterface $field
+   *   The field config entity.
    * @param string|null $formatter_id
    *   (optional) The plugin ID of the formatter. Defaults to NULL.
    * @param array $formatter_settings
    *   (optional) An array of formatter settings. Defaults to an empty array.
    */
-  protected function configureEntityViewDisplay($field_name, $formatter_id = NULL, array $formatter_settings = []) {
+  protected function configureEntityViewDisplay(FieldConfigInterface $field, $formatter_id = NULL, array $formatter_settings = []) {
+    $field_name = $field->getName();
     $options = [];
     if ($formatter_id) {
       $options['type'] = $formatter_id;
@@ -461,7 +479,10 @@ protected function configureEntityViewDisplay($field_name, $formatter_id = NULL,
     }
     // Make sure the field is displayed in the 'default' view mode (using
     // default formatter and settings). It stays hidden for other view
-    // modes until it is explicitly configured.
+    // modes until it is explicitly configured, but we let other modules have a
+    // say here before saving the display.
+    $display_type = 'view';
+    $this->moduleHandler->alter('field_ui_default_display_field_options', $options, $display_type, $field);
     entity_get_display($this->entityTypeId, $this->bundle, 'default')
       ->setComponent($field_name, $options)
       ->save();
