Which Claude model knows next.js 16 best?

Claude Fable 5.1 (measured at 16.1.0) — nothing measured here sits above it. Of the 6 pairs among the 4 subjects with a measured next.js boundary, 5 are separated at all (Claude Fable 5.1 above Claude Fable 5, Claude Fable 5.1 above Claude Opus 5, Claude Fable 5.1 above Claude Sonnet 5, Claude Fable 5 above Claude Sonnet 5 and Claude Opus 5 above Claude Sonnet 5); the rest overlap, and an overlap is a tie rather than a rank. Read "best" precisely: it means best at version attribution — the newest next.js release whose contents the subject can correctly attribute to that release — not most capable at writing next.js code. A subject past its boundary often writes working code with a newer API while naming the wrong release for it. The order is by measured boundary and by nothing else — the finding counts below are deliberately not the ranking, because probing effort is not equal: Claude Opus 5 has 7 runs published on next.js against Claude Sonnet 5's 4, and a subject probed more often has more chances to be caught.

Ranked by one rule, applied to every page of this kind: a subject is placed above another only where the whole of its measured boundary interval sits above the whole of the other's (its lowest measured boundary above the other's highest); every overlap is a tie, and finding counts are not the order. Every figure below is read from the dataset at build time; nothing on this page is written by hand. next.js 16 means the major that began at 16.0.0 (2025-10-22); next.js was at 16.3.4 when this index last verified against it (2026-09-05).

The measurements

SubjectBoundary measuredRuns bracketing itStated cutoffFindings charged
Claude Fable 5.1
nothing measured above it
16.1.0 x4
2025-12-18
4 of 4 2026-06
~6 months behind
0
Claude Fable 5 16.0.0 x4
2025-10-22
4 of 4 2026-01
~3 months behind
3
1x S1 breaks-build, 2x S2 silently-wrong
Claude Opus 5 16.0.0 x7
2025-10-22
7 of 7 2026-05
~7 months behind
10
3x S1 breaks-build, 5x S2 silently-wrong, 2x S4 wrong-metadata
Claude Sonnet 5 15.0.0 x2
2024-10-21
15.3.0
2025-04-09
15.5.0
2025-08-20
4 of 4 2025-06, 2026-01
~0 to ~15 months behind
8
3x S1 breaks-build, 2x S2 silently-wrong, 1x S3 deprecated, 2x S4 wrong-metadata

Where a subject shows more than one boundary, those are separate draws of the same measurement, printed rather than averaged: the mean of two draws is a release nothing measured. A subject with one bracketing run has an interval one release wide because it was measured once, not because it is stable.

What these measurements actually separate

A subject is placed above another only where the whole of its measured interval sits above the whole of the other’s. Overlaps are ties. That is a partial order, not a table with a winner, and this is what it separates on next.js:

Ties are not merged into tiers. A greedy sweep would put two subjects in the same tier because a third with a wide spread overlaps both, and would print a relation nothing measured.

Why this is not ranked by findings

Finding counts measure what probing found, and probing effort is not equal across subjects. Sorting by them would publish testing effort as model quality, so they are printed and not ranked on.

SubjectPublished runs on next.jsFindings chargedFindings per run
Claude Opus 57101.4
Claude Fable 5430.8
Claude Fable 5.1400.0
Claude Sonnet 5482.0

Findings per run is printed for the same reason: it is the count adjusted for effort, and it is still not the ranking — the batteries differ in what they probe, so two runs are not one unit.

One subject at a time

The same data, asked the other way round — one page per subject, with its boundary measurements, its findings on next.js, and how repeatable the boundary was.

The same question, asked of the other libraries