Engineering

React Server Components: When to Use Them and When to Skip

KodexApps Engineering
React atom split into server and client halves with data flowing between

React Server Components (RSC) represent the biggest shift in React architecture since hooks. They change where your code runs, how data flows, and what gets sent to the browser. But they are not a silver bullet, and using them incorrectly can make your application slower and more complex.

What Server Components Actually Do

Server Components run exclusively on the server. They can access databases, read files, and call internal APIs directly — without exposing any of that logic to the browser. The rendered output (not the component code) is streamed to the client.

This means:

  • Zero client-side JavaScript for Server Components — they contribute nothing to your bundle size

  • Direct data access — no need for API routes or useEffect fetching patterns

  • Streaming — the page can start rendering before all data is available

When Server Components Shine

  • Data-heavy pages — dashboards, reports, product listings that fetch from databases

  • Static content — marketing pages, blog posts, documentation

  • Large dependencies — components that use heavy libraries (markdown parsers, syntax highlighters) that should not ship to the client

  • SEO-critical pages — content that needs to be fully rendered in the initial HTML

When to Use Client Components Instead

  • Interactivity — anything with onClick, onChange, onSubmit, or other event handlers

  • Browser APIs — localStorage, geolocation, intersection observers, animations

  • State management — useState, useReducer, context providers

  • Third-party widgets — most UI libraries expect to run in the browser

Common Mistakes

  • Adding "use client" too high. Every component below a Client Component also becomes a Client Component. Push the "use client" boundary as low as possible.

  • Fetching in Client Components. If you are using useEffect to fetch data, ask yourself if a Server Component could fetch it instead.

  • Passing non-serializable props. Server Components can only pass serializable data to Client Components — no functions, no classes, no Dates.


React Server Components are a powerful tool in our Dream. Develop. Innovate. workflow — they let us dream about faster page loads, develop with a clearer server/client boundary, and innovate on rendering patterns that were impossible before.

Dream · Develop · Innovate

Let's Build Something Exceptional

Ready to bring your vision to life? Start with a conversation.