# Next.js App Router
tint: #F2F0CA
blurb: Routing, rendering and file conventions in the App Router, weighted to 15→16.3.

id: 42575223-35e4-4cf8-b145-3a8bd3112785
Q: When did the App Router become stable, and what is the current Next.js version?
A: Stable in 13.4 (May 2023). The current line is 16.3, released August 2026; there is no Next.js 17. id: 32ca8c2c-7c0d-4335-bb8a-aec348f17396
id: edde2758-8276-473f-ad92-56d7d9127146
Q: What is the default component type in the App Router?
A: Server Components. They run only on the server, can be async, and ship no JavaScript to the browser. id: 7c8b40b4-95c1-4677-8963-bed88a552f34
id: 9244a398-85e3-4f2e-accd-196ed38a8c70
Q: What does 'use client' actually mark?
A: The boundary where the client bundle begins. Every module imported below it becomes client code too. id: 29070b96-b8f1-4766-9c37-50803e7df536
id: 90168a98-c958-4137-b86d-531cfd52dcaf
Q: Name the special files that define a route segment.
A: layout, page, loading, error, not-found, template, route, and default (for parallel route slots). id: e1beb9a1-ba1a-40b4-ac42-62cee4415382
id: eda6f7b9-faed-4638-9c12-6dc50134644b
Q: layout.tsx vs template.tsx?
A: Layouts persist across navigation and keep state; templates remount and reset state on every navigation. id: 71b81f07-cc59-4cf9-b191-cf4304a05257
id: bff89fa0-b81a-4403-a21c-dc8b8591d68c
Q: What are route groups and private folders?
A: (marketing) groups routes without adding a URL segment; _lib opts a folder out of routing entirely. id: 5091e51d-4fae-4aed-a483-24d7aab50906
id: 3003f465-beb0-48d5-a402-ae56d13cc128
Q: How do you write dynamic, catch-all and optional catch-all segments?
A: [id], [...slug] and [[...slug]] — the last also matches the parent path with no segments at all. id: 61daaf88-4538-402f-a676-63245add0129
id: ad045ea0-d767-4d56-9deb-f5a1a0c673f2
Q: What does generateStaticParams do?
A: Lists the dynamic params to prerender at build time — the App Router replacement for getStaticPaths. id: 055c1eaf-5abc-4147-9915-c8b3eeae5d1c
id: b5dd872d-4acc-40d6-8971-f3a7b6ed55c0
Q: What changed about params, searchParams, cookies() and headers()?
A: They became async in Next 15 and must be awaited. This is the most common upgrade break from 14. id: c1d4da39-292c-46c6-8241-914bed8ebdf8
id: 85646745-a472-4eda-adcd-96cf92e3c284
Q: How does streaming work in the App Router?
A: A loading.tsx or <Suspense> boundary lets the shell flush immediately while slower data streams in after. id: 31112f6b-35e3-42ce-8605-85d2e3f63dff
id: 30e2a686-7271-478e-89c0-706ddbf1b2e6
Q: Route Handler vs Server Action — when do you use each?
A: Route Handlers expose a real HTTP endpoint for external callers; Server Actions are RPC for your own UI. id: 879b33d3-9a13-4683-85c2-920874376b11
id: 97629fdb-36ff-44c2-acfb-af7eb23f4dd1
Q: What replaced middleware.ts in Next 16?
A: proxy.ts, renamed to make it clear the file is a network-boundary concern, not general app middleware. id: b89e1761-7b29-4d86-941f-8d94cba01938
id: 2a789567-d502-4986-89b4-54c946ffd09b
Q: What are Cache Components and 'use cache'?
A: An opt-in model (cacheComponents: true) where nothing caches unless a function or component is marked cacheable. id: 43818909-a4a9-4a0c-9570-48ca378335c5
id: 88f3052b-6063-400a-917d-003043645b5c
Q: How did caching defaults shift across 14 → 15 → 16?
A: 14 cached fetch and GET handlers implicitly; 15 turned those off by default; 16 makes caching explicit opt-in. id: 6e385274-c2f9-4209-881a-56e8dc11e801
id: f61fdfc9-b565-4155-944d-202034202820
Q: How do you invalidate cached data on demand?
A: revalidatePath and revalidateTag from a Server Action or Route Handler, with cacheTag marking what to bust. id: d189eb16-3379-474f-940e-f5a7746e8156
id: b51afa0b-7479-4fc7-b5b0-56b66524cc32
Q: What makes a route render dynamically?
A: Reading request data — cookies, headers, searchParams — or opting out via dynamic = 'force-dynamic'. id: 21ed2d23-ff7f-48e4-b385-8e4fb9134e21
id: 042c414e-9ad6-46b1-a780-f0eb5387f4eb
Q: What is Partial Prerendering, and where did it land?
A: Serving a static shell with dynamic holes streamed in. It shipped folded into the Cache Components model in 16. id: e3946fed-ed3f-4ef1-aa3c-7230c2162313
id: 40c06d7d-5b5f-4b28-9680-313f94312d43
Q: What are Instant Navigations (16.3)?
A: An opt-in suite — partial prefetching, extracted loading shells, Instant Insights — for SPA-feel routing. id: 0ee4bd31-3505-4894-8400-9e4344ac5493
id: 50603bf1-826b-4c8c-8f4d-0741f595e438
Q: What problem do root params (16.3) solve?
A: Reading a root-level param like [lang] from any Server Component, instead of prop-drilling it down the tree. id: 6ab944e9-1bb1-426d-a7a8-dcf7f2e32abe
id: a2759cf1-ee33-4239-b022-d183b919cbcc
Q: How does error handling work in the App Router?
A: error.tsx catches a segment's render errors, global-error wraps the root, notFound() renders 404. id: f09b5d3b-4045-43bb-9f71-1315ca05f623
id: 85963986-6896-4f04-9f7e-dcd80e174901
Q: What are parallel and intercepting routes?
A: @slot folders render several pages into one layout; (.) and (..) intercept a route to show it as a modal. id: 94dd7854-9bf5-43e8-8afe-a317bee7fc60
id: 58121232-e28b-441e-97dc-2fa8fde7a984
Q: How do you set page metadata?
A: Export a static metadata object or an async generateMetadata from a layout or page. id: 33f43377-f78a-4f79-9c89-428d9f5a7840
id: 9c545887-a1ff-4b1c-b4b5-85181ee6b836
Q: What is the bundler story in Next 16?
A: Turbopack is the default for dev and build; webpack config is deprecated with a temporary --webpack fallback. id: 9bee220e-0bbc-4757-973d-6bf2a9473b5d
id: e1388b07-dc79-4836-b2ea-c636018da15a
Q: Interview one-liner: what is the App Router's architectural theme?
A: Rendering moves to the server by default and caching moves from implicit to explicit, opt-in and per-component.
