I'm creating this thread to be a shared discussion for anyone who stumbles upon this in the future. I would love to hear how other people are tackling this issue in their projects.
The Problem
We have a CMS-driven Next.js App Router site (Payload CMS) with 20+ block components. A RenderBlocks server component maps over page data and renders the appropriate block for each entry. The issue is that all client components referenced by the page end up in a single JS chunk, even if only a few blocks appear on any given page. This means every visitor downloads the client JS for every possible block.