diff --git a/src/Plugin/UiPatterns/Source/BlockSource.php b/src/Plugin/UiPatterns/Source/BlockSource.php
index 7778585..4faef3a 100644
--- a/src/Plugin/UiPatterns/Source/BlockSource.php
+++ b/src/Plugin/UiPatterns/Source/BlockSource.php
@@ -149,11 +149,43 @@ class BlockSource extends SourcePluginBase implements SourceWithChoicesInterface
     if (!$this->block) {
       return [];
     }
+
     $build = $this->block->build();
+
+    // Allow other modules to alter the block build.
+    $this->moduleHandler->alter(
+      ['block_view', 'block_view_' . $this->block->getBaseId()],
+      $build,
+      $this->block
+    );
+
     if (!is_array($build)) {
       return [];
     }
-    return $build;
+
+    // Wrap in block render array to enable block template rendering.
+    // This mimics BlockViewBuilder::preRender() without requiring a Block entity.
+    $configuration = $this->block->getConfiguration();
+    $configuration['label_display'] = FALSE;
+
+    $block_render_array = [
+      '#theme' => 'block',
+      '#attributes' => [],
+      '#weight' => 0,
+      '#configuration' => $configuration,
+      '#plugin_id' => $this->block->getPluginId(),
+      '#base_plugin_id' => $this->block->getBaseId(),
+      '#derivative_plugin_id' => $this->block->getDerivativeId(),
+      '#in_preview' => FALSE,
+      'content' => $build,
+    ];
+
+    // Add cache metadata.
+    if (isset($build['#cache'])) {
+      $block_render_array['#cache'] = $build['#cache'];
+    }
+
+    return $block_render_array;
   }
 
   /**
