Where 'use client' actually draws the line, and what crosses it.
'use client' at the top of a file marks that module — and everything it imports — as part of the client bundle, meaning it hydrates and runs in the browser with full access to state, effects, and browser APIs. Everything else in the App Router is a Server Component by default: rendered only on the server, and never shipped to the browser as JavaScript at all.
That boundary controls what can cross it, not just where code runs. Server Components can pass serializable props — including other Server Components, passed as children — into Client Components, but functions, class instances, and other non-serializable values generally can't cross that boundary directly. Server Actions are the deliberate, narrow exception: a 'use server' function can be passed to and invoked from a Client Component despite actually running on the server.
What you'll walk away knowing
No questions match "".