Next.js (App Router defaults): what an agent reads
In short
Next.js does not generate llms.txt. Next.js totals 7 of 16 on the eight numeric keys, from a test build of Next.js 16.4.5. It also does not negotiate markdown without a rewrite and handler. Next.js: In the App Router, layouts and pages are Server Components by default, and Client Components plus the RSC payload are used to prerender HTML.
rubric.txt nextjs-app-router
initial_html_by_default = 2
real_status_codes = 2
llms_txt_generation = 0
llms_txt_linking = 0
markdown_negotiation = 1
jsonld_output = 1
openapi_exposure = 0
fenced_code = 1
total = 7 of 16
Test build of 16.4.5, 2026-11-04.
Next.js (App Router defaults) Framework, Vercel
React framework whose App Router renders Server Components by default and prerenders HTML; markdown negotiation and llms.txt are patterns the developer adds.
Work left to the developer: Medium: write llms.txt and a markdown route, add the Accept rewrite, link the file, and keep content in Server Components.
The nine scores
| Key | Score | Evidence | Source |
|---|---|---|---|
| Content in the initial HTML | 2, on by default | Test build, Next.js 16.4.5, 2026-11-04: the App Router pages were prerendered as static content with the H1 in the HTML. | nextjs.org/docs/app/getting-started/server-and-client-c…, 2026-11-04 |
| Real status codes | 2, on by default | Test build: next start answered a made-up path with 404 directly. notFound() inside a page renders the 404 UI. | nextjs.org/docs/app/api-reference/functions/not-found, 2026-11-04 |
| llms.txt generation | 0, not offered | Test build: public/ held only images; no llms.txt, robots.txt or sitemap. A file or a route handler is written by hand. | nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04 |
| llms.txt linking | 0, not offered | Test build: nothing links an llms.txt and none exists. | nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04 |
| Markdown on request | 1, with setup | Test build: Accept: text/markdown returned text/html. Next.js runs its own server by default, so a rewrite that tests the Accept header, plus a route handler, can answer it without a separate host. | nextjs.org/docs/app/api-reference/config/next-config-js…, 2026-11-04 |
| JSON-LD output | 1, with setup | Test build: no JSON-LD emitted. A script element can be rendered from a Server Component. | nextjs.org/docs/app/getting-started/server-and-client-c…, 2026-11-04 |
| OpenAPI exposure | 0, not offered | Test build: no OpenAPI file or link; Next.js has no first-party feature for one. | nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04 |
| Fenced, tagged code | 1, with setup | Test build: there is no Markdown pipeline without MDX setup; a hand-written code element kept its language class. | nextjs.org/docs/app/guides/mdx, 2026-11-04 |
| Work left to the developer | Medium: write llms.txt and a markdown route, add the Accept rewrite, link the file, and keep content in Server Components. Based on the test build above and the documentation pages cited for each key. | nextjs.org/docs/app/api-reference/config/next-config-js…, 2026-11-04 |
Test build
Next.js 16.4.5, built on 4 November 2026. create-next-app with TypeScript and the App Router, one extra page with a pre and code block, next build, next start. What it emitted:
- The home page and /guide were prerendered as static content with the H1 in the HTML.
- public/ held only images; no llms.txt, robots.txt or sitemap.
- A made-up path returned 404 directly from next start.
- Accept: text/markdown on / returned text/html.
- There is no Markdown pipeline without MDX setup; a hand-written code element with a language class kept its class.
- No JSON-LD and no OpenAPI file.
Scoring rules for every key are on the method page.
What the documentation says
Each statement below carries its source and the date read. Statements a vendor makes about itself are labelled as vendor claims.
- In the App Router, layouts and pages are Server Components by default, and Client Components plus the RSC payload are used to prerender HTML. [primary source] source, read 4 November 2026.
- notFound() renders the 404 page and injects a robots noindex meta tag; it must be called in the render path. [primary source] source, read 4 November 2026.
- Vercel implemented markdown content negotiation on its own Next.js blog and changelog with a rewrite in next.config.ts and a route handler. [primary source, 2026-02-03] source, read 4 November 2026.
- nextjs.org/docs/llms.txt was 51,255 bytes with 305 links on 2026-11-04. [primary source] source, read 4 November 2026.
What it does not do
- Does not generate llms.txt.
- Does not negotiate markdown without a rewrite and handler.
Compare and replace
- Next.js (App Router defaults) against Astro
- Next.js (App Router defaults) against Nuxt
- Alternatives to Next.js (App Router defaults)
- Next.js: vendor profile
- Vercel: vendor profile
- Next.js (App Router defaults) home page
Sources
- Next.js: Server and Client Components https://nextjs.org/docs/app/getting-started/server-and-client-components, read 4 November 2026
- Next.js: notFound https://nextjs.org/docs/app/api-reference/functions/not-found, read 4 November 2026
- Vercel: Making agent-friendly pages with content negotiation https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation, read 4 November 2026
- nextjs.org https://nextjs.org/docs/llms.txt, read 4 November 2026
- nextjs.org https://nextjs.org/docs/app/getting-started/route-handlers, read 4 November 2026
- nextjs.org https://nextjs.org/docs/app/api-reference/config/next-config-js/rewrites, read 4 November 2026
- nextjs.org https://nextjs.org/docs/app/guides/mdx, read 4 November 2026
- nextjs.org https://nextjs.org/, read 4 November 2026
Last reviewed 4 November 2026