diff --git a/modules/next/config/schema/next.schema.yml b/modules/next/config/schema/next.schema.yml
index bde59648f..a2750276d 100644
--- a/modules/next/config/schema/next.schema.yml
+++ b/modules/next/config/schema/next.schema.yml
@@ -36,6 +36,9 @@ next.next_entity_type_config.*:
       label: 'Site resolver'
     configuration:
       type: next.site_resolver.configuration.[%parent.site_resolver]
+    draft_enabled:
+      type: boolean
+      label: 'Draft mode enabled'
     revalidator:
       type: string
       label: 'Revalidator'
diff --git a/modules/next/next.install b/modules/next/next.install
index 0afb4e602..25f2bc0c9 100644
--- a/modules/next/next.install
+++ b/modules/next/next.install
@@ -104,3 +104,26 @@ function next_update_9106() {
   $config->set('debug', FALSE)
     ->save();
 }
+
+/**
+ * Add the draft_enabled property to the next_entity_type_config.
+ */
+function next_update_9107() {
+  $entity_definition_update = \Drupal::entityDefinitionUpdateManager();
+
+  $storage_definition = BaseFieldDefinition::create('string')
+    ->setLabel(t('Draft mode enabled'));
+  $entity_definition_update->installFieldStorageDefinition('draft_enabled', 'next_entity_type_config', 'next_entity_type_config', $storage_definition);
+}
+
+/**
+ * Enable draft mode on all Next.js entity types.
+ */
+function next_update_9108() {
+  /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface[] $next_entity_type_configs */
+  $next_entity_type_configs = \Drupal::entityTypeManager()->getStorage('next_entity_type_config')->loadMultiple();
+  foreach ($next_entity_type_configs as $next_entity_type_config) {
+    $next_entity_type_config->set('draft_enabled', TRUE);
+    $next_entity_type_config->save();
+  }
+}
diff --git a/modules/next/src/Entity/NextEntityTypeConfig.php b/modules/next/src/Entity/NextEntityTypeConfig.php
index c6284c170..a6241014a 100644
--- a/modules/next/src/Entity/NextEntityTypeConfig.php
+++ b/modules/next/src/Entity/NextEntityTypeConfig.php
@@ -44,6 +44,7 @@
  *     "id",
  *     "site_resolver",
  *     "configuration",
+ *     "draft_enabled",
  *     "revalidator",
  *     "revalidator_configuration"
  *   },
@@ -78,6 +79,13 @@ class NextEntityTypeConfig extends ConfigEntityBase implements NextEntityTypeCon
    */
   protected $configuration = [];
 
+  /**
+   * Whether the draft mode is enabled.
+   *
+   * @var bool
+   */
+  protected $draft_enabled = FALSE;
+
   /**
    * The revalidator.
    *
@@ -129,6 +137,13 @@ public function setSiteResolver(string $plugin_id): NextEntityTypeConfigInterfac
     return $this;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function isDraftEnabled(): bool {
+    return $this->draft_enabled;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/modules/next/src/Entity/NextEntityTypeConfigInterface.php b/modules/next/src/Entity/NextEntityTypeConfigInterface.php
index 213c31c26..df788aad7 100644
--- a/modules/next/src/Entity/NextEntityTypeConfigInterface.php
+++ b/modules/next/src/Entity/NextEntityTypeConfigInterface.php
@@ -31,6 +31,14 @@ public function getSiteResolver(): ?SiteResolverInterface;
    */
   public function setSiteResolver(string $plugin_id): self;
 
+  /**
+   * Checks if the draft mode is enabled.
+   *
+   * @return bool
+   *   Return true/false if draft mode is enabled.
+   */
+  public function isDraftEnabled(): bool;
+
   /**
    * Returns the revalidator plugin.
    *
diff --git a/modules/next/src/Form/NextEntityTypeConfigForm.php b/modules/next/src/Form/NextEntityTypeConfigForm.php
index 37d2e65be..e6179f408 100644
--- a/modules/next/src/Form/NextEntityTypeConfigForm.php
+++ b/modules/next/src/Form/NextEntityTypeConfigForm.php
@@ -107,6 +107,36 @@ public function form(array $form, FormStateInterface $form_state) {
       ],
     ];
 
+    $form['site_resolver'] = [
+      '#title' => $this->t('Plugin'),
+      '#description' => $this->t('Select a plugin to use when validating the draft url for this entity type.'),
+      '#type' => 'select',
+      '#options' => array_column($this->siteResolverManager->getDefinitions(), 'label', 'id'),
+      '#default_value' => $entity->getSiteResolver() ? $entity->getSiteResolver()->getId() : NULL,
+      '#required' => TRUE,
+      '#limit_validation_errors' => [['site_resolver']],
+      '#submit' => ['::submitSiteResolver'],
+      '#executes_submit_callback' => TRUE,
+      '#ajax' => [
+        'callback' => '::ajaxReplaceSiteResolverSettingsForm',
+        'wrapper' => 'site-resolver-settings',
+        'method' => 'replace',
+      ],
+    ];
+
+    $form['site_resolver_settings_container'] = [
+      '#type' => 'container',
+      '#prefix' => '<div id="site-resolver-settings">',
+      '#suffix' => '</div>',
+    ];
+
+    $site_resolver = $entity->getSiteResolver();
+    if ($site_resolver instanceof ConfigurableSiteResolverInterface) {
+      $form['configuration'] = [];
+      $subform_state = SubformState::createForSubform($form['configuration'], $form, $form_state);
+      $form['site_resolver_settings_container']['configuration'] = $site_resolver->buildConfigurationForm($form['configuration'], $subform_state);
+    }
+
     $form['settings_container'] = [
       '#type' => 'container',
       '#prefix' => '<div id="settings-container">',
@@ -126,35 +156,21 @@ public function form(array $form, FormStateInterface $form_state) {
         '#group' => 'settings',
       ];
 
-      $form['draft_mode']['site_resolver'] = [
-        '#title' => $this->t('Plugin'),
-        '#description' => $this->t('Select a plugin to use when validating the draft url for this entity type.'),
-        '#type' => 'select',
-        '#options' => array_merge(['' => $this->t('None')], array_column($this->siteResolverManager->getDefinitions(), 'label', 'id')),
-        '#default_value' => $entity->getSiteResolver() ? $entity->getSiteResolver()->getId() : NULL,
-        '#limit_validation_errors' => [['site_resolver']],
-        '#submit' => ['::submitSiteResolver'],
+      $form['draft_mode']['draft_enabled'] = [
+        '#title' => $this->t('Enabled'),
+        '#description' => $this->t('Enable draft mode.'),
+        '#type' => 'checkbox',
+        '#default_value' => $entity->isDraftEnabled(),
+        '#limit_validation_errors' => [['draft_enabled']],
+        '#submit' => ['::submitDraftEnabled'],
         '#executes_submit_callback' => TRUE,
         '#ajax' => [
-          'callback' => '::ajaxReplaceSiteResolverSettingsForm',
-          'wrapper' => 'site-resolver-settings',
+          'callback' => '::ajaxReplaceSettingsForm',
+          'wrapper' => 'settings-container',
           'method' => 'replace',
         ],
       ];
 
-      $form['draft_mode']['site_resolver_settings_container'] = [
-        '#type' => 'container',
-        '#prefix' => '<div id="site-resolver-settings">',
-        '#suffix' => '</div>',
-      ];
-
-      $site_resolver = $entity->getSiteResolver();
-      if ($site_resolver instanceof ConfigurableSiteResolverInterface) {
-        $form['configuration'] = [];
-        $subform_state = SubformState::createForSubform($form['configuration'], $form, $form_state);
-        $form['draft_mode']['site_resolver_settings_container']['configuration'] = $site_resolver->buildConfigurationForm($form['configuration'], $subform_state);
-      }
-
       $form['revalidation'] = [
         '#title' => $this->t('On-demand Revalidation'),
         '#description' => $this->t('Configure on-demand revalidation for the entity type.'),
@@ -204,6 +220,14 @@ public function submitId(array $form, FormStateInterface $form_state) {
     $form_state->setRebuild();
   }
 
+  /**
+   * Handles submit call when draft mode is selected.
+   */
+  public function submitDraftEnabled(array $form, FormStateInterface $form_state) {
+    $this->entity = $this->buildEntity($form, $form_state);
+    $form_state->setRebuild();
+  }
+
   /**
    * Handles switching the id selector.
    */
@@ -223,7 +247,7 @@ public function submitSiteResolver(array $form, FormStateInterface $form_state)
    * Handles switching the site resolver selector.
    */
   public function ajaxReplaceSiteResolverSettingsForm($form, FormStateInterface $form_state) {
-    return $form['draft_mode']['site_resolver_settings_container'];
+    return $form['site_resolver_settings_container'];
   }
 
   /**
diff --git a/modules/next/src/Render/MainContent/HtmlRenderer.php b/modules/next/src/Render/MainContent/HtmlRenderer.php
index b60a20361..4decf2c51 100644
--- a/modules/next/src/Render/MainContent/HtmlRenderer.php
+++ b/modules/next/src/Render/MainContent/HtmlRenderer.php
@@ -108,7 +108,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte
     }
 
     $next_entity_type_config = $this->nextEntityTypeManager->getConfigForEntityType($entity->getEntityTypeId(), $entity->bundle());
-    if (!$next_entity_type_config) {
+    if (!$next_entity_type_config || !$next_entity_type_config->isDraftEnabled()) {
       return $build;
     }
 
diff --git a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php
index 62680a387..c35d941a3 100644
--- a/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php
+++ b/modules/next/tests/src/Kernel/Entity/NextEntityTypeConfigTest.php
@@ -59,6 +59,7 @@ public function testSiteResolver() {
     /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => FALSE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
@@ -123,6 +124,7 @@ public function testRevalidator() {
     /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => FALSE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
@@ -139,4 +141,32 @@ public function testRevalidator() {
     $this->assertSame('path', $revalidator->getId());
   }
 
+  /**
+   * Tests the draft enabled property.
+   *
+   * @covers ::isDraftEnabled
+   */
+  public function testDraftEnabled() {
+    $blog_site = NextSite::create(['id' => 'blog']);
+    $blog_site->save();
+
+    // Create entity type config.
+    /** @var \Drupal\next\Entity\NextEntityTypeConfigInterface $entity_type_config */
+    $entity_type_config = NextEntityTypeConfig::create([
+      'id' => 'node.page',
+      'draft_enabled' => TRUE,
+      'site_resolver' => 'site_selector',
+      'configuration' => [
+        'sites' => [
+          'blog' => 'blog',
+        ],
+      ],
+    ]);
+    $entity_type_config->save();
+    $this->assertTrue($entity_type_config->isDraftEnabled());
+
+    $entity_type_config->set('draft_enabled', FALSE)->save();
+    $this->assertFalse($entity_type_config->isDraftEnabled());
+  }
+
 }
diff --git a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php
index c482d796c..6cb1761ab 100644
--- a/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php
+++ b/modules/next/tests/src/Kernel/Event/EntityRevalidatedEventTest.php
@@ -48,6 +48,7 @@ protected function setUp(): void {
     // Create entity type config.
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
diff --git a/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php b/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php
index d5107b376..80502d28d 100644
--- a/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php
+++ b/modules/next/tests/src/Kernel/NextEntityTypeManagerTest.php
@@ -52,6 +52,7 @@ public function testGetSitesForEntity() {
 
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
@@ -97,6 +98,7 @@ public function testGetSiteResolver() {
 
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
@@ -120,6 +122,7 @@ public function testGetRevalidator() {
 
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
diff --git a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php
index b8d82c84d..c0f9af99e 100644
--- a/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php
+++ b/modules/next/tests/src/Kernel/Plugin/PathRevalidatorTest.php
@@ -66,6 +66,7 @@ public function testRevalidate() {
     // Create entity type config.
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
diff --git a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php
index 0effc53a7..e070141ca 100644
--- a/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php
+++ b/modules/next/tests/src/Kernel/Plugin/SimpleOauthPreviewUrlGeneratorTest.php
@@ -67,6 +67,7 @@ protected function setUp(): void {
     // Create entity type config.
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
diff --git a/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php b/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php
index 3bb44472f..a2671d382 100644
--- a/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php
+++ b/modules/next/tests/src/Kernel/Plugin/SiteResolverTest.php
@@ -70,6 +70,7 @@ protected function setUp(): void {
     // Create entity type config.
     $entity_type_config = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
diff --git a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php
index 31ef6543f..11e5ac63a 100644
--- a/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php
+++ b/modules/next/tests/src/Kernel/Renderer/MainContent/HtmlRendererTest.php
@@ -26,6 +26,13 @@ class HtmlRendererTest extends KernelTestBase {
    */
   protected static $modules = ['filter', 'next', 'node', 'system', 'user'];
 
+  /**
+   * The next entity type config.
+   *
+   * @var \Drupal\next\Entity\NextEntityTypeConfigInterface
+   */
+  protected $entityTypeConfig;
+
   /**
    * {@inheritdoc}
    */
@@ -62,8 +69,9 @@ protected function setUp(): void {
     $blog->save();
 
     // Create entity type config.
-    $entity_type_config = NextEntityTypeConfig::create([
+    $this->entityTypeConfig = NextEntityTypeConfig::create([
       'id' => 'node.page',
+      'draft_enabled' => TRUE,
       'site_resolver' => 'site_selector',
       'configuration' => [
         'sites' => [
@@ -71,7 +79,7 @@ protected function setUp(): void {
         ],
       ],
     ]);
-    $entity_type_config->save();
+    $this->entityTypeConfig->save();
 
     $this->setUpCurrentUser();
   }
@@ -99,6 +107,16 @@ public function testPrepare() {
     $preview_url = 'https://blog.com/node/2';
     $fields = $this->xpath("//iframe[contains(@src, '$preview_url')]");
     $this->assertEmpty($fields);
+
+    // Disable draft.
+    $this->entityTypeConfig->set('draft_enabled', FALSE);
+    $this->entityTypeConfig->save();
+    $request = Request::create($page->toUrl()->toString(), 'GET');
+    $response = $this->container->get('http_kernel')->handle($request);
+    $this->setRawContent($response->getContent());
+
+    $fields = $this->xpath("//iframe");
+    $this->assertEmpty($fields);
   }
 
 }