Next.js 14 App Router 실전 적용기

Next.js 14의 App Router를 실제 프로젝트에 적용하면서 경험한 내용을 공유합니다.

App Router란?

Next.js 13부터 도입된 새로운 라우팅 시스템입니다. 기존 Pages Router와 비교해 여러 장점이 있습니다:

  • React Server Components 지원
  • 중첩 레이아웃
  • 스트리밍
  • 병렬 라우트

적용하면서 겪은 문제들

1. 클라이언트 컴포넌트 분리

Server Components가 기본이 되면서, 상태나 이벤트 핸들러가 필요한 부분은 use client를 명시해야 합니다.

'use client';

import { useState } from 'react';

export function Counter() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}

2. 메타데이터 관리

페이지별 메타데이터는 generateMetadata 함수로 관리합니다.

export async function generateMetadata({ params }) {
  const post = await getPost(params.slug);
  return {
    title: post.title,
    description: post.description,
  };
}

3. 로딩 상태 처리

loading.tsx 파일로 로딩 UI를 쉽게 구현할 수 있습니다.

// app/blog/loading.tsx
export default function Loading() {
  return <div>로딩 중...</div>;
}

결론

App Router는 초기 학습 곡선이 있지만, 익숙해지면 더 직관적인 프로젝트 구조와 성능 최적화가 가능합니다. 신규 프로젝트라면 App Router 사용을 권장합니다.