Next.js

use client 지시어 활용

Next.js App Router에서는 서버에서 끝낼 컴포넌트와 브라우저 상태가 필요한 컴포넌트를 파일 경계로 나눕니다. "use client"는 해당 파일과 그 하위 import를 클라이언트 번들로 보내겠다는 선언이므로 범위를 작게 잡아야 합니다.

상태, 이벤트, 브라우저 API가 필요한 지점을 기준으로 "use client" 선언 범위를 정리합니다.

"use client" 경계를 정하는 순서

1

클라이언트 경계 판단

App Router 컴포넌트는 기본적으로 서버에서 렌더링되므로 상태, 이벤트 핸들러, 브라우저 API가 필요한 파일만 경계로 올립니다.

2

'use client' 사용법

선언은 import보다 위에 두고, 서버 컴포넌트가 데이터를 가져온 뒤 필요한 props만 클라이언트 컴포넌트로 내려보냅니다.

3

'use client'가 없는 경우 vs. 있는 경우

서버 컴포넌트는 DB 접근과 async 데이터 로딩에 유리하고, 클라이언트 컴포넌트는 클릭, 입력, localStorage 접근을 맡깁니다.

4

'use client' 사용 시 고려사항 및 최적화

상위 layout에 선언하면 하위 UI가 모두 브라우저 번들로 이동하므로 버튼, 폼, 토글처럼 상호작용이 있는 잎 노드에 가깝게 둡니다.