Skip to content
Development Next.jsReactTypeScript

Practical Guide to Server Components in Next.js

Understand how Server Components work in Next.js, when to use them, and how to combine them with Client Components for performant applications.

Luciano Ferreira Luciano Ferreira
2 min read
Ler em Português
Next.js Server Components - Practical RSC guide

What are Server Components?

Server Components are React components that execute exclusively on the server. They allow you to access databases, APIs, and the file system directly, without sending JavaScript to the browser.

When to use Server Components

Use Server Components when the component:

  • Fetches data from an API or database
  • Accesses server resources (file system, environment variables)
  • Does not need client-side interactivity
  • Does not use hooks like useState or useEffect

When to use Client Components

Mark a component with "use client" when it:

  • Uses React hooks
  • Needs event handlers (onClick, onChange)
  • Uses browser APIs (localStorage, window)
  • Needs local state

Composition pattern

The most efficient strategy is to keep Server Components as wrappers that fetch data and pass it down to smaller Client Components that handle interactivity.

async function ProductPage({ id }: { id: string }) {
  const product = await getProduct(id);
  return <ProductDetails product={product} />;
}

Performance in practice

Server Components significantly reduce the JavaScript bundle sent to the client. In a recent project, migrating to Server Components reduced total JavaScript by 40%, considerably improving Core Web Vitals.

Conclusion

Server Components do not replace Client Components. They are complementary. The key is understanding the role of each one and composing your application intelligently.