라우터 처리 흐름

URL 세그먼트 렌더 조립

App Router는 URL을 폴더 세그먼트에 맞추고, 각 세그먼트의 예약 파일을 읽어 공유 레이아웃, 최종 페이지, 서버/클라이언트 경계를 한 번에 구성한다.

1. URL 요청 브라우저가 경로를 요청하면 라우터가 app 트리에서 후보를 찾는다. /dashboard/settings
2. 세그먼트 매칭 일반 폴더는 URL 조각이 되고, 그룹 폴더는 주소에서 빠진다. app/dashboard/settings
3. 예약 파일 결합 상위 layout부터 최종 page까지 순서대로 렌더 책임을 쌓는다. layout.tsx + page.tsx
4. 렌더 트리 생성 서버 컴포넌트 결과 위에 필요한 클라이언트 섬만 hydrate한다. RootLayout / DashboardLayout / Page
root layout

문서 껍데기

app/layout.tsx 반드시 <html>과 <body>를 포함하고 모든 라우트를 감싼다.
segment layout

공유 UI와 데이터

dashboard/layout.tsx 하위 페이지가 바뀌어도 유지되는 내비게이션, 사이드바, 공통 데이터를 둔다.
client island

상호작용만 opt-in

"use client" 상태, 이벤트 핸들러, 브라우저 API가 필요한 작은 컴포넌트에만 선언한다.
page가 있어야 공개 URL 폴더만 있으면 경로 후보일 뿐이고, page.tsx가 있어야 화면으로 접근된다.
route.ts는 응답 전용 같은 세그먼트에서 page.tsx와 route.ts가 같은 경로를 동시에 맡지 않게 분리한다.
서버가 기본값 클라이언트 컴포넌트는 필요할 때만 선언해 번들과 경계를 작게 유지한다.