Start here. This is the direct spoken answer to practice first.
Overview
The client boundary is both a bundle boundary and a data-disclosure boundary.
Props passed from a Server Component to a Client Component must use values React can serialize across the server payload. I pass small view models and identifiers, not database clients, arbitrary class instances, request objects, or server-only functions. A Server Component can still be composed as children inside a Client Component because the server renders that child rather than shipping its implementation into the client bundle.