App Router 계약

App Router 예약 파일 경계

일반 폴더는 경로 후보를 만들고, page.tsxlayout.tsx 같은 파일이 실제 렌더링 책임을 가져갑니다.

segment

폴더가 URL 조각 생성

app/dashboard/settings처럼 일반 폴더를 중첩하면 /dashboard/settings 경로 후보가 됩니다.

page

page 파일: 공개 화면

폴더만으로는 접속 가능한 페이지가 아니며, 해당 세그먼트 안의 page.tsx가 최종 UI를 렌더링합니다.

layout

layout은 하위 라우트를 감싼다

상위 레이아웃은 children 위치에 다음 세그먼트의 레이아웃 또는 페이지를 끼워 넣습니다.

(group)

괄호 폴더는 URL에 나타나지 않고 라우트를 논리적으로 묶습니다.

_private

언더스코어 폴더는 라우팅 대상에서 제외해 내부 코드를 보관합니다.

@slot

병렬 라우트 슬롯은 주소 조각이 아니라 같은 화면의 독립 영역입니다.

route.ts

화면이 아니라 HTTP 응답을 담당하므로 page 파일과 역할을 나눕니다.

1 URL 분해 요청 경로를 세그먼트 단위로 나눕니다.
2 폴더 매칭 app 트리에서 일반 폴더와 예외 폴더를 구분합니다.
3 파일 결합 상위 layout부터 최종 page까지 중첩합니다.
4 경계 확정 기본 서버 컴포넌트 위에 필요한 client 컴포넌트만 둡니다.
서버가 기본값

데이터 접근과 비밀 값은 서버 컴포넌트에 남겨 클라이언트 번들을 줄입니다.

client는 필요한 곳만

상태, 이벤트, 브라우저 API가 필요한 작은 컴포넌트에만 선언합니다.

같은 경로 충돌 피하기

한 세그먼트에서 화면 라우트와 응답 전용 라우트를 명확히 분리합니다.