Next.js App Router의 loading.tsx로 인한 CLS 문제 해결 및 최적화 방안

🤖 AI 추천

Next.js App Router를 사용하여 웹사이트를 개발하는 프론트엔드 개발자, 성능 최적화에 관심 있는 백엔드 개발자, 웹사이트 사용자 경험(UX) 개선을 목표로 하는 웹 개발자.

🔖 주요 키워드

💻 Development

핵심 기술: 본 콘텐츠는 Next.js App Router 환경에서 발생할 수 있는 심각한 SEO 문제의 원인이 loading.tsx 파일에 있음을 밝히고, 이를 해결하기 위한 구체적인 방안을 제시합니다. Cumulative Layout Shift (CLS) 점수가 0.25 이상으로 플래그된 수많은 모바일 URL 문제를 해결하는 과정을 공유합니다.

기술적 세부사항:
* 문제 분석: Next.js App Router에서 loading.tsx는 라우트 로딩 중에 자동으로 렌더링됩니다. 만약 loading.tsx의 내용이 최종 페이지보다 훨씬 작으면, 실제 콘텐츠가 로드될 때 레이아웃이 크게 변경되어 CLS가 발생합니다.
* 문제 발생 원인: 필자가 사용한 loading.tsx는 최소한의 요소(스피너 또는 중앙 메시지)만 포함했으나, 실제 페이지 콘텐츠가 더 길고 동적이었기 때문에 모바일에서 특히 심각한 CLS가 발생했습니다.
* 해결 방안:
* loading.tsx 파일을 완전히 제거했습니다.
* router.events 또는 useTransition()을 사용하여 라우트 전환을 수동으로 처리했습니다.
* 최종 페이지와 유사한 레이아웃(동일한 최소 높이, 간격 등)을 가진 스켈레톤 컴포넌트를 사용했습니다.
* Tailwind의 aspect-* 유틸리티와 Next.js를 사용하여 모든 이미지에 고정 종횡비를 적용했습니다.
* 결과: 위 조치 후 CLS 문제가 해결되었으며, Google Search Console에서 개선 사항을 검증하고 있습니다.

개발 임팩트: loading.tsx와 같은 작은 UX 개선 요소도 신중하게 구현되지 않으면 오히려 성능 저하 및 SEO 문제로 이어질 수 있음을 보여줍니다. CLS 점수 감소는 웹사이트의 사용자 경험과 검색 엔진 순위에 긍정적인 영향을 미칩니다.

커뮤니티 반응: Google Search Console에서 CLS 점수가 크게 감소했고, 실사용자 지표에서도 개선이 확인되었으며, Google이 이러한 변경 사항을 점진적으로 검증하고 있다는 점을 언급합니다.

톤앤매너: 개발자를 대상으로 한 전문적이고 문제 해결 지향적인 톤으로 작성되었습니다.

📚 관련 자료