diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php
index d74a85a..0729971 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php
@@ -21,7 +21,8 @@
  *   id = "uri",
  *   label = @Translation("URI"),
  *   description = @Translation("An entity field containing a URI."),
- *   no_ui = TRUE
+ *   no_ui = TRUE,
+ *   default_widget = "uri"
  * )
  */
 class UriItem extends StringItem {
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php
index 39606c6..cf89f0c 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/UriWidget.php
@@ -21,35 +21,14 @@
  *   }
  * )
  */
-class UriWidget extends WidgetBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function defaultSettings() {
-    return array(
-      'size' => 60,
-      'placeholder' => '',
-    ) + parent::defaultSettings();
-  }
+class UriWidget extends StringWidget {
 
   /**
    * {@inheritdoc}
    */
   public function settingsForm(array $form, array &$form_state) {
-    $element['size'] = array(
-      '#type' => 'number',
-      '#title' => $this->t('Size of URI field'),
-      '#default_value' => $this->getSetting('size'),
-      '#required' => TRUE,
-      '#min' => 1,
-    );
-    $element['placeholder'] = array(
-      '#type' => 'textfield',
-      '#title' => $this->t('Placeholder'),
-      '#default_value' => $this->getSetting('placeholder'),
-      '#description' => $this->t('Text that will be shown inside the field until a value is entered. This hint is usually a sample value or a brief description of the expected format.'),
-    );
+    $element = parent::settingsForm($form, $form_state);
+    $element['size']['#title'] = $this->t('Size of URI field');
     return $element;
   }
 
@@ -72,13 +51,9 @@ public function settingsSummary() {
    * {@inheritdoc}
    */
   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, array &$form_state) {
-    $element['value'] = $element + array(
-      '#type' => 'url',
-      '#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : NULL,
-      '#size' => $this->getSetting('size'),
-      '#placeholder' => $this->getSetting('placeholder'),
-      '#maxlength' => $this->getFieldSetting('max_length'),
-    );
+    $element = parent::formElement($items, $delta, $element, $form, $form_state);
+    $element['value']['#type'] = 'url';
+    unset($element['value']['#attributes']);
     return $element;
   }
 
