diff --git a/modules/features_ui/src/Form/FeaturesEditForm.php b/modules/features_ui/src/Form/FeaturesEditForm.php
index 22b4005..8545f93 100644
--- a/modules/features_ui/src/Form/FeaturesEditForm.php
+++ b/modules/features_ui/src/Form/FeaturesEditForm.php
@@ -546,7 +546,13 @@ class FeaturesEditForm extends FormBase {
     // Make a map of any config specifically excluded and/or required.
     foreach (array('excluded', 'required') as $constraint) {
       $this->{$constraint} = array();
-      $info = !empty($this->package->getFeaturesInfo()[$constraint]) ? $this->package->getFeaturesInfo()[$constraint] : array();
+      if (($constraint == 'required') &&  (empty($this->required) || !is_array($this->required))) {
+        // If required is True or empty array, add all config as required
+        $info = $this->package->getConfigOrig();
+      }
+      else {
+        $info = !empty($this->package->getFeaturesInfo()[$constraint]) ? $this->package->getFeaturesInfo()[$constraint] : array();
+      }
       foreach ($info as $item_name) {
         if (!isset($config[$item_name])) {
           continue;
@@ -807,9 +813,19 @@ class FeaturesEditForm extends FormBase {
     // Save it first just to create it in case it's a new package.
     $this->featuresManager->setPackage($this->package);
 
-    $this->package->setConfig($this->updatePackageConfig($form_state));
+    $new_config = $this->updatePackageConfig($form_state);
+    $this->package->setConfig($new_config);
     $this->package->setExcluded($this->updateExcluded());
-    $this->package->setRequired($this->updateRequired());
+    $required = $this->updateRequired();
+    $diff = array_diff($required, $new_config);
+    if (empty($diff)) {
+      // If all required config is exported, just set required to TRUE
+      // instead of duplicating the entire list of config
+      $this->package->setRequired(TRUE);
+    }
+    else {
+      $this->package->setRequired($required);
+    }
     // Now save it with the selected config data.
     $this->featuresManager->setPackage($this->package);
 
diff --git a/src/Plugin/FeaturesAssignment/FeaturesAssignmentPackages.php b/src/Plugin/FeaturesAssignment/FeaturesAssignmentPackages.php
index 51631cf..1fa363c 100644
--- a/src/Plugin/FeaturesAssignment/FeaturesAssignmentPackages.php
+++ b/src/Plugin/FeaturesAssignment/FeaturesAssignmentPackages.php
@@ -37,23 +37,27 @@ class FeaturesAssignmentPackages extends FeaturesAssignmentMethodBase {
       $features_info = $package->getFeaturesInfo();
       $short_name = $this->assigner->getBundle($package->getBundle())->getShortName($extension->getName());
 
-      if (!empty($features_info['excluded']) || !empty($features_info['required'])) {
-        // Copy over package excluded settings, if any.
-        if (!empty($features_info['excluded'])) {
-          $config_collection = $this->featuresManager->getConfigCollection();
-          foreach ($features_info['excluded'] as $config_name) {
-            if (isset($config_collection[$config_name])) {
-              $package_excluded = $config_collection[$config_name]->getPackageExcluded();
-              $package_excluded[] = $short_name;
-              $config_collection[$config_name]->setPackageExcluded($package_excluded);
-            }
+      // Copy over package excluded settings, if any.
+      if (!empty($features_info['excluded'])) {
+        $config_collection = $this->featuresManager->getConfigCollection();
+        foreach ($features_info['excluded'] as $config_name) {
+          if (isset($config_collection[$config_name])) {
+            $package_excluded = $config_collection[$config_name]->getPackageExcluded();
+            $package_excluded[] = $short_name;
+            $config_collection[$config_name]->setPackageExcluded($package_excluded);
           }
-          $this->featuresManager->setConfigCollection($config_collection);
         }
-        // Assign required components, if any.
-        if (!empty($features_info['required'])) {
-          $this->featuresManager->assignConfigPackage($short_name, $features_info['required']);
+        $this->featuresManager->setConfigCollection($config_collection);
+      }
+
+      // Assign required components, if any.
+      if (isset($features_info['required'])) {
+        $config = $features_info['required'];
+        if (empty($config) || !is_array($config)) {
+          // if required is "true" or empty, add all config as required
+          $config = $this->featuresManager->listExtensionConfig($extension);
         }
+        $this->featuresManager->assignConfigPackage($short_name, $config);
       }
     }
   }
