Block Renderer Demo

Batch 3 demo

Structured sections now render on public routes

This page is seeded from Strapi dynamic-zone content to verify the new BlockRenderer foundation on a real public route.

What this validates

Public rendering stays ISR-first

Each section below comes from Strapi block payloads while the route remains on the static/ISR path locked in CHG 16.

HR

Hero block

Section mapping from blocks.hero into the public route shell.

FG

Feature grid

Declarative list rendering from repeatable feature items.

CF

CTA and FAQ

Multiple block types can be composed without switching the route to dynamic.

Next step

Batch 4 can now focus on editor UX instead of renderer plumbing

Once content exists in Strapi, the storefront already knows how to render it on public surfaces.

Quick checks

Does business data come from Strapi now?

No. Pricing, purchase state, wallet, entitlement, and org/runtime authority remain in dlm-core.

Does this replace legacy rich text immediately?

No. The renderer is block-first but still falls back to legacy content when older entries have not migrated yet.

## Legacy fallback copy This paragraph stays visible after the structured sections so Batch 3 can prove block-first rendering with rich-text fallback on the same page.