Skip to main content

Routing

File-system based routing in the App Router.

File Conventions

FilePurpose
page.tsxRoute UI
layout.tsxShared layout wrapper
loading.tsxLoading UI (Suspense boundary)
error.tsxError boundary
route.tsAPI route handler

Nested Routes

app/
layout.tsx
page.tsx
blog/
layout.tsx
page.tsx
[slug]/
page.tsx

Dynamic Segments

// app/blog/[slug]/page.tsx
export default function Post({ params }: { params: { slug: string } }) {
return <h1>Post: {params.slug}</h1>;
}