What AI coding models get wrong about react-router

7 current findings across 19 models, verified against react-router release notes. Latest react-router at last verification: 8.4.0.

Where each model’s react-router version attribution stops

ModelStated cutoffAttribution stops atLag
Claude Fable 5.12026-06 7.9.0 · 2025-09-12 ~9 months
Claude Haiku 4.52025-02 6.28.0 · 2024-11-06 ~3 months
Claude Haiku 4.52025-02 6.20.0 · 2023-11-22 ~14 months
Claude Haiku 4.52025-02 6.15.0 · 2023-08-10 ~18 months
Claude Haiku 4.52025-02 6.20.0 · 2023-11-22 ~15 months
Claude Haiku 4.52025-02 6.4.0 · 2022-09-13 ~29 months
Claude Opus 52026-05 7.9.0 · 2025-09-12 ~8 months
Claude Opus 52026-05 7.9.0 · 2025-09-12 ~8 months
Claude Opus 52026-05 7.9.0 · 2025-09-12 ~8 months
Claude Opus 5.52026-06 7.9.0 · 2025-09-12 ~9 months
Claude Opus 5.52026-06 7.9.0 · 2025-09-12 ~9 months
Claude Opus 5.52026-06 7.9.0 · 2025-09-12 ~9 months
Claude Sonnet 52026-01 7.0.0 · 2024-11-22 ~13 months
Claude Sonnet 52026-01 7.0.0 · 2024-11-22 ~13 months
Claude Sonnet 52026-01 7.0.0 · 2024-11-22 ~13 months
Claude Sonnet 52026-01 7.3.0 · 2025-03-06 ~10 months
Claude Sonnet 52026-01 7.3.0 · 2025-03-06 ~10 months

Measured by asking each model what shipped in a given react-router release, then checking the answer against the release timeline. Not inferred from the vendor’s cutoff date. This is the newest release the model can correctly place, not the newest react-router feature it knows — a model past this point often uses a newer API correctly while naming the wrong release for it. Why that distinction matters.

One subject at a time

The same data, split the way the question usually gets asked — one page per subject, with its boundary measurements, its findings on react-router, and how repeatable the boundary was.

And the comparison, ranked by measured boundary and by nothing else: Which Claude model knows react-router 8 best?

Findings

Sorted by severity. “Chargeable” means the change was published before that model’s own stated cutoff, so the model had the opportunity to know it.

SeverityBeliefModelChanged inChargeableProof
S1breaks-build Installs and imports the whole router from react-router-dom, the package the 7.0.0 collapse folded away — which has no release on the current major at all
react-router (package exports)
Claude Haiku 4.5 7.0.0
2024-11-22
yes source
S1breaks-build Answers "yes" to whether the current release installs on React 17 and Node 18, and states no version changes are needed — the current release refuses both halves of that environment
react-router@7 engine and peer requirements
Claude Haiku 4.5 7.0.0
2024-11-22
yes source
S1breaks-build Builds the per-route cache decision on match.unstable_shouldCallHandler(), which react-router removed at 7.10.0 — on the current release every navigation throws a TypeError and no loader runs
dataStrategy (match.shouldCallHandler / match.shouldRevalidateArgs)
Claude Opus 5.5 7.10.0
2025-12-02
yes source
S1breaks-build Writes the whole middleware and context surface under its pre-7.9.0 unstable_ spellings — unstable_createContext, unstable_RouterContextProvider, the unstable_middleware route key and unstable_getContext — none of which react-router has exported since 7.9.0
middleware / createContext / RouterContextProvider / getContext
Claude Sonnet 5 7.9.0
2025-09-12
yes source
S2silently-wrong Wires the client error tracker to unstable_onError on both <RouterProvider> and <HydratedRouter>, a prop react-router stopped recognising at 7.11.0 — so the shipped code renders clean and reports nothing
onError (HydratedRouter / RouterProvider prop)
Claude Fable 5.1 7.11.0
2025-12-17
yes source
S2silently-wrong Wires the client error tracker to unstable_onError on both <RouterProvider> and <HydratedRouter>, a prop react-router stopped recognising at 7.11.0 — the app renders clean and reports nothing
onError (HydratedRouter / RouterProvider prop)
Claude Opus 5.5 7.11.0
2025-12-17
yes source
S2silently-wrong States as current behaviour that the path helper silently returns the pattern unsubstituted, and ships a workaround for a footgun the library removed eight months ago
generatePath
Claude Opus 5 7.12.0
2026-01-07
yes source

Runs