Server Components Didn't Kill the Client, They Relocated It
Date Published

For years the default in React apps was: everything is a client component, because everything was a client component before there was another option. Server Components make the opposite the default — a component only ships JavaScript to the browser if something in it actually needs interactivity.
That's a real reduction in bundle size for a lot of apps, but it's not automatic virtue — it just means the boundary between server and client rendering is now a decision developers make explicitly, with a directive, instead of one they inherited by default. Getting that boundary in the wrong place (a client component wrapping something that didn't need to be interactive) gives back exactly the bundle weight the model was supposed to save.
The mental shift that actually matters is treating 'does this need to run in the browser' as a real per-component question again, rather than an assumption baked into every file from the start.