diff --git a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php
index 54fde69078..7cd7935b34 100644
--- a/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php
+++ b/core/modules/content_moderation/src/Plugin/Field/ModerationStateFieldItemList.php
@@ -21,25 +21,7 @@ class ModerationStateFieldItemList extends FieldItemList {
    * {@inheritdoc}
    */
   protected function computeValue() {
-    $moderation_state = $this->getModerationStateId();
-    // Do not store NULL values in the static cache.
-    if ($moderation_state) {
-      // An entity can only have a single moderation state.
-      $this->list[0] = $this->createItem(0, $moderation_state);
-    }
-  }
-
-  /**
-   * Ensures that values are only computed once.
-   */
-  protected function ensureComputedValue() {
-    // If the moderation state field is set to an empty value, always recompute
-    // the state. Empty is not a valid moderation state value, when none is
-    // preset the default state is used.
-    if ($this->valueComputed === FALSE || !isset($this->list[0]) || $this->list[0]->isEmpty()) {
-      $this->computeValue();
-      $this->valueComputed = TRUE;
-    }
+    $this->list[0] = $this->createItem(0, $this->getModerationStateId() ?: $this->getInitialState());
   }
 
   /**
@@ -66,6 +48,18 @@ protected function getModerationStateId() {
     // It is possible that the bundle does not exist at this point. For example,
     // the node type form creates a fake Node entity to get default values.
     // @see \Drupal\node\NodeTypeForm::form()
+    return $this->getInitialState();
+  }
+
+  /**
+   * Get the initial state based on the field item list.
+   *
+   * @return string|NULL
+   *   The default state if one exists.
+   */
+  protected function getInitialState() {
+    $entity = $this->getEntity();
+    $moderation_info = \Drupal::service('content_moderation.moderation_information');
     $workflow = $moderation_info->getWorkFlowForEntity($entity);
     return $workflow ? $workflow->getTypePlugin()->getInitialState($entity)->id() : NULL;
   }
