Next.js 프로젝트에서 서버·클라이언트 컴포넌트 경계 설계로 성능을 개선한 경험을 정리한 결
사이드 프로젝트에서 Next.js App Router로 블로그 플랫폼을 만들면서 서버 컴포넌트와 클라이언트 컴포넌트 경계 설정이 가장 도전적이었습니다. 처음에 상태 관리 라이브러리를 서버 컴포넌트에서 import했다가 빌드 오류가 계속 났고, 원인을 파악하니 use client 지시어 없이 브라우저 API를 사용하는 패키지를 서버에서 불러온 문제였습니다.
컴포넌트 트리의 경계선을 명시적으로 정의하는 패턴을 도입해, 서버에서 내려주는 데이터와 클라이언트에서만 필요한 인터랙션을 분리했습니다. 이후 초기 로딩 속도가 1.8초에서 0.9초로 줄었고 번들 크기도 30% 감소했습니다. 이 경험으로 렌더링 경계 설계가 Next.js 성능의 핵심이라는 것을 직접 확인했습니다.