npm / @langchain/langgraph-sdk
@langchain/langgraph-sdk
What changed in @langchain/langgraph-sdk 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
3 breaking3 new APIs and options1 behavior and defaults12 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@langchain/langgraph-sdk 119 changes
Breaking changes 3
Server closes with 4000 plus a 4xx status, except 4408 and 4429, now end the event stream with an error carrying
statusinstead of reconnecting; other 4xxx closes still reconnect.Send task paths and node-error-handler task paths now use Python-compatible shapes, changing task metadata and task ids for functional task() calls under those tasks.
Writes from tasks in one superstep are now applied and replayed in (task_path, task_id, idx) order instead of task-id order, aligning with Python and preventing run-to-run permutations.
New APIs and options 3
The method accepts an optional serialized task path; custom savers must persist it and return pending writes in the new sort order.
A new export provides comparison for the sort keys used to order pending writes consistently across checkpoint savers.
A new export provides the sort key used to order pending writes consistently across checkpoint savers.
Behavior and default changes 1
SQLite and Postgres gain a task_path column, while Redis and MongoDB documents gain a task_path field; SQLite and Postgres migrate it automatically on setup().
Fixes and other changes 12
A command whose send fails no longer leaves a response promise behind to be rejected later as an unhandled rejection.
The root-namespace messages projection now fills from the root event stream instead of throwing on every event and remaining empty.
Handles for cut-off messages now settle with an
abortederror instead of remaining unresolved.A replayed completion from an earlier run no longer settles a newly submitted run early, clears
isLoading, or firesonCompletedwhile the new run is still going.A WebSocket thread stream that fails permanently now reaches
ThreadStream.onError, allowinguseStreamto seterrorand clearisLoading, as with SSE.Cut-off replies are removed when their run ends and stay removed across refreshes and other tabs; completed replies remain visible during pauses and are replaced when the run resumes.
The controller skips events produced before the loaded checkpoint, preventing earlier turns from replaying into stream state; scoped views still receive full history.
The first update superstep is sealed so touched DeltaChannels snapshot on the update checkpoint, preventing finished sibling writes and update writes from replaying in the wrong order.
Resumed superstep delta writes replay in live order, interleaving with loaded writes by task path; loaded writes are no longer stored twice.
Detection now accepts both the old and new Send-task path shapes.
Update tasks carry (__interrupt__, i) task paths so multiple updates in one superstep writing the same DeltaChannel replay in the order given.
Client construction now copies defaultHeaders instead of writing x-api-key into the caller's object, preventing clients from sharing headers and sending another client's API key.