| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 백엔드
- 쿼리
- node.js
- 미니정리
- 데이터베이스
- spring
- 정리
- oracle
- 자바스크립트
- 코드테스트
- 자바
- SQL
- 스프링
- web
- 프론트엔드
- jsp
- 디자인 패턴
- java
- JavaScript
- Next.js
- 오라클
- 코드 테스트
- 서버
- 스프링부트
- jpa
- 알고리즘
- MySQL
- BACK-END
- 프런트엔드
- 프로그래머스
- Today
- Total
참치코더의 꿈 메모장
Next.js / App Router 버전 (서버 컴포넌트 vs 클라이언트 컴포넌트) 정리 본문

Next.js는 기본적으로 서버 컴포넌트를 사용하며, 필요할 때만 클라이언트 컴포넌트를 선택하는 구조입니다.
이 글에서는 두 컴포넌트의 개념, 차이점, 사용 기준을 비교해 보았습니다!
서버 컴포넌트(Server Component)
개념
- 서버에서 실행되는 React 컴포넌트
- 브라우저로 JavaScript 번들을 보내지 않음
- DB 접근, 보안 로직, 서버 전용 API가 사용 가능하다.
특징
- 기본값("use client"를 사용하지 않는다.)
- 번들 사이즈를 감소시켜 초기 로딩 속도를 향상시킨다.(하이드레이션 할때 서버 컴포넌트는 제외한다.)
- 민감한 정보(API Key, DB URL) 노출이 없다.
- SEO에 유리 (HTML이 서버에서 생성된다.)
사용 가능한 것
- async / await
- DB 조회
- 서버 전용 라이브러리
사용할 수 없는 것
- useState, useEffect
- 브라우저 API (window, document)
- 이벤트 핸들러(onClick 등)
클라이언트 컴포넌트(Client Component)
개념
- 브라우저에서 실행되는 React 컴포넌트
- 기존 React SPA 방식과 동일
- 사용자 상호작용(UI 상태 관리)에 사용
특징
- 파일 최상단에 "use client" 필수
- JS 번들이 브라우저로 전송됨
- 상태 관리 및 이벤트 처리 가능
사용 가능한 것
- useState, useEffect, useRef
- onClick, onChange등 이벤트
- window, document 접근
단점
- 번들 크기가 증가한다. (하이드레이션시 해당 코드는 꼭 실행)
- 초기 로딩 성능 저하가 가능하다.
서버 / 클라이언트 컴포넌트 사용 시 주의사항
1. "use client"는 전파된다.
- 클라이언트 컴포넌트가 import하는 하위 컴포넌트는 선언하지 않았어도 모두 클라이언트
컴포넌트가 된다.
- 작은 UI 때문에 상위 컴포넌트에 "use client"를 붙이면 번들 크기 폭증 위험이 있다.
- 인터랙션이 필요한 부분만 최대한 말단 컴포넌트로 분리하면 된다.
2. 서버 컴포넌트에서 브라우저 API 사용 금지
- window, document, localStorage 사용 X
- useEffect, useState 사용 X
3. 클라이언트 컴포넌트에서 서버 컴포넌트 import 불가
- Client로 선언된 코드는 Server에서 import하는 것이 불가능하다.
- 아키텍처 설계 시 컴포넌트 의존성 방향이 중요하다.
- 공용 UI는 클라이언트/서버 어디서 쓰일지 먼저 결정한다.
4. 서버 컴포넌트의 데이터는 직렬화가 가능해야 한다.
- 서버 -> 클라이언트로 전달되는 props는 JSON 직렬화가 가능해야 한다.
- 다이렉트 전달이 불가능 한것 : 함수, class 인스턴스, Date 객체 그대로 전달
해결 방법
- Date -> String 변환
- 필요한 값만 추출해서 props로 전달
SEO는 서버 컴포넌트가 기본전략이다.
- 검색 엔진은 서버에서 생성된 HTML을 가장 안정적으로 인식한다.
- 클라이언트 컴포넌트만으로 구성된 페이지는 SEO가 불리하다.
'Next.js' 카테고리의 다른 글
| Next.js / React Server Component 주의사항 핵심 요약 (0) | 2026.01.31 |
|---|---|
| Next.js / App Router 네비게이팅 정리 (0) | 2026.01.06 |
| Next.js App Router에서 페이지 라우팅 & 레이아웃 설정 하기 (0) | 2026.01.02 |
| React / useEffect의 3가지 기능 (0) | 2025.11.15 |
| Next.js / pages 라우팅 공통 레이아웃 & 개별 레이아웃 적용 방법 (0) | 2025.11.14 |