diff --git a/navigation_extra.module b/navigation_extra.module
index 9504365e424c49d05d4bea27997ff033916a99c0..cd48cc61c79e1b810a111aa22f400e7ea38310f6 100644
--- a/navigation_extra.module
+++ b/navigation_extra.module
@@ -5,6 +5,7 @@
  * Primary module hooks for navigation module.
  */
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Component\Plugin\PluginBase;
 use Drupal\navigation\Plugin\SectionStorage\NavigationSectionStorage;
@@ -77,9 +78,22 @@ function navigation_extra_plugin_filter_block__layout_builder_alter(array &$defi
       return in_array($base_plugin_id, $navigation_safe, TRUE);
     }, ARRAY_FILTER_USE_BOTH);
 
-    // Call the original core navigation hook. It will remove our definitions.
-    // @phpstan-ignore-next-line
-    navigation_plugin_filter_block__layout_builder_alter($definitions, $extra);
+    // Ensure compatibility with Drupal 11.
+    DeprecationHelper::backwardsCompatibleCall(
+      currentVersion: \Drupal::VERSION,
+      deprecatedVersion: '10.3',
+      currentCallable: function() use (&$definitions, $extra) {
+        if (class_exists('\Drupal\navigation\Hook\NavigationHooks')) {
+          $navigation_hooks = new \Drupal\navigation\Hook\NavigationHooks();
+          $navigation_hooks->pluginFilterLayoutLayoutBuilderAlter($definitions, $extra);
+        }
+      },
+      deprecatedCallable: function() use (&$definitions, $extra) {
+        if (function_exists('navigation_plugin_filter_block__layout_builder_alter')) {
+          navigation_plugin_filter_block__layout_builder_alter($definitions, $extra);
+        }
+      },
+    );
 
     // Add the definitions we consider safe again.
     $definitions += $safe_definitions;