React Server Components introduce a different execution model for React applications. Instead of assuming that every component must execute inside the browser, Server Components allow parts of the component tree to execute entirely on the server.
This can reduce client-side JavaScript and simplify data access.
A Server Component can access server-side resources without exposing those resources to the browser.
For example, a component can retrieve records from a database and render the result directly.
The browser receives the rendered result and the information required for interactive components.
Client Components are necessary when the component requires browser-side behavior.
Typical examples include:
The objective is not to eliminate Client Components but to use them where they provide value.
One powerful pattern is combining Server and Client Components.
A Server Component can retrieve data and pass serializable data into a Client Component responsible for interaction.
For example, a server-rendered product list can provide product information to an interactive filter component.
This creates a clear separation between data retrieval and browser interaction.
Reducing unnecessary client JavaScript can improve application performance.
Large libraries do not always need to be downloaded by every visitor if their functionality is only required on the server.
The result can be smaller bundles and faster initial loading.
Server Components also reduce the need for internal API endpoints used solely to communicate between the application's frontend and backend.
A server-rendered component can directly access a service or database when appropriate.
This does not mean security can be ignored. Authorization must still happen on the server before sensitive data is returned.
A useful mental model is:
Server Components answer:
"What data and structure should the server produce?"
Client Components answer:
"How should the browser respond to user interaction?"
Understanding this boundary is one of the most important skills when building applications with modern React frameworks.