The freemium gate most sites get wrong
A client component receives every field you pass it, whether it renders them or not — the whole object ships in the RSC payload and is readable in the page source. Hiding paid values behind a conditional in JSX is not a paywall, it is an inconvenience. On this site the gating happens server-side, nulling the fields before they cross the boundary, so a logged-out visitor and a crawler receive markup that genuinely does not contain the paid data. This is the single most common paid-content bug I see in App Router codebases.