DEV Community

우주
우주

Posted on

13 Claude doc changes since June that still show up wrong in tutorials

I run a small Claude guide site (Korean first, English translations), and my biggest problem was never writing. It was that a guide I wrote in June is quietly wrong by September, and I usually found out from a reader instead of from the docs.

So I set up something pretty unglamorous: every guide records which official doc it leans on, a GitHub Action refetches those docs daily, and if a phrase I depend on disappears (Node.js 22 or later, beta headers are no longer required) it flags the article. Then I fix it by hand.

Ran a full pass this week. 13 things had drifted since June, and most of them still show up in tutorials and Stack Overflow answers. Here they are.

Claude Code

"Node.js 18 or later" is dead. The native installer needs no Node at all. Only the npm install (v2.1.198+) wants Node 22 or later, and lower versions just print an EBADENGINE warning - it still runs, because the binary is native.

Weekly limits change on Sept 14. The temporary +50% ends and becomes a permanent +25% over the original baseline. That's roughly 17% less headroom than you have right now.

API

Extended thinking: budget_tokens is gone on current models. thinking: {"type": "enabled", "budget_tokens": N} is deprecated on 4.6 and rejected with a 400 on 4.7+ ("thinking.type.enabled" is not supported). Opus 5 / Sonnet 5 / Fable 5.1 think by default; if you want to steer it, use type: "adaptive" with effort.

Structured outputs went GA. No beta header anymore, and the parameter moved from output_format to output_config.format. The Python SDK raises a TypeError if you pass the old field to the beta create(). Only messages.parse() still accepts output_format=.

Previous thinking blocks are kept in context now. On Opus 4.5+, Sonnet 4.6+ and Fable they're preserved by default and count as input tokens. They used to be stripped automatically. If your token math suddenly looks off, this is why. Context editing's thinking-block clearing drops them.

model="opus" is not an API model ID. One-word names are Claude Code /model shortcuts. API aliases only exist for pre-4.6 models (claude-sonnet-4-5, claude-haiku-4-5); from 4.6 on, the dateless ID is the snapshot. I had this wrong in my own guide.

A 429 doesn't always mean rate limit. It's also returned when your usage tier hits its monthly spend cap - and in that case there's no retry-after header, so SDK auto-retries just spin until access resumes. Check for the header before you back off. (A spend limit you set yourself returns 400 instead.)

Streaming can include a fallback content block. When a request gets served by a different model mid-stream, you get a content_block_start/content_block_stop pair with no deltas between them. Code that only concatenates text deltas can ignore it; code that switches on block type cannot.

MCP Python SDK 2.0 renamed the server class. It's from mcp.server import MCPServer. Every older tutorial shows from mcp.server.fastmcp import FastMCP, which is the 1.x API - and uv add "mcp[cli]" installs 2.x today, so you hit the import error immediately.

Claude app

The Artifacts Remix button is gone. You copy a published artifact's code into a new chat and ask for your changes instead. Works on Free, Pro and Max; the original is untouched.

Chat uploads are 500 MB per file now (they were 30 MB), up to 20 files, PDFs up to 1,000 pages. Project files are still 30 MB.

Voice mode is two-way and on every plan, including web and desktop - not mobile-only. Non-English languages are in beta.

The Agent SDK "separate monthly credit" never happened. It was announced for June 15 and paused on June 15. Agent SDK and claude -p still draw from your subscription's usage limits.

How the checker works

It's maybe 200 lines and a daily cron, nothing clever:

  1. A small registry maps each guide to the official doc URL it depends on, plus an exact phrase from that doc (Node.js 22 or later, File size: 500MB per file).
  2. A scheduled job fetches each URL and checks whether the phrase is still there.
  3. If it's gone, the guide gets flagged as drifted and I read the doc diff myself before touching the article.

The phrase check is the part that earns its keep. Watching for "did the page change" gives you noise every time they reword a heading; watching for the one sentence your article actually stands on gives you almost no false positives. Half of the 13 above cost me a debugging session before I realised the doc had moved, so if you maintain runbooks or an internal wiki against a fast-moving API, an afternoon on this pays for itself.

I keep the long versions, with the doc links, over at usingclaude.com. If anything above is already stale, say so - that's genuinely the point.

Top comments (1)

Collapse
 
raknaos profile image
Raknaos

The unglamorous detector beats the elegant one here: pinning articles to the exact doc URL plus the literal phrases they depend on turns doc drift into a CI failure instead of a reader bug report. My only warning from running something similar is that phrase matching is brittle in the useful direction -- it fires when wording changes but also silently passes when the sentence survives and the behaviour behind it moves. Anchoring on a code snippet block (the request shape itself, not the prose around it) caught two changes for us that phrase checks missed.

The 429 one is the sleeper item: a spend-cap 429 with no retry-after header makes SDK auto-retry a spin loop that burns the month's remaining budget floor faster. Are you checking header presence as the discriminator, or parsing the error body for the cap reason -- the second is more precise but breaks the moment they reword it, which is exactly your detector's problem again.