diff --git a/core/modules/outside_in/src/Ajax/OpenOffCanvasDialogCommand.php b/core/modules/outside_in/src/Ajax/OpenOffCanvasDialogCommand.php
index d78dc35..ea24939 100644
--- a/core/modules/outside_in/src/Ajax/OpenOffCanvasDialogCommand.php
+++ b/core/modules/outside_in/src/Ajax/OpenOffCanvasDialogCommand.php
@@ -12,6 +12,11 @@
 class OpenOffCanvasDialogCommand extends OpenDialogCommand {
 
   /**
+   * The dialog width to use if none is provided.
+   */
+  const DIALOG_WIDTH = 300;
+
+  /**
    * Constructs an OpenOffCanvasDialogCommand object.
    *
    * The off-canvas dialog differs from the normal modal provided by
@@ -42,6 +47,12 @@ public function __construct($title, $content, array $dialog_options = [], $setti
     // @todo drupal.ajax.js does not respect drupalAutoButtons properly, pass an
     //   empty set of buttons until https://www.drupal.org/node/2793343 is in.
     $this->dialogOptions['buttons'] = [];
+    // If no width option is provided then use the default width to avoid the
+    // dialog staying at the width of the previous instance when opened
+    // more than once, with different widths, on a single page.
+    if (!isset($this->dialogOptions['width'])) {
+      $this->dialogOptions['width'] = static::DIALOG_WIDTH;
+    }
   }
 
   /**
diff --git a/core/modules/outside_in/src/Tests/Ajax/OffCanvasDialogTest.php b/core/modules/outside_in/src/Tests/Ajax/OffCanvasDialogTest.php
index f351042..9c3cb0c 100644
--- a/core/modules/outside_in/src/Tests/Ajax/OffCanvasDialogTest.php
+++ b/core/modules/outside_in/src/Tests/Ajax/OffCanvasDialogTest.php
@@ -46,6 +46,7 @@ public function testDialog() {
           'draggable' => FALSE,
           'drupalAutoButtons' => FALSE,
           'buttons' => [],
+          'width' => 300,
         ],
       'effect' => 'fade',
       'speed' => 1000,
diff --git a/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php b/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php
index b81c723..30d2d52 100644
--- a/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php
+++ b/core/modules/outside_in/tests/src/FunctionalJavascript/OffCanvasTest.php
@@ -58,7 +58,11 @@ public function testOffCanvasLinks() {
           $this->assertEquals('', $header_text);
 
           $style = $page->find('css', '.ui-dialog-offcanvas')->getAttribute('style');
-          self::assertTrue(strstr($style, 'width: 555px;') !== FALSE, 'Dialog width respected.');
+          $this->assertTrue(strstr($style, 'width: 555px;') !== FALSE, 'Dialog width respected.');
+          $page->clickLink("Click Me 1!");
+          $this->waitForOffCanvasToOpen();
+          $style = $page->find('css', '.ui-dialog-offcanvas')->getAttribute('style');
+          $this->assertTrue(strstr($style, 'width: 555px;') === FALSE, 'Dialog width reset to default.');
         }
         else {
           // Check that header is correct.
diff --git a/core/modules/outside_in/tests/src/Unit/Ajax/OpenOffCanvasDialogCommandTest.php b/core/modules/outside_in/tests/src/Unit/Ajax/OpenOffCanvasDialogCommandTest.php
index cd14d6d..fcb10f2 100644
--- a/core/modules/outside_in/tests/src/Unit/Ajax/OpenOffCanvasDialogCommandTest.php
+++ b/core/modules/outside_in/tests/src/Unit/Ajax/OpenOffCanvasDialogCommandTest.php
@@ -31,6 +31,7 @@ public function testRender() {
         'draggable' => FALSE,
         'drupalAutoButtons' => FALSE,
         'buttons' => [],
+        'width' => 300,
       ],
       'effect' => 'fade',
       'speed' => 1000,
