diff --git a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
index 23f18b1..7580863 100644
--- a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
+++ b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
@@ -258,7 +258,9 @@ protected function buildUrl(LinkItemInterface $item) {
     if (!empty($settings['target'])) {
       $options['attributes']['target'] = $settings['target'];
     }
-    $url->setOptions($options);
+    if ($options) {
+      $url->setOptions($options);
+    }
 
     return $url;
   }
diff --git a/core/modules/shortcut/config/optional/views.view.shortcuts.yml b/core/modules/shortcut/config/optional/views.view.shortcuts.yml
new file mode 100644
index 0000000..ba7bde6
--- /dev/null
+++ b/core/modules/shortcut/config/optional/views.view.shortcuts.yml
@@ -0,0 +1,278 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - link
+    - shortcut
+id: shortcuts
+label: Shortcuts
+module: views
+description: Shortcuts
+tag: ''
+base_table: shortcut_field_data
+base_field: id
+core: 8.x
+display:
+  default:
+    display_plugin: default
+    id: default
+    display_title: Master
+    position: 0
+    display_options:
+      access:
+        type: none
+        options: {  }
+      cache:
+        type: none
+        options: {  }
+      query:
+        type: views_query
+        options:
+          disable_sql_rewrite: false
+          distinct: false
+          replica: false
+          query_comment: ''
+          query_tags: {  }
+      exposed_form:
+        type: basic
+        options:
+          submit_button: Apply
+          reset_button: false
+          reset_button_label: Reset
+          exposed_sorts_label: 'Sort by'
+          expose_sort_order: true
+          sort_asc_label: Asc
+          sort_desc_label: Desc
+      pager:
+        type: none
+        options:
+          offset: 0
+      style:
+        type: html_list
+      row:
+        type: fields
+        options:
+          default_field_elements: true
+          inline: {  }
+          separator: ''
+          hide_empty: false
+      fields:
+        link__uri:
+          id: link__uri
+          table: shortcut_field_data
+          field: link__uri
+          relationship: none
+          group_type: group
+          admin_label: ''
+          label: ''
+          exclude: true
+          alter:
+            alter_text: false
+            text: ''
+            make_link: false
+            path: ''
+            absolute: false
+            external: false
+            replace_spaces: false
+            path_case: none
+            trim_whitespace: false
+            alt: ''
+            rel: ''
+            link_class: ''
+            prefix: ''
+            suffix: ''
+            target: ''
+            nl2br: false
+            max_length: 0
+            word_boundary: true
+            ellipsis: true
+            more_link: false
+            more_link_text: ''
+            more_link_path: ''
+            strip_tags: false
+            trim: false
+            preserve_tags: ''
+            html: false
+          element_type: ''
+          element_class: ''
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: false
+          element_wrapper_type: ''
+          element_wrapper_class: ''
+          element_default_classes: true
+          empty: ''
+          hide_empty: false
+          empty_zero: false
+          hide_alter_empty: true
+          click_sort_column: uri
+          type: link
+          settings:
+            trim_length: 80
+            url_only: false
+            url_plain: false
+            rel: '0'
+            target: '0'
+          group_column: ''
+          group_columns: {  }
+          group_rows: true
+          delta_limit: 0
+          delta_offset: 0
+          delta_reversed: false
+          delta_first_last: false
+          multi_type: separator
+          separator: ', '
+          field_api_classes: false
+          entity_type: shortcut
+          entity_field: link
+          plugin_id: field
+        title:
+          id: title
+          table: shortcut_field_data
+          field: title
+          relationship: none
+          group_type: group
+          admin_label: ''
+          label: ''
+          exclude: false
+          alter:
+            alter_text: false
+            text: ''
+            make_link: true
+            path: '{{ link__uri }}'
+            absolute: false
+            external: false
+            replace_spaces: false
+            path_case: none
+            trim_whitespace: false
+            alt: ''
+            rel: ''
+            link_class: ''
+            prefix: ''
+            suffix: ''
+            target: ''
+            nl2br: false
+            max_length: 0
+            word_boundary: true
+            ellipsis: true
+            more_link: false
+            more_link_text: ''
+            more_link_path: ''
+            strip_tags: false
+            trim: false
+            preserve_tags: ''
+            html: false
+          element_type: ''
+          element_class: ''
+          element_label_type: ''
+          element_label_class: ''
+          element_label_colon: false
+          element_wrapper_type: ''
+          element_wrapper_class: ''
+          element_default_classes: true
+          empty: ''
+          hide_empty: false
+          empty_zero: false
+          hide_alter_empty: true
+          click_sort_column: value
+          type: string
+          settings:
+            link_to_entity: false
+          group_column: value
+          group_columns: {  }
+          group_rows: true
+          delta_limit: 0
+          delta_offset: 0
+          delta_reversed: false
+          delta_first_last: false
+          multi_type: separator
+          separator: ', '
+          field_api_classes: false
+          entity_type: shortcut
+          entity_field: title
+          plugin_id: field
+      filters: {  }
+      sorts:
+        weight:
+          id: weight
+          table: shortcut_field_data
+          field: weight
+          relationship: none
+          group_type: group
+          admin_label: ''
+          order: ASC
+          exposed: false
+          expose:
+            label: ''
+          entity_type: shortcut
+          entity_field: weight
+          plugin_id: standard
+      title: Shortcuts
+      header: {  }
+      footer: {  }
+      empty: {  }
+      relationships: {  }
+      arguments:
+        shortcut_set:
+          id: shortcut_set
+          table: shortcut_field_data
+          field: shortcut_set
+          relationship: none
+          group_type: group
+          admin_label: ''
+          default_action: default
+          exception:
+            value: all
+            title_enable: false
+            title: All
+          title_enable: false
+          title: ''
+          default_argument_type: current_shortcut_set
+          default_argument_options: {  }
+          default_argument_skip_url: false
+          summary_options:
+            base_path: ''
+            count: true
+            items_per_page: 25
+            override: false
+          summary:
+            sort_order: asc
+            number_of_records: 0
+            format: default_summary
+          specify_validation: false
+          validate:
+            type: none
+            fail: 'not found'
+          validate_options: {  }
+          glossary: false
+          limit: 0
+          case: none
+          path_case: none
+          transform_dash: false
+          break_phrase: false
+          entity_type: shortcut
+          entity_field: shortcut_set
+          plugin_id: string
+      display_extenders: {  }
+    cache_metadata:
+      contexts:
+        - 'languages:language_content'
+        - 'languages:language_interface'
+        - url
+        - user
+      cacheable: false
+  shortcut_block:
+    display_plugin: block
+    id: shortcut_block
+    display_title: Block
+    position: 1
+    display_options:
+      display_extenders: {  }
+      block_category: Menus
+    cache_metadata:
+      contexts:
+        - 'languages:language_content'
+        - 'languages:language_interface'
+        - url
+        - user
+      cacheable: false
diff --git a/core/modules/shortcut/config/schema/shortcut.views.schema.yml b/core/modules/shortcut/config/schema/shortcut.views.schema.yml
new file mode 100644
index 0000000..90d990e
--- /dev/null
+++ b/core/modules/shortcut/config/schema/shortcut.views.schema.yml
@@ -0,0 +1,5 @@
+# Schema for the views plugins of the Shortcut module.
+
+views.argument_default.current_shortcut_set:
+  type: boolean
+  label: 'Shortcut set assigned to current user'
diff --git a/core/modules/shortcut/src/Entity/Shortcut.php b/core/modules/shortcut/src/Entity/Shortcut.php
index a2179f9..0616d0f 100644
--- a/core/modules/shortcut/src/Entity/Shortcut.php
+++ b/core/modules/shortcut/src/Entity/Shortcut.php
@@ -25,6 +25,7 @@
  *   label = @Translation("Shortcut link"),
  *   handlers = {
  *     "access" = "Drupal\shortcut\ShortcutAccessControlHandler",
+ *     "views_data" = "Drupal\views\EntityViewsData",
  *     "form" = {
  *       "default" = "Drupal\shortcut\ShortcutForm",
  *       "add" = "Drupal\shortcut\ShortcutForm",
diff --git a/core/modules/shortcut/src/Plugin/Block/ShortcutsBlock.php b/core/modules/shortcut/src/Plugin/Block/ShortcutsBlock.php
deleted file mode 100644
index 379d74d..0000000
--- a/core/modules/shortcut/src/Plugin/Block/ShortcutsBlock.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\shortcut\Plugin\Block\ShortcutsBlock.
- */
-
-namespace Drupal\shortcut\Plugin\Block;
-
-use Drupal\Core\Access\AccessResult;
-use Drupal\Core\Block\BlockBase;
-use Drupal\Core\Session\AccountInterface;
-
-/**
- * Provides a 'Shortcut' block.
- *
- * @Block(
- *   id = "shortcuts",
- *   admin_label = @Translation("Shortcuts"),
- *   category = @Translation("Menus")
- * )
- */
-class ShortcutsBlock extends BlockBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function build() {
-    return array(
-      shortcut_renderable_links(shortcut_current_displayed_set()),
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function blockAccess(AccountInterface $account) {
-    return AccessResult::allowedIfHasPermission($account, 'access shortcuts');
-  }
-
-}
diff --git a/core/modules/shortcut/src/Plugin/views/argument_default/CurrentShortcutSet.php b/core/modules/shortcut/src/Plugin/views/argument_default/CurrentShortcutSet.php
new file mode 100644
index 0000000..658db52
--- /dev/null
+++ b/core/modules/shortcut/src/Plugin/views/argument_default/CurrentShortcutSet.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\shortcut\Plugin\views\argument_default\CurrentShortcutSet.
+ */
+
+namespace Drupal\shortcut\Plugin\views\argument_default;
+
+use Drupal\views\Plugin\CacheablePluginInterface;
+use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase;
+
+/**
+ * Default argument plugin to extract the current shortcut
+ *
+ * This plugin actually has no options so it does not need to do a great deal.
+ *
+ * @ViewsArgumentDefault(
+ *   id = "current_shortcut_set",
+ *   title = @Translation("Shortcut set assigned to current user")
+ * )
+ */
+class CurrentShortcutSet extends ArgumentDefaultPluginBase implements CacheablePluginInterface {
+
+  public function getArgument() {
+    /** @var \Drupal\shortcut\ShortcutSetInterface $shortcut_set */
+    $shortcut_set = shortcut_current_displayed_set();
+    return $shortcut_set->id();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isCacheable() {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getCacheContexts() {
+    return ['user'];
+  }
+
+}
