diff --git a/core/lib/Drupal/Core/Extension/ThemeHandler.php b/core/lib/Drupal/Core/Extension/ThemeHandler.php
index a723087..e763ad6 100644
--- a/core/lib/Drupal/Core/Extension/ThemeHandler.php
+++ b/core/lib/Drupal/Core/Extension/ThemeHandler.php
@@ -206,7 +206,7 @@ public function addTheme(Extension $theme) {
     if (isset($theme->info['engine'])) {
       $theme->engine = $theme->info['engine'];
     }
-    if (isset($theme->info['base theme'])) {
+    if (!empty($theme->info['base theme'])) {
       $theme->base_theme = $theme->info['base theme'];
     }
     $this->list[$theme->getName()] = $theme;
@@ -252,6 +252,7 @@ public function rebuildThemeData() {
     // Set defaults for theme info.
     $defaults = array(
       'engine' => 'twig',
+      'base theme' => 'stable',
       'regions' => array(
         'sidebar_first' => 'Left sidebar',
         'sidebar_second' => 'Right sidebar',
diff --git a/core/modules/quickedit/quickedit.module b/core/modules/quickedit/quickedit.module
index 9a34105..72bae26 100644
--- a/core/modules/quickedit/quickedit.module
+++ b/core/modules/quickedit/quickedit.module
@@ -80,7 +80,7 @@ function quickedit_library_info_alter(&$libraries, $extension) {
       if (isset($theme) && $theme_path = drupal_get_path('theme', $theme)) {
         $info = system_get_info('theme', $theme);
         // Recurse to process base theme(s) first.
-        if (isset($info['base theme'])) {
+        if (!empty($info['base theme'])) {
           $alter_library($library, $info['base theme']);
         }
         if (isset($info['quickedit_stylesheets'])) {
diff --git a/core/modules/system/src/Controller/SystemController.php b/core/modules/system/src/Controller/SystemController.php
index 8f6b58a..9fbc41e 100644
--- a/core/modules/system/src/Controller/SystemController.php
+++ b/core/modules/system/src/Controller/SystemController.php
@@ -247,7 +247,7 @@ public function themesPage() {
         $theme->incompatible_region = !isset($theme->info['regions']['content']);
         $theme->incompatible_php = version_compare(phpversion(), $theme->info['php']) < 0;
         // Confirmed that the base theme is available.
-        $theme->incompatible_base = isset($theme->info['base theme']) && !isset($themes[$theme->info['base theme']]);
+        $theme->incompatible_base = !empty($theme->info['base theme']) && !isset($themes[$theme->info['base theme']]);
         // Confirm that the theme engine is available.
         $theme->incompatible_engine = isset($theme->info['engine']) && !isset($theme->owner);
       }
diff --git a/core/themes/classy/classy.info.yml b/core/themes/classy/classy.info.yml
index bd61ce0..8a1e69d 100644
--- a/core/themes/classy/classy.info.yml
+++ b/core/themes/classy/classy.info.yml
@@ -4,6 +4,7 @@ description: 'A base theme with sensible default CSS classes added. Learn how to
 package: Core
 version: VERSION
 core: 8.x
+base theme: false
 
 libraries:
   - classy/base
diff --git a/core/themes/stable/stable.info.yml b/core/themes/stable/stable.info.yml
new file mode 100644
index 0000000..50e7e3a
--- /dev/null
+++ b/core/themes/stable/stable.info.yml
@@ -0,0 +1,7 @@
+name: Stable
+type: theme
+description: 'Shelter from the Wild Wild West.'
+package: Core
+version: VERSION
+core: 8.x
+base theme: false
diff --git a/core/themes/stark/stark.info.yml b/core/themes/stark/stark.info.yml
index 70609c1..f6c9ba5 100644
--- a/core/themes/stark/stark.info.yml
+++ b/core/themes/stark/stark.info.yml
@@ -4,3 +4,4 @@ description: 'An intentionally plain theme with no styling to demonstrate defaul
 package: Core
 version: VERSION
 core: 8.x
+base theme: false
