npm / @langchain/langgraph-checkpoint
@langchain/langgraph-checkpoint
What changed in @langchain/langgraph-checkpoint 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
6 breaking4 new APIs and options2 behavior and defaults6 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@langchain/langgraph-checkpoint 118 changes
Breaking changes 6
BaseStore gets, deletes, and namespace-listing filters reject empty, non-string, or period-containing labels with InvalidNamespaceError instead of returning no results.
Task IDs for functional task() calls under a Send or handler task change with the updated task paths.
Writes to the same DeltaChannel in a superstep are applied and replayed in (task_path, task_id, idx) order instead of task-id order, aligning with Python langgraph.
getTuple and list must return pendingWrites in writesSortKey order; third-party savers that ignore this can replay a different DeltaChannel value.
Search prefixes now match at namespace segment boundaries; empty-prefix searches remain unrestricted.
Labels containing colons are rejected.
New APIs and options 4
putWrites accepts an optional taskPath containing the serialized task path; custom savers must persist it and return pending writes in the new sort order.
A new export provides comparison of pending-write sort keys for the required ordering.
SQLite and Postgres gain a task_path column, migrated automatically on setup; Redis and MongoDB documents gain a task_path field.
A new export provides the sort key used to order pending writes by task path, task id, and index.
Behavior and default changes 2
Task metadata changes to reflect the new Send and node-error-handler task path shapes.
The SDK's Send-task detection accepts both the old and new task path shapes.
Fixes and other changes 6
AsyncBatchedStore validates namespace labels before queueing, so a failing namespace rejects only its own call; in-graph puts also reject a langgraph root label and an empty namespace.
bulkUpdateState seals the first update superstep by snapshotting affected DeltaChannels on the update checkpoint, preventing writes from replaying in the wrong order.
Resumed delta writes replay in live order, interleaving with loaded writes by task path; writes loaded with the checkpoint are no longer stored twice.
MemorySaver uses locale-independent checkpoint ID ordering in getTuple, list, and getDeltaChannelHistory, consistent with UUID6 timestamp order and the before filter.
When config has no checkpoint_id, the method reads from the thread's latest checkpoint, like getTuple and the other savers.
bulkUpdateState and updateState update tasks carry (__interrupt__, i) task paths so multiple updates writing the same DeltaChannel replay in the given order.