From d013bea7eac57c26b259e2b1360d802440c2af12 Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Wed, 5 Feb 2025 13:04:18 +0000
Subject: [PATCH 1/2] Issue #3504386 by plopesc, catch: Use a placeholder for
 the navigation toolbar

---
 core/modules/navigation/src/NavigationRenderer.php | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/core/modules/navigation/src/NavigationRenderer.php b/core/modules/navigation/src/NavigationRenderer.php
index 8e29298092d6..8f083f7acbe4 100644
--- a/core/modules/navigation/src/NavigationRenderer.php
+++ b/core/modules/navigation/src/NavigationRenderer.php
@@ -109,7 +109,8 @@ public function buildNavigation(array &$page_top): void {
         'keys' => ['navigation', 'navigation'],
         'max-age' => CacheBackendInterface::CACHE_PERMANENT,
       ],
-      '#pre_render' => ['navigation.renderer:doBuildNavigation'],
+      '#lazy_builder' => ['navigation.renderer:doBuildNavigation', []],
+      '#create_placeholder' => TRUE,
     ];
   }
 
@@ -117,7 +118,8 @@ public function buildNavigation(array &$page_top): void {
    * Pre-render callback for ::buildNavigation.
    */
   #[TrustedCallback]
-  public function doBuildNavigation($build): array {
+  public function doBuildNavigation(): array {
+    $build = [];
     $logo_settings = $this->configFactory->get('navigation.settings');
     $logo_provider = $logo_settings->get('logo.provider');
 
-- 
GitLab


From ed62aabc9e6fca549b728c03544802fac969e759 Mon Sep 17 00:00:00 2001
From: catch <6915-catch@users.noreply.drupalcode.org>
Date: Fri, 7 Feb 2025 16:33:20 +0000
Subject: [PATCH 2/2] Issue #3505154 by kristiaanvandeneynde, amateescu:
 NavigationRenderer manually adds required cache tags

---
 core/modules/navigation/src/NavigationRenderer.php | 1 -
 1 file changed, 1 deletion(-)

diff --git a/core/modules/navigation/src/NavigationRenderer.php b/core/modules/navigation/src/NavigationRenderer.php
index 8f083f7acbe4..7e5813f03cdc 100644
--- a/core/modules/navigation/src/NavigationRenderer.php
+++ b/core/modules/navigation/src/NavigationRenderer.php
@@ -132,7 +132,6 @@ public function doBuildNavigation(): array {
     if ($storage) {
       foreach ($storage->getSections() as $delta => $section) {
         $build[$delta] = $section->toRenderArray([]);
-        $build[$delta]['#cache']['contexts'] = ['user.permissions', 'theme', 'languages:language_interface'];
       }
     }
     // The render array is built based on decisions made by SectionStorage
-- 
GitLab