React Server Components 도입 검토하다 보류한 이유
배경
사내 대시보드 프로젝트를 Next.js 13으로 업그레이드하면서 App Router와 React Server Components(RSC)를 검토했다. 초기 로딩 속도 개선과 번들 사이즈 감소가 주요 목표였다.
검토 과정에서 마주친 문제들
1. 서드파티 라이브러리 호환성
대부분의 UI 라이브러리가 'use client' 지시어 없이는 동작하지 않았다. Material-UI, Ant Design 등 주요 라이브러리들이 아직 RSC를 정식 지원하지 않는 상황이었다.
// 모든 컴포넌트에 'use client' 추가 필요
'use client'
import { Button } from '@mui/material'
export default function MyButton() {
return <Button>Click</Button>
}
2. 상태 관리 패턴의 변화
Recoil, Zustand 등 기존 상태 관리 라이브러리들이 전부 클라이언트 컴포넌트에서만 동작했다. 서버/클라이언트 경계를 어디에 둘지 명확한 패턴이 아직 정립되지 않았다.
3. 학습 곡선과 팀 적응
서버 컴포넌트와 클라이언트 컴포넌트의 차이, props로 전달 가능한 값의 제약(직렬화 가능한 데이터만), async 컴포넌트 등 새로운 개념이 많았다. 4명의 팀원 모두가 이를 이해하고 올바르게 사용하기까지 시간이 필요했다.
결정
당분간 Pages Router를 유지하기로 했다. RSC의 이점은 명확하지만, 2023년 6월 현재는 얼리 어답터 단계로 판단했다. 생태계가 더 성숙해지고 베스트 프랙티스가 확립된 후 재검토할 예정이다.
실무에서는 기술의 참신함보다 안정성과 팀의 생산성이 우선이라는 것을 다시 확인했다.