AI-Readiness Scorecard
next · v16.2.11

Next.js is 92% ready for AI coding agents.

Claude Opus 5 has caught up to Next 15 — the async cookies(), headers(), and draftMode() all compile clean, along with route handlers, middleware, and revalidation. The one thing it still gets wrong is brand new in Next 16: revalidateTag() now takes a second cache-profile argument, and the model writes the old one-arg call.

92/100
Agent-readiness
12 compile clean 1 fails type-check
Model: claude-opus-5 Tasks: 13 Method: tsc against real installed package Run: 2026-07-26
Prisma 7
87
client setup on v6 →
Vercel AI SDK 7
100
clean sweep →
Zod 4
100
clean sweep →
Next.js 16
92
Next 16 revalidateTag
TanStack Query 5
100
fully absorbed →
The gap

The one thing the agent gets wrong

Real code the model generated, verified by the TypeScript compiler against the installed next v16. It's the newest change on the whole board.

Revalidating a cache tagTS2554
Agent wrote (Next ≤15)
import { revalidateTag } from "next/cache"

export async function refreshUsers() {
  revalidateTag("users")
}
Next 16
import { revalidateTag } from "next/cache"

export async function refreshUsers() {
  revalidateTag("users", "max")
}
// 2nd arg: a cache profile
// (string | CacheLifeConfig)
error TS2554: Expected 2 arguments, but got 1.
Next 16 reworked caching. revalidateTag(tag) became revalidateTag(tag, profile) — the second argument ties the revalidation to a cache profile. It's a very recent change, so the model still writes the one-argument Next-15 form. Everything older than this — including Next 15's async request APIs — it gets right.
Mostly caught up

What it gets right — 12 of 13

It already knows the Next 15 async migration.

The big Next 15 breaking change — request APIs became async — is fully learned: the model correctly awaits cookies(), headers(), and draftMode(). Route handlers, middleware, redirects, and path revalidation all compile clean too.

await cookies() await headers() await draftMode() GET / POST / PUT handlers NextResponse.json redirect() notFound() middleware searchParams revalidatePath
Read the whole board together

Readiness tracks the drift window

Next.js is the sharpest illustration of the thesis. The model has fully absorbed Next 15 (the async request APIs from late 2024) — but misses a change from Next 16, the newest major on the board. It's behind on exactly one release: the most recent one.

That's the whole pattern in one library. The gap tracks how recently your SDK changed: TanStack Query v5 (2023) scores 100, the 2025 majors (AI SDK, Zod) are now fully absorbed at 100, and the freshest releases — Next 16 (92), Prisma 7 (87) — are where the agent still writes the old API. It re-opens on every major and closes as models retrain. A moving number, which is what SDKProof tracks.

No opinions — just the compiler

How this was measured

13 realistic Next.js App Router tasks → generated by claude-opus-5 → each solution written into a project with the real installed next v16.2.11 (+ react, @types/react) and type-checked with tsc --noEmit.
A task passes only if it compiles clean. The prompts name the functions but never their signatures — so this measures what the model reaches for, not what it's told. Reproducible: pinned package versions, pinned model.

Is your SDK ready for AI agents?

Right after a major release, agents keep shipping your old API. SDKProof scores it, tracks it across model releases, and tells you exactly what to fix.

See it on GitHub →
early project · scorecards are independent analysis