
무조건적인 트렌드 추종 대신, 실제 런타임 환경과 운영 비용을 냉정하게 저울질한 기술 의사결정의 기록
모든 프로젝트에 App Router가 정답은 아닙니다. 토스뱅크 프론트엔드 팀이 실제 앱 내부 웹뷰 환경에서 Next.js App Router와 RSC를 다각도로 검증하며 마주한 WebKit의 렌더링 지연 현상, 라우터 블룸 필터 매칭 버그, 로깅 API 누락 등의 한계점과 최종적으로 Pages Router 유지를 선택하게 된 현실적이고 깊이 있는 기술적 이유를 공개합니다.
신기술 프레임워크 도입 전, 타겟 사용자의 실제 브라우저 엔진(WebKit/Chromium)에서의 동작 성능과 패키지 간의 환경 호환성, 그리고 인프라 수준의 모니터링 기능(로깅 등)이 완전하게 지원되는지 밀착 검증하는 PoC 절차를 강력히 권장합니다.
Next.js Pages Router가 유지보수 모드로 전환됨에 따라 신규 기능 도입을 위해 App Router 및 React Server Components(RSC)로의 전환을 검토하였으나, 토스 앱 내의 웹뷰 구동 환경 및 점진적 이관 과정에서 여러 기술적 제약 사항을 발견했습니다.
실제 서비스를 App Router로 마이그레이션하는 파일럿 프로젝트를 진행하면서, iOS WebKit에서의 FCP 지연 이슈 해결을 위한 SVG 우회 기법 도입, 스켈레톤 높이 최적화를 통한 레이아웃 시프트 제어, package.json의 조건부 export를 이용한 환경별 분기 처리 등을 적용하며 깊이 있게 검증했습니다.
점진적 이관 중 발생하는 중대한 라우팅 버그(basePath 중복 결합으로 인한 404 에러)와 집계 목적의 경로 패턴 조회(usePathname의 한계) 등 치명적인 제약 사항이 해결되지 않아 최종적으로 App Router 도입을 취소하고 Pages Router를 유지하기로 결정했습니다.
Trade-off
Pages Router를 계속 유지함에 따라 최신 Next.js 프레임워크가 제공하는 자동 번들 최적화 및 서버 사이드 최신 기능 혜택을 즉각적으로 누리기 어려우며, 장기적으로 기술 부채가 누적될 위험이 있습니다.
서버 환경에서 직접 렌더링을 수행하여 클라이언트 브라우저로 전송되는 자바스크립트 번들 용량을 획기적으로 낮출 수 있는 새로운 리액트 컴포넌트 모델입니다.
데이터가 준비되는 컴포넌트 영역부터 클라이언트로 실시간 전송하여 사용자에게 빠른 초기 인식을 제공하는 Next.js의 핵심 렌더링 메커니즘입니다.
특정 원소가 집합 내에 포함되어 있는지 빠르고 효율적으로 판별할 수 있도록 도와주는 확률적 자료구조입니다.




