Next.js: vendor profile
In short
Next.js App Router pages render on the server, so page text is in the first HTML response, but llms.txt and markdown routes are not part of the framework. nextjs.org answers Accept: */* with markdown and Vary: Accept through code Vercel wrote for that site. A streamed response can still send 200 for a missing record after a loading fallback.
At a glance
standards.txt nextjs
llms-txt = no statement
markdown-negotiation = partial
markdown-twin = no statement
initial-html = supports
real-404 = partial
vary-accept = no statement
1 supports, 2 partial or announced, 3 no statement.
Next.js Framework
React framework from Vercel. Its App Router renders on the server and prerenders static routes, so page text is in the first HTML response; robots.txt, sitemaps and JSON-LD come from file conventions and code the site owner writes.
- Type
- Framework
- Operator, as the facts below state it
- Vercel
- Home page
- nextjs.org, answered HTTP 200 on 2026-11-05
- Last read
- 5 November 2026
What it does for this layer
- Next.js 16 came out on 2025-10-21 with Turbopack as the default bundler for new projects and proxy.ts replacing middleware.ts as the file that runs before a request reaches a route. [primary source, 2025-10-21] source, read 5 November 2026.
- Next.js 16.4, released on 2026-10-06, switches Cache Components on for every app made with create-next-app, and the release post says that model becomes the default in Next.js 17. [primary source, 2026-10-06] source, read 5 November 2026.
- Next.js fixes the HTTP status the moment a streamed response starts, at the first Suspense fallback or loading.tsx render; a notFound() reached later leaves the page at 200 with a noindex meta tag, which the docs admit some crawlers file as a soft 404. [primary source] source, read 5 November 2026.
- Next.js 15.4.0 added an experimental app/global-not-found.js that answers URLs matching no route at all and skips layouts, aimed at apps with several root layouts or a dynamic segment such as app/[country] at the top. [primary source] source, read 5 November 2026.
- For pages whose generateMetadata waits on data, Next.js sends the UI first and appends the title and meta tags to the body when they resolve; only user agents it classes as HTML-limited bots, such as facebookexternalhit, get them inside the head. [primary source] source, read 5 November 2026.
- The htmlLimitedBots key in next.config takes a regular expression that replaces the built-in bot list (Google crawlers, Bingbot, Twitterbot, Slackbot); setting it to /.*/ turns streaming metadata off, so an AI fetcher missing from the default list also gets metadata in the head. [primary source] source, read 5 November 2026.
- Next.js has generated robots.txt and sitemap.xml from app/robots.ts and app/sitemap.ts since version 13.3.0, while its documentation index lists no matching file convention for llms.txt. [primary source] source, read 5 November 2026.
- Next.js leaves JSON-LD to the developer, and its guide says to write a native script tag in layout.js or page.js instead of next/script, and to swap the < character for \u003c because JSON.stringify does not sanitize XSS strings. [primary source] source, read 5 November 2026.
- Since Next.js 16.2 (2026-03-18), create-next-app writes an AGENTS.md that sends coding agents to Markdown docs bundled in node_modules/next/dist/docs; that file serves agents editing the code, not agents reading the published site. [primary source, 2026-03-18] source, read 5 November 2026.
- Next.js is released under the MIT License with the copyright held by Vercel, Inc., so the framework itself costs nothing to use or self-host. [primary source] source, read 5 November 2026.
- On 2026-11-05 nextjs.org/blog answered a curl request carrying Accept: */* with 19,216 bytes of text/markdown and Vary: Accept, and sent 1,052,520 bytes of HTML only when Accept named text/html; that HTML response's Vary header did not list Accept. [observed, 2026-11-05] source, read 5 November 2026.
- On 2026-11-05 nextjs.org had no robots.txt (/robots.txt answered 404), a made-up path answered 404, /llms.txt answered 200 with a 14,592-byte index, and blog posts answered at a .md twin such as /blog/next-16.md with text/markdown. [observed, 2026-11-05] source, read 5 November 2026.
Products and plans
| Product | What it is | Price | As of | Source |
|---|---|---|---|---|
| Next.js | Open-source React framework with server rendering, static prerendering and file conventions for robots.txt, sitemaps and not-found pages. | Free, open source MIT License; hosting is billed by whichever host runs it | 2026-11-05 | source |
Standards
| Standard | Status | What the vendor's pages say | Source |
|---|---|---|---|
| llms-txt | no statement | No llms.txt file convention in the Next.js docs index read on 2026-11-05; only robots and sitemap conventions exist. nextjs.org serves its own file. | source |
| markdown-negotiation | partial | Nothing built in; Vercel documents a next.config.ts rewrite plus a route handler for its own Next.js blog. | source |
| markdown-twin | no statement | No .md route convention found in the Next.js docs index; the .md URLs on nextjs.org come from Vercel's own site code. | none |
| initial-html | supports | Server rendering and prerendering by default; with Cache Components a prerendered static shell is sent first. | source |
| real-404 | partial | A 404 status before streaming starts; once streaming has begun the status stays 200 with a noindex tag. | source |
| vary-accept | no statement | No statement found in the Next.js docs on Vary: Accept; nextjs.org sends it only on its markdown responses. | none |
Checks on its own site
| Reading | Result | Date |
|---|---|---|
| Home page request | HTTP 200; H1 in the initial HTML: yes; 516 words; 2 JSON-LD blocks | 2026-11-05 |
| Request with Accept: text/markdown | HTTP 200, text/markdown, Vary: Accept | 2026-11-05 |
| /llms.txt at the host root | HTTP 200, text/plain, 14 KB, starts with an H1 | 2026-11-05 |
| A made-up path | HTTP 404 | 2026-11-05 |
| Ora score, cached | 79, grade B | 2026-11-02 |
| Cloudflare keyless scan | 27, L1 Basic Web Presence | 2026-11-05 |
| Shared crawl row | outside the ranked slice; home page HTTP 200; H1 in the HTML: yes; 653 words; JSON-LD types: SoftwareApplication, WebSite, Organization; answers markdown: yes; made-up path HTTP 404; llms.txt valid: yes | 2026-11-04 |
What it does not do
- Next.js ships no llms.txt or markdown route of its own; the markdown that nextjs.org returns comes from code Vercel wrote for that site, not from a framework setting.
Related pages on this site
- Frameworks in this section
- Next.js (App Router defaults): platform profile and rubric scores
- The Plain Fetch viewer
Sources
- Next.js: home page https://nextjs.org/, read 5 November 2026
- Next.js 16 https://nextjs.org/blog/next-16, read 5 November 2026
- Next.js 16.4 https://nextjs.org/blog/next-16-4, read 5 November 2026
- loading.js (Status codes) https://nextjs.org/docs/app/api-reference/file-conventions/loading, read 5 November 2026
- not-found.js and global-not-found.js https://nextjs.org/docs/app/api-reference/file-conventions/not-found, read 5 November 2026
- generateMetadata (Streaming metadata) https://nextjs.org/docs/app/api-reference/functions/generate-metadata, read 5 November 2026
- htmlLimitedBots https://nextjs.org/docs/app/api-reference/config/next-config-js/htmlLimitedBots, read 5 November 2026
- robots.txt file convention https://nextjs.org/docs/app/api-reference/file-conventions/metadata/robots, read 5 November 2026
- How to implement JSON-LD in your Next.js application https://nextjs.org/docs/app/guides/json-ld, read 5 November 2026
- Next.js 16.2: AI Improvements https://nextjs.org/blog/next-16-2-ai, read 5 November 2026
- Next.js license https://raw.githubusercontent.com/vercel/next.js/canary/license.md, read 5 November 2026
- nextjs.org/blog (observed headers) https://nextjs.org/blog, read 5 November 2026
- nextjs.org robots.txt, 404 and .md checks (observed) https://nextjs.org/robots.txt, read 5 November 2026
- Next.js docs llms.txt https://nextjs.org/docs/llms.txt, read 5 November 2026
- Making agent-friendly pages with content negotiation https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation, read 5 November 2026
Last reviewed 5 November 2026