diff --git a/core/lib/Drupal/Core/Field/FieldDefinition.php b/core/lib/Drupal/Core/Field/FieldDefinition.php
index 3968624..5e8aee3 100644
--- a/core/lib/Drupal/Core/Field/FieldDefinition.php
+++ b/core/lib/Drupal/Core/Field/FieldDefinition.php
@@ -172,6 +172,28 @@ public function setTranslatable($translatable) {
   /**
    * {@inheritdoc}
    */
+  public function isRevisionable() {
+    // Default to TRUE if it has not been set yet.
+    return !isset($this->definition['revisionable']) || $this->definition['revisionable'];
+  }
+
+  /**
+   * Sets whether the field is revisionable.
+   *
+   * @param bool $revisionable
+   *   Whether the field is revisionable.
+   *
+   * @return static
+   *   The object itself for chaining.
+   */
+  public function setRevisionable($revisionable) {
+    $this->definition['revisionable'] = $revisionable;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getCardinality() {
     // @todo: Allow to control this.
     return isset($this->definition['cardinality']) ? $this->definition['cardinality'] : 1;
diff --git a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
index 06de3c6..1a89c64 100644
--- a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
@@ -112,6 +112,14 @@ public function getSetting($setting_name);
   public function isTranslatable();
 
   /**
+   * Returns whether the field is revisionable.
+   *
+   * @return bool
+   *   TRUE if the field is revisionable.
+   */
+  public function isRevisionable();
+
+  /**
    * Returns whether the display for the field can be configured.
    *
    * @param string $display_context
diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php
index ae8d4fc..2a7d5e5 100644
--- a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php
+++ b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php
@@ -561,6 +561,14 @@ public function isTranslatable() {
   }
 
   /**
+   * {@inheritdoc}
+   */
+  public function isRevisionable() {
+    // All configurable fields are revisionable.
+    return TRUE;
+  }
+
+  /**
    * Sets whether the field is translatable.
    *
    * @param bool $translatable
diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php
index 35bef11..349bd79 100644
--- a/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php
+++ b/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php
@@ -508,6 +508,13 @@ public function isTranslatable() {
   /**
    * {@inheritdoc}
    */
+  public function isRevisionable() {
+    return $this->field->isRevisionable();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   protected function linkTemplates() {
     $link_templates = parent::linkTemplates();
     if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
diff --git a/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php b/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php
index 5ddd924..263c618 100644
--- a/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/FieldDefinitionTest.php
@@ -171,6 +171,18 @@ public function testFieldTranslatable() {
   }
 
   /**
+   * Tests field revisionable methods.
+   */
+  public function testFieldRevisionable() {
+    $definition = FieldDefinition::create($this->fieldType);
+    $this->assertTrue($definition->isRevisionable());
+    $definition->setRevisionable(TRUE);
+    $this->assertTrue($definition->isRevisionable());
+    $definition->setRevisionable(FALSE);
+    $this->assertFalse($definition->isRevisionable());
+  }
+
+  /**
    * Tests field cardinality.
    */
   public function testFieldCardinality() {
