React Server Components(RSC) 완벽 가이드

BrakieBrakie
18 Mar 2025

🚀 React Server Components란?

React Server Components(RSC)는 서버에서 실행되는 React 컴포넌트로, 클라이언트에서 불필요한 JavaScript 번들을 줄여 성능을 최적화하는 최신 기술입니다. 이는 React 18에서 도입된 개념으로, 서버와 클라이언트의 역할을 분리하여 더 빠른 페이지 로딩과 사용자 경험 개선을 목표로 합니다.

🎯 React Server Components의 핵심 개념

1️⃣ 서버에서만 실행되는 컴포넌트

  • 브라우저에서 실행되지 않고 서버에서 렌더링됨
  • 클라이언트로 전송되는 JavaScript 크기를 최소화
  • 데이터베이스 및 API 요청을 직접 수행 가능

2️⃣ 클라이언트 컴포넌트와의 차이

특징 서버 컴포넌트 (RSC) 클라이언트 컴포넌트
실행 위치 서버 브라우저
번들 크기 JavaScript 번들에 포함되지 않음 포함됨
상태 관리 useState, useEffect 사용 불가 가능
API 호출 서버에서 직접 수행 fetch() 등 클라이언트에서 요청

3️⃣ 서버와 클라이언트 컴포넌트 혼합 사용

React에서는 서버 컴포넌트와 클라이언트 컴포넌트를 함께 사용할 수 있습니다. 서버에서 데이터를 가져와 렌더링한 후, 인터랙티브한 요소는 클라이언트 컴포넌트로 분리하는 방식입니다.

🛠️ RSC 활용 방법

1️⃣ Next.js에서 RSC 사용하기

Next.js 13 이상 버전에서는 app 디렉토리 내에서 기본적으로 RSC가 활성화됩니다.

📌 서버 컴포넌트 예제

// app/components/ServerComponent.tsx
export default async function ServerComponent() {
  const data = await fetch("https://jsonplaceholder.typicode.com/posts/1").then(res => res.json());
  return <div>{data.title}</div>;
}
  • fetch 요청을 서버에서 수행하므로 클라이언트 측 번들 크기가 증가하지 않음

📌 클라이언트 컴포넌트와 함께 사용하기

// app/components/ClientComponent.tsx
"use client";
import { useState } from "react";

export default function ClientComponent() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(count + 1)}>클릭 {count}</button>;
}
  • "use client" 지시어를 추가하면 클라이언트에서 실행되는 컴포넌트가 됨

2️⃣ 서버 컴포넌트에서 클라이언트 컴포넌트 호출

// app/page.tsx
import ServerComponent from "./components/ServerComponent";
import ClientComponent from "./components/ClientComponent";

export default function Page() {
  return (
    <div>
      <ServerComponent />
      <ClientComponent />
    </div>
  );
}
주의: 클라이언트 컴포넌트에서는 서버 전용 기능(API 호출, DB 접근 등)을 직접 수행할 수 없습니다.

⚡ RSC의 장점

번들 크기 감소 → 불필요한 JavaScript 로딩 제거
서버 사이드 데이터 처리 → API 호출 및 데이터베이스 접근 최적화
SEO 및 성능 향상 → 더 빠른 페이지 로딩 속도

🚧 RSC 사용 시 주의할 점

useState, useEffect 같은 훅 사용 불가
❌ 브라우저 전용 API(localStorage, window 객체 등) 접근 불가
❌ 서버에서 클라이언트 컴포넌트를 직접 import하면 오류 발생 가능

🎯 결론

React Server Components는 클라이언트 번들을 최적화하고 성능을 극대화하는 강력한 도구입니다. Next.js와 같은 프레임워크에서 RSC를 활용하면, 보다 빠르고 효율적인 웹 애플리케이션을 개발할 수 있습니다. 앞으로 React 19에서 RSC가 더욱 발전할 예정이므로, 미리 익혀 두면 큰 도움이 될 것입니다! 🚀

참고자료

Buy Me A Coffee

Similar Posts