unstale

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

@unstale/cli on npm

@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 status instead of reconnecting; other 4xxx closes still reconnect.

    1.12.5release notes

  • 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.

    1.12.4release notes

  • 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.

    1.12.4release notes

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.

    1.12.4release notes

  • A new export provides comparison for the sort keys used to order pending writes consistently across checkpoint savers.

    1.12.4release notes

  • A new export provides the sort key used to order pending writes consistently across checkpoint savers.

    1.12.4release notes

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().

    1.12.4release notes

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.

    1.12.5release notes

  • The root-namespace messages projection now fills from the root event stream instead of throwing on every event and remaining empty.

    1.12.5release notes

  • Handles for cut-off messages now settle with an aborted error instead of remaining unresolved.

    1.12.5release notes

  • A replayed completion from an earlier run no longer settles a newly submitted run early, clears isLoading, or fires onCompleted while the new run is still going.

    1.12.5release notes

  • A WebSocket thread stream that fails permanently now reaches ThreadStream.onError, allowing useStream to set error and clear isLoading, as with SSE.

    1.12.5release notes

  • 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.

    1.12.5release notes

  • The controller skips events produced before the loaded checkpoint, preventing earlier turns from replaying into stream state; scoped views still receive full history.

    1.12.5release notes

  • 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.

    1.12.4release notes

  • Resumed superstep delta writes replay in live order, interleaving with loaded writes by task path; loaded writes are no longer stored twice.

    1.12.4release notes

  • Detection now accepts both the old and new Send-task path shapes.

    1.12.4release notes

  • Update tasks carry (__interrupt__, i) task paths so multiple updates in one superstep writing the same DeltaChannel replay in the order given.

    1.12.4release notes

  • 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.

    1.12.3release notes