Pattern 1: Server wraps Client (children)
Most common shape. A Server Component fetches data and renders a Client Component, passing other Server Components as children. The client wrapper handles interactivity; the children stay server-rendered.
Pattern 2: Context providers
React Context requires a Client Component (it uses hooks). Build a thin 'use client' provider and place it inside the root layout. Everything else can stay server.
Pattern 3: Slots via props
For more deliberate composition (e.g., a modal that needs a header, body, and footer rendered server-side), accept multiple ReactNode props instead of a single children. The Client Component arranges them but doesn't render them.