diff --git a/core/modules/layout_builder/layout_builder.module b/core/modules/layout_builder/layout_builder.module
index f03e73afd0..df3aa067dd 100644
--- a/core/modules/layout_builder/layout_builder.module
+++ b/core/modules/layout_builder/layout_builder.module
@@ -11,6 +11,9 @@
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Link;
+use Drupal\Core\Plugin\Context\Context;
+use Drupal\Core\Plugin\Context\ContextDefinition;
+use Drupal\Core\Plugin\Context\EntityContext;
 use Drupal\Core\Render\Element;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Url;
@@ -218,6 +221,45 @@ function layout_builder_entity_delete(EntityInterface $entity) {
   }
 }
 
+/**
+ * Implements hook_entity_update().
+ */
+function layout_builder_entity_update(EntityInterface $entity) {
+  $route_name = \Drupal::routeMatch()->getRouteName();
+
+  // This code is not necessary when the entity is updated by saving an
+  // overridden layout.
+  if (strpos($route_name, 'layout_builder.') !== 0) {
+    // If an entity's field values change and it also has a layout override in
+    // the tempstore, the tempstore must be updated to reflect those new
+    // values.
+    $section_storage_manager = \Drupal::service('plugin.manager.layout_builder.section_storage');
+    $contexts['entity'] = EntityContext::fromEntity($entity);
+    $contexts['view_mode'] = new Context(new ContextDefinition('string'), 'default');
+    if ($section_storage = $section_storage_manager->load('overrides', $contexts)) {
+      $layout_tempstore_repository = \Drupal::service('layout_builder.tempstore_repository');
+
+      // This is only necessary if there is a layout override in the tempstore.
+      if ($layout_tempstore_repository->has($section_storage)) {
+        /** @var \Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage $override_temp_store */
+        $override_temp_store = $layout_tempstore_repository->get($section_storage);
+
+        // Get the entity currently in the tempstore's entity context.
+        $stored_entity = $override_temp_store->getContext('entity')->getContextData()->getEntity();
+
+        // Update the tempstore entity context with a copy of the new entity,
+        // but retain the value of the layout field from the tempstore.
+        $updated_entity = $entity;
+        $updated_entity->{OverridesSectionStorage::FIELD_NAME} = $stored_entity->{OverridesSectionStorage::FIELD_NAME};
+
+        $override_temp_store->setContextValue('entity', $updated_entity);
+        $layout_tempstore_repository->set($override_temp_store);
+
+      }
+    }
+  }
+}
+
 /**
  * Implements hook_cron().
  */
diff --git a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php
index eb6848abcc..d58c991828 100644
--- a/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php
+++ b/core/modules/layout_builder/tests/src/FunctionalJavascript/LayoutBuilderUiTest.php
@@ -99,6 +99,75 @@ public function testUnsavedChangesMessage() {
     $assert_session->pageTextNotContains('You have unsaved changes.');
   }
 
+  /**
+   * Test that changes to an entity are visible in the Layout Builder UI.
+   */
+  public function testUiCurrentWithEntity() {
+    $assert_session = $this->assertSession();
+    $page = $this->getSession()->getPage();
+
+    $this->drupalLogin($this->drupalCreateUser([
+      'access contextual links',
+      'configure any layout',
+      'administer node display',
+      'administer node fields',
+      'administer nodes',
+      'bypass node access',
+    ]));
+
+    $this->drupalPostForm(
+      static::FIELD_UI_PREFIX . '/display/default',
+      ['layout[allow_custom]' => TRUE],
+      'Save'
+    );
+
+    $this->createNode([
+      'type' => 'bundle_with_section_field',
+      'body' => [
+        [
+          'value' => 'The initial value',
+        ],
+      ],
+    ])->save();
+
+    $this->drupalGet('node/1');
+    $assert_session->pageTextContains('The initial value');
+    $this->drupalGet('node/1/layout');
+
+    // Change the Links block label in the override to confirm that these
+    // changes aren't removed when entity field values are updated.
+    $links_block = $assert_session->elementExists('css', '.block-extra-field-blocknodebundle-with-section-fieldlinks');
+    $links_block_uuid = $links_block->getAttribute('data-layout-block-uuid');
+    $this->drupalGet('layout_builder/update/block/overrides/node.1/0/content/' . $links_block_uuid);
+    $page->checkField('settings[label_display]');
+    $page->fillField('settings[label]', 'This is a label in the override');
+    $page->pressButton('Update');
+
+    $assert_session->pageTextContains('The initial value');
+    $assert_session->pageTextContains('This is a label in the override');
+
+    $this->drupalGet('node/1/edit');
+    $this->drupalPostForm(
+      'node/1/edit',
+      ['body[0][value]' => 'The changed value'],
+      'Save'
+    );
+
+    // Confirm that changes to a field are seen in the Layout UI without
+    // altering a layout's changes in the tempstore.
+    $assert_session->pageTextContains('The changed value');
+    $assert_session->pageTextNotContains('This is a label in the override');
+    $this->drupalGet('node/1/layout');
+    $assert_session->pageTextContains('The changed value');
+    $assert_session->pageTextContains('This is a label in the override');
+    $page->pressButton('Save layout');
+    $assert_session->pageTextContains('The changed value');
+    $assert_session->pageTextContains('This is a label in the override');
+    $this->drupalGet('node/1/layout');
+    $assert_session->pageTextContains('The changed value');
+    $assert_session->pageTextContains('This is a label in the override');
+  }
+
   /**
    * Asserts that modifying a layout works as expected.
    *
