diff --git a/core/modules/rest/rest.post_update.php b/core/modules/rest/rest.post_update.php
index ecbc73c..d7ddb1f 100644
--- a/core/modules/rest/rest.post_update.php
+++ b/core/modules/rest/rest.post_update.php
@@ -71,3 +71,18 @@ function rest_post_update_resource_granularity() {
 /**
  * @} End of "addtogroup updates-8.1.x-to-8.2.x".
  */
+
+/**
+ * @addtogroup updates-8.4.x
+ * @{
+ */
+
+/**
+ * Empty post-update hook to force a rebuild.
+ */
+function rest_post_update_enable_menus() {
+}
+
+/**
+ * @} End of "addtogroup updates-8.4.x".
+ */
diff --git a/core/modules/rest/src/Plugin/views/display/RestExport.php b/core/modules/rest/src/Plugin/views/display/RestExport.php
index 74a2762..09c825c 100644
--- a/core/modules/rest/src/Plugin/views/display/RestExport.php
+++ b/core/modules/rest/src/Plugin/views/display/RestExport.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Cache\CacheableResponse;
+use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\RenderContext;
 use Drupal\Core\Render\RendererInterface;
@@ -26,6 +27,7 @@
  *   id = "rest_export",
  *   title = @Translation("REST export"),
  *   help = @Translation("Create a REST export resource."),
+ *   uses_menu_links = TRUE,
  *   uses_route = TRUE,
  *   admin = @Translation("REST export"),
  *   returns_response = TRUE
@@ -94,6 +96,13 @@ class RestExport extends PathPluginBase implements ResponseDisplayPluginInterfac
   protected $authenticationProviders;
 
   /**
+   * The menu storage.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface
+   */
+  protected $menuStorage;
+
+  /**
    * Constructs a RestExport object.
    *
    * @param array $configuration
@@ -110,12 +119,15 @@ class RestExport extends PathPluginBase implements ResponseDisplayPluginInterfac
    *   The renderer.
    * @param string[] $authentication_providers
    *   The authentication providers, keyed by ID.
+   * @param \Drupal\Core\Entity\EntityStorageInterface $menu_storage
+   *   The menu storage.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, RendererInterface $renderer, array $authentication_providers) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, RendererInterface $renderer, array $authentication_providers, EntityStorageInterface $menu_storage) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $route_provider, $state);
 
     $this->renderer = $renderer;
     $this->authenticationProviders = $authentication_providers;
+    $this->menuStorage = $menu_storage;
   }
 
   /**
@@ -129,8 +141,8 @@ public static function create(ContainerInterface $container, array $configuratio
       $container->get('router.route_provider'),
       $container->get('state'),
       $container->get('renderer'),
-      $container->getParameter('authentication_providers')
-
+      $container->getParameter('authentication_providers'),
+      $container->get('entity.manager')->getStorage('menu')
     );
   }
   /**
@@ -462,6 +474,11 @@ public function calculateDependencies() {
     }, $this->getOption('auth'));
     $dependencies['module'] = array_merge($dependencies['module'], $modules);
 
+    $menu = $this->getOption('menu');
+    if ($menu['type'] === 'normal' && ($menu_entity = $this->menuStorage->load($menu['menu_name']))) {
+      $dependencies[$menu_entity->getConfigDependencyKey()][] = $menu_entity->getConfigDependencyName();
+    }
+
     return $dependencies;
   }
 
