diff --git a/core/lib/Drupal/Core/Render/Element/Container.php b/core/lib/Drupal/Core/Render/Element/Container.php
index 212000d..bd1c140 100644
--- a/core/lib/Drupal/Core/Render/Element/Container.php
+++ b/core/lib/Drupal/Core/Render/Element/Container.php
@@ -79,4 +79,19 @@ public static function processContainer(&$element, FormStateInterface $form_stat
     return $element;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function preRenderGroup($element) {
+    $element = parent::preRendergroup($element);
+    // Do not render optional container elements if there are no children.
+    if (isset($element['#parents'])) {
+      $group = implode('][', $element['#parents']);
+      if (!empty($element['#optional']) && !Element::getVisibleChildren($element['#groups'][$group])) {
+        $element['#printed'] = TRUE;
+      }
+    }
+    return $element;
+  }
+
 }
