diff --git a/core/modules/update/src/ProjectCoreCompatibility.php b/core/modules/update/src/ProjectCoreCompatibility.php
index 4aae45f..219a4b1 100644
--- a/core/modules/update/src/ProjectCoreCompatibility.php
+++ b/core/modules/update/src/ProjectCoreCompatibility.php
@@ -14,6 +14,13 @@ class ProjectCoreCompatibility {
   use StringTranslationTrait;
 
   /**
+   * The currently-installed version of Drupal core on this site.
+   *
+   * @var string
+   */
+  protected $existingCoreVersion;
+
+  /**
    * Cache of core versions that are available for updates.
    *
    * @var string[]
@@ -40,7 +47,8 @@ class ProjectCoreCompatibility {
    *   The project data for Drupal core as returned by
    *   \Drupal\update\UpdateManagerInterface::getProjects() and then processed
    *   by update_process_project_info() and
-   *   update_calculate_project_update_status().
+   *   update_calculate_project_update_status(). The main key used is:
+   *   - existing_version (string): The currently-installed version of core.
    * @param array $core_releases
    *   The Drupal core available releases.
    *
@@ -50,30 +58,29 @@ class ProjectCoreCompatibility {
    */
   public function __construct(array $core_data, array $core_releases) {
     if (isset($core_data['existing_version'])) {
-      $this->possibleCoreUpdateVersions = $this->getPossibleCoreUpdateVersions($core_data['existing_version'], $core_releases);
+      $this->existingCoreVersion = $core_data['existing_version'];
+      $this->possibleCoreUpdateVersions = $this->getPossibleCoreUpdateVersions($core_releases);
     }
   }
 
   /**
    * Gets the core versions that should be considered for compatibility ranges.
    *
-   * @param string $existing_version
-   *   The existing (currently installed) version of Drupal core.
    * @param array $core_releases
    *   The Drupal core available releases.
    *
    * @return string[]
    *   The core version numbers that are possible to update the site to.
    */
-  protected function getPossibleCoreUpdateVersions($existing_version, array $core_releases) {
-    if (!isset($core_releases[$existing_version])) {
+  protected function getPossibleCoreUpdateVersions(array $core_releases) {
+    if (!isset($core_releases[$this->existingCoreVersion])) {
       // If we can't determine the existing version of core then we can't
       // calculate the core compatibility of a given release based on core
       // versions after the existing version.
       return [];
     }
     $core_release_versions = array_keys($core_releases);
-    $possible_core_update_versions = Semver::satisfiedBy($core_release_versions, '>= ' . $existing_version);
+    $possible_core_update_versions = Semver::satisfiedBy($core_release_versions, '>= ' . $this->existingCoreVersion);
     $possible_core_update_versions = Semver::sort($possible_core_update_versions);
     $possible_core_update_versions = array_filter($possible_core_update_versions, function ($version) {
       return VersionParser::parseStability($version) === 'stable';
@@ -131,7 +138,16 @@ public function setReleaseMessage(array &$project_data) {
     }
     foreach ($releases_to_set as &$release) {
       if (!empty($release['core_compatibility'])) {
+        $release['core_compatible'] = $this->isCoreCompatible($release['core_compatibility']);
         $release['core_compatibility_message'] = $this->createMessageFromCoreCompatibility($release['core_compatibility']);
+        $release['core_compatibility_details'] = [
+          '#type' => 'details',
+          '#title' => $release['core_compatible'] ? $this->t('Compatible releases') : $this->t('Not compatible'),
+          '#open' => FALSE,
+          'message' => [
+            '#markup' => $release['core_compatibility_message'],
+          ],
+        ];
       }
     }
   }
@@ -163,6 +179,20 @@ protected function createMessageFromCoreCompatibility($core_compatibility_constr
   }
 
   /**
+   * Determines if a release is compatibile with the currently installed core.
+   *
+   * @param string $core_compatibility_constraint
+   *   A semantic version constraint.
+   *
+   * @return bool
+   *   TRUE if the given constraint is satisfied by the currently installed
+   *   version of Drupal core, otherwise FALSE.
+   */
+  protected function isCoreCompatible($core_compatibility_constraint) {
+    return Semver::satisfies($this->existingCoreVersion, $core_compatibility_constraint);
+  }
+
+  /**
    * Gets the compatibility ranges for a semantic version constraint.
    *
    * @param string $core_compatibility_constraint
diff --git a/core/modules/update/templates/update-version.html.twig b/core/modules/update/templates/update-version.html.twig
index 72c3174..dd212b9 100644
--- a/core/modules/update/templates/update-version.html.twig
+++ b/core/modules/update/templates/update-version.html.twig
@@ -11,6 +11,8 @@
  *   - date: The date of the release.
  *   - download_link: The URL for the downloadable file.
  *   - release_link: The URL for the release notes.
+ *   - core_compatible (bool): Is it compatible with the installed core or not?
+ *   - core_compatibility_details: Render array of core compatibility details.
  *
  * @ingroup themeable
  */
@@ -21,18 +23,22 @@
     <div class="project-update__version-details layout-column layout-column--quarter">
       <a href="{{ version.release_link }}">{{ version.version }}</a>
       <span class="project-update__version-date">({{ version.date|date('Y-M-d') }})</span>
-      {% if version.core_compatibility_message %}
-        <span class="project-update__core-compatibility-message">{{ version.core_compatibility_message }}</span>
-      {% endif %}
     </div>
     <div class="layout-column layout-column--half">
       <ul class="project-update__version-links">
-        <li class="project-update__download-link">
-          <a href="{{ version.download_link }}">{{ 'Download'|t }}</a>
-        </li>
+        {% if version.core_compatible %}
+          <li class="project-update__download-link">
+            <a href="{{ version.download_link }}">{{ 'Download'|t }}</a>
+          </li>
+        {% endif %}
         <li class="project-update__release-notes-link">
           <a href="{{ version.release_link }}">{{ 'Release notes'|t }}</a>
         </li>
+        {% if version.core_compatibility_details %}
+          <li class="project-update__compatibility-details">
+            {{ version.core_compatibility_details }}
+          </li>
+        {% endif %}
       </ul>
     </div>
   </div>
diff --git a/core/themes/claro/templates/admin/update-version.html.twig b/core/themes/claro/templates/admin/update-version.html.twig
index dcb5d65..df82642 100644
--- a/core/themes/claro/templates/admin/update-version.html.twig
+++ b/core/themes/claro/templates/admin/update-version.html.twig
@@ -11,6 +11,8 @@
  *   - date: The date of the release.
  *   - download_link: The URL for the downloadable file.
  *   - release_link: The URL for the release notes.
+ *   - core_compatible (bool): Is it compatible with the installed core or not?
+ *   - core_compatibility_details: Render array of core compatibility details.
  */
 #}
 <div class="{{ attributes.class }} project-update__version"{{ attributes|without('class') }}>
@@ -19,18 +21,22 @@
     <div class="project-update__version-details layout-column layout-column--quarter">
       <a href="{{ version.release_link }}">{{ version.version }}</a>
       <span class="project-update__version-date">({{ version.date|date('Y-M-d') }})</span>
-      {% if version.core_compatibility_message %}
-        <span class="project-update__core-compatibility-message">{{ version.core_compatibility_message }}</span>
-      {% endif %}
     </div>
     <div class="layout-column layout-column--half">
       <ul class="project-update__version-links">
-        <li class="project-update__download-link">
-          <a href="{{ version.download_link }}">{{ 'Download'|t }}</a>
-        </li>
+        {% if version.core_compatible %}
+          <li class="project-update__download-link">
+            <a href="{{ version.download_link }}">{{ 'Download'|t }}</a>
+          </li>
+        {% endif %}
         <li class="project-update__release-notes-link">
           <a href="{{ version.release_link }}">{{ 'Release notes'|t }}</a>
         </li>
+        {% if version.core_compatibility_details %}
+          <li class="project-update__compatibility-details">
+            {{ version.core_compatibility_details }}
+          </li>
+        {% endif %}
       </ul>
     </div>
   </div>
diff --git a/core/themes/stable/templates/admin/update-version.html.twig b/core/themes/stable/templates/admin/update-version.html.twig
index f3bce70..6b13511 100644
--- a/core/themes/stable/templates/admin/update-version.html.twig
+++ b/core/themes/stable/templates/admin/update-version.html.twig
@@ -11,6 +11,8 @@
  *   - date: The date of the release.
  *   - download_link: The URL for the downloadable file.
  *   - release_link: The URL for the release notes.
+ *   - core_compatible (bool): Is it compatible with the installed core or not?
+ *   - core_compatibility_details: Render array of core compatibility details.
  */
 #}
 <div class="{{ attributes.class }} project-update__version"{{ attributes|without('class') }}>
@@ -19,18 +21,22 @@
     <div class="project-update__version-details layout-column layout-column--quarter">
       <a href="{{ version.release_link }}">{{ version.version }}</a>
       <span class="project-update__version-date">({{ version.date|date('Y-M-d') }})</span>
-      {% if version.core_compatibility_message %}
-        <span class="project-update__core-compatibility-message">{{ version.core_compatibility_message }}</span>
-      {% endif %}
     </div>
     <div class="layout-column layout-column--half">
       <ul class="project-update__version-links">
-        <li class="project-update__download-link">
-          <a href="{{ version.download_link }}">{{ 'Download'|t }}</a>
-        </li>
+        {% if version.core_compatible %}
+          <li class="project-update__download-link">
+            <a href="{{ version.download_link }}">{{ 'Download'|t }}</a>
+          </li>
+        {% endif %}
         <li class="project-update__release-notes-link">
           <a href="{{ version.release_link }}">{{ 'Release notes'|t }}</a>
         </li>
+        {% if version.core_compatibility_details %}
+          <li class="project-update__compatibility-details">
+            {{ version.core_compatibility_details }}
+          </li>
+        {% endif %}
       </ul>
     </div>
   </div>
