diff --git a/core/modules/node/src/NodeForm.php b/core/modules/node/src/NodeForm.php
index ec0ad41..9546753 100644
--- a/core/modules/node/src/NodeForm.php
+++ b/core/modules/node/src/NodeForm.php
@@ -83,20 +83,18 @@ public function form(array $form, FormStateInterface $form_state) {
 
     if ($preview = $store->get($uuid)) {
       /** @var $preview \Drupal\Core\Form\FormStateInterface */
-
       foreach ($preview->getValues() as $name => $value) {
         $form_state->setValue($name, $value);
       }
+      $form_state->setFormState($preview->getCacheableArray());
 
       // Rebuild the form.
       $form_state->setRebuild();
       $this->entity = $preview->getFormObject()->getEntity();
       $this->entity->in_preview = NULL;
 
-      // Remove the stale temp store entry for existing nodes.
-      if (!$this->entity->isNew()) {
-        $store->delete($uuid);
-      }
+      // Remove the stale temp store entry.
+      $store->delete($uuid);
 
       $this->hasBeenPreviewed = TRUE;
     }
diff --git a/core/modules/node/src/Tests/PagePreviewTest.php b/core/modules/node/src/Tests/PagePreviewTest.php
index 1c2d225..a70a9b9 100644
--- a/core/modules/node/src/Tests/PagePreviewTest.php
+++ b/core/modules/node/src/Tests/PagePreviewTest.php
@@ -14,6 +14,7 @@
 use Drupal\entity_reference\Tests\EntityReferenceTestTrait;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\field_ui\Tests\FieldUiTestTrait;
 use Drupal\node\Entity\NodeType;
 
 /**
@@ -31,7 +32,7 @@ class PagePreviewTest extends NodeTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'taxonomy', 'comment', 'image', 'file');
+  public static $modules = array('node', 'taxonomy', 'comment', 'image', 'file', 'text');
 
   /**
    * The name of the created field.
@@ -117,13 +118,30 @@ protected function setUp() {
       ))
       ->save();
 
+    // Create a multi-value text field.
+    $field_storage = FieldStorageConfig::create([
+      'field_name' => 'field_test_multi',
+      'entity_type' => 'node',
+      'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
+      'type' => 'text',
+      'settings' => [
+        'max_length' => 50,
+      ]
+    ]);
+    $field_storage->save();
+    FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'page',
+    ])->save();
     entity_get_form_display('node', 'page', 'default')
+      ->setComponent('field_test_multi', array(
+        'type' => 'text_textfield',
+      ))
       ->setComponent('field_image', array(
         'type' => 'image_image',
         'settings' => [],
       ))
       ->save();
-
     entity_get_display('node', 'page', 'default')
       ->setComponent('field_image')
       ->save();
@@ -181,6 +199,10 @@ function testPagePreview() {
     $this->assertFieldByName($body_key, $edit[$body_key], 'Body field displayed.');
     $this->assertFieldByName($term_key, $edit[$term_key] . ' (' . $this->term->id() . ')', 'Term field displayed.');
     $this->assertFieldByName('field_image[0][alt]', 'Picture of llamas');
+    // Assert additional values can be added.
+    $this->drupalPostAjaxForm(NULL, array(), array('field_test_multi_add_more' => t('Add another item')), NULL, array(), array(), 'node-page-form');
+    $this->assertFieldByName('field_test_multi[0][value]');
+    $this->assertFieldByName('field_test_multi[1][value]');
 
     // Return to page preview to check everything is as expected.
     $this->drupalPostForm(NULL, array(), t('Preview'));
