React Server Components(RSC)는 React 18에서 도입된 개념으로, 서버에서만 실행되는 컴포넌트이다. 기존의 React 컴포넌트와 달리 클라이언트 번들 크기를 줄이고, 서버에서 직접 데이터를 가져와 렌더링할 수 있는 장점이 있다.
Next.js에서는 페이지의 대부분을 서버 컴포넌트로 구성할 것을 권장하고 클라이언트 컴포넌트는 꼭 필요한 경우에만 사용할 것을 권장하고 있다.
Next.js에서는 기본적으로 모든 컴포넌트가 Server Component로 동작한다.
클라이언트에서 동작해야 하는 경우 "use client" 지시어를 사용한다.

둘 다 서버에서 실행되지만, 개념적으로 다르다.
| Server Components (RSC) | SSR (Server-Side Rendering) | |
|---|---|---|
| 실행 위치 | 서버에서 실행 후 HTML을 반환 | 서버에서 실행 후 HTML을 반환 |
| 데이터 가져오기 | 서버에서 직접 데이터를 가져와 렌더링 | getServerSideProps 등을 사용하여 데이터를 가져와 렌더링 |
| 클라이언트 JS 번들 포함 여부 | JS 번들 포함 X (서버에서 처리) | JS 번들 포함 O (클라이언트에서 실행될 수도 있음) |
| 상태 관리 가능 여부 | useState, useEffect 사용 불가 | useState, useEffect 사용 가능 (hydration 필요) |
| 인터랙션 | 사용자 입력을 직접 처리할 수 없음 | 사용자 입력을 처리할 수 있음 (클라이언트에서 |
✅ 장점
❌ 단점

직렬화 (Serialization)
객체, 배열, 클래스 등의 복잡한 구조의 데이터를 네트워크 상으로 전송하기 위해
아주 단순한 형태(문자열, Byte)로 변환하는 것, 대표적으로 함수는 직렬화가 불가능하기 때문에 서버 컴포넌트에서 클라이언트 컴포넌트에게 함수는 Props로 전달할 수 없다.