Issue #953034: Add render visibility resolver and pre-computed region visibility

Problem: Templates like {% if page.sidebar %} trigger full rendering of regions just to check truthiness, defeating BigPipe and Dynamic Page Cache.

Solution:

  • Add RenderVisibilityResolver service that evaluates #access_callback without triggering #lazy_builder, #pre_render, or #post_render
  • Add |render_access Twig filter for lightweight visibility checks
  • Pre-compute region visibility in ThemePreprocess::preprocessPage() so standard Twig truthiness checks work correctly
  • Build on #360 patch (|stripped_length filter) as baseline

Files changed:

  • NEW: core/lib/Drupal/Core/Render/RenderVisibilityResolver.php
  • MODIFIED: core/lib/Drupal/Core/Template/TwigExtension.php
  • MODIFIED: core/lib/Drupal/Core/Theme/ThemePreprocess.php
  • MODIFIED: core/core.services.yml
  • NEW: core/tests/tests/Drupal/Tests/Core/Render/RenderVisibilityResolverTest.php

Closes #953034

Merge request reports

Loading