diff --git a/modules/ui_icons_menu/ui_icons_menu.module b/modules/ui_icons_menu/ui_icons_menu.module
index e1359c49f75d5cfa0657b123f549c61b106434c3..d1c69d7a06adff2962c694f04d7e6087bde4ec58 100644
--- a/modules/ui_icons_menu/ui_icons_menu.module
+++ b/modules/ui_icons_menu/ui_icons_menu.module
@@ -9,6 +9,7 @@ use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Theme\Icon\IconDefinition;
+use Drupal\Core\Url;
 
 /**
  * Implements hook_help().
@@ -89,6 +90,16 @@ function ui_icons_menu__preprocess_menu(array &$items): void {
  *   The menu item.
  */
 function ui_icons_menu__preprocess_menu_item(array &$item): void {
+  // Being extra defensive on the menu as other themes/modules can alter in
+  // unknown ways.
+  if (!isset($item['url'])) {
+    return;
+  }
+
+  if (!$item['url'] instanceof Url) {
+    return;
+  }
+
   /** @var \Drupal\Core\Url $url */
   $url = &$item['url'];