diff --git a/core/modules/field_layout/field_layout.install b/core/modules/field_layout/field_layout.install
index 5956bf1095412e89993b8381d7fd96fb0e8e7094..88882d39289dfd17cf266ac155f9b8fa2e5e4fcf 100644
--- a/core/modules/field_layout/field_layout.install
+++ b/core/modules/field_layout/field_layout.install
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Core\Cache\Cache;
+use Drupal\Core\Entity\Display\EntityDisplayInterface;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;
 use Drupal\Core\Entity\Entity\EntityViewDisplay;
 use Drupal\field_layout\Display\EntityDisplayWithLayoutInterface;
@@ -15,8 +16,10 @@
  */
 function field_layout_install() {
   // Ensure each entity display has a layout.
-  $entity_save = function (EntityDisplayWithLayoutInterface $entity) {
-    $entity->ensureLayout()->save();
+  $entity_save = function (EntityDisplayInterface $entity) {
+    if ($entity instanceof EntityDisplayWithLayoutInterface) {
+      $entity->ensureLayout()->save();
+    }
   };
   array_map($entity_save, EntityViewDisplay::loadMultiple());
   array_map($entity_save, EntityFormDisplay::loadMultiple());
@@ -31,8 +34,10 @@ function field_layout_install() {
 function field_layout_uninstall() {
   // Reset each entity display to use the one-column layout to best approximate
   // the absence of layouts.
-  $entity_save = function (EntityDisplayWithLayoutInterface $entity) {
-    $entity->setLayoutId('layout_onecol')->save();
+  $entity_save = function (EntityDisplayInterface $entity) {
+    if ($entity instanceof EntityDisplayWithLayoutInterface) {
+      $entity->setLayoutId('layout_onecol')->save();
+    }
   };
   array_map($entity_save, EntityViewDisplay::loadMultiple());
   array_map($entity_save, EntityFormDisplay::loadMultiple());
diff --git a/core/modules/field_layout/tests/src/Kernel/FieldLayoutUninstallTest.php b/core/modules/field_layout/tests/src/Kernel/FieldLayoutUninstallTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..387e6b235bb0a34416d3e42cf444e284431a9d81
--- /dev/null
+++ b/core/modules/field_layout/tests/src/Kernel/FieldLayoutUninstallTest.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Drupal\Tests\field_layout\Kernel;
+
+use Drupal\Tests\layout_builder\Kernel\LayoutBuilderCompatibilityTestBase;
+
+/**
+ * @group field_layout
+ */
+class FieldLayoutUninstallTest extends LayoutBuilderCompatibilityTestBase {
+
+  /**
+   * Ensures field layout can be uninstalled with layout builder enabled.
+   */
+  public function testFieldLayoutUninstall() {
+    // Setup user schema so user hook uninstall hook doesn't break.
+    $this->installSchema('user', 'users_data');
+
+    // Setup layout builder and same displays.
+    $this->installLayoutBuilder();
+
+    // Ensure install hook can handle displays without a layout.
+    $this->container->get('module_installer')->install(['field_layout']);
+
+    // Ensure uninstall hook can handle displays without a layout.
+    $this->container->get('module_installer')->uninstall(['field_layout']);
+  }
+
+}