LangGraph Updates & Release Notes
53 updates curated from 1 source by the Releasebot Team. Last updated: May 23, 2026
- May 22, 2026
- Date parsed from source:May 22, 2026
- First seen by Releasebot:May 23, 2026
langgraph-sdk==0.3.15
LangGraph releases a new SDK update with better cron search and count filtering, safer URL handling for caller-supplied identifiers, and refreshed package versions across the stack.
Changes since sdk==0.3.14
- release(checkpoint): 4.1.1 (#7890)
- release(sdk-py): 0.3.15 (#7891)
- fix(sdk-py): percent-encode caller-supplied identifiers in URL paths (#7893)
- release(langgraph): 1.2.1 (#7883)
- chore(deps): bump idna from 3.11 to 3.15 in /libs/sdk-py (#7863)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/sdk-py (#7764)
- chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/sdk-py (#7789)
- release: bump alpha packages to official versions (#7775)
- chore(langgraph): bump langchain-core to 1.4.0 (#7767)
- feat(sdk-py): support metadata filter for crons search/count (#7737)
- chore(deps): bump ty from 0.0.23 to 0.0.33 in /libs/sdk-py (#7666)
- May 22, 2026
- Date parsed from source:May 22, 2026
- First seen by Releasebot:May 23, 2026
langgraph-checkpoint==4.1.1
LangGraph fixes checkpoint envelope revival and updates checkpoint dependencies in 4.1.1.
Changes since checkpoint
release(checkpoint): 4.1.1 (#7890)
fix(checkpoint): restrict lc:2 envelope revival to default constructor (#7892)
chore(deps): bump idna from 3.11 to 3.15 in /libs/checkpoint (#7860)
chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/checkpoint (#7784)
Original source All of your release notes in one feed
Join Releasebot and get updates from LangChain and hundreds of other software products.
- May 21, 2026
- Date parsed from source:May 21, 2026
- First seen by Releasebot:May 22, 2026
langgraph==1.2.1
LangGraph ships 1.2.1 with opt-in before_builtins stream transformers and fixes to keep tool results out of v3 messages.
Changes since 1.2.0
release(langgraph): 1.2.1 (#7883)
feat(langgraph): add before_builtins opt-in for stream transformers (#7882)
chore(deps): bump idna from 3.11 to 3.15 in /libs/langgraph (#7866)
fix(langgraph): keep tool results out of v3 messages (#7838)
chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/langgraph (#7788)
Original source - May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 12, 2026
langgraph==1.2.0
LangGraph releases a new update with official package versions and key reliability upgrades, including durable error-handler resume across host crashes, a new set_node_defaults() option for StateGraph, and checkpoint and delta channel improvements.
Changes since 1.2.0a7
release: bump alpha packages to official versions (#7775)
feat(langgraph): durable error-handler resume across host crashes (#7773)
feat(langgraph): add set_node_defaults() to StateGraph (#7747)
chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/langgraph (#7766)
chore(deps): bump mistune from 3.2.0 to 3.2.1 in /libs/langgraph (#7733)
chore(langgraph): bump langchain-core to 1.4.0 (#7767)
feat(checkpoint): force delta channel snapshot after max supersteps since last snapshot (#7746)
test(langgraph): de-flake heartbeat progress test (#7735)
chore(langgraph): re-implement exit mode for delta channel (#7730)
chore(deps): bump ty from 0.0.23 to 0.0.33 in /libs/sdk-py (#7666)
docs(checkpoint): mark DeltaChannel and delta-history APIs as beta (#7732)
chore(deps): bump jupyter-server from 2.17.0 to 2.18.0 in /libs/langgraph (#7713)
feat(checkpoint-sqlite): override get_delta_channel_history with streaming walk (#7702)
chore: "chore: minor clean up around checkpoint and delta channel" (#7706)
chore: minor clean up around checkpoint and delta channel (#7705)
Original source - May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 12, 2026
langgraph-prebuilt==1.1.0
LangGraph ships alpha updates with official package versions, a new checkpoint-sqlite streaming walk override, and dependency bumps.
Changes since prebuilt==1.1.0a2
release: bump alpha packages to official versions (#7775)
chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/prebuilt (#7763)
chore(langgraph): bump langchain-core to 1.4.0 (#7767)
chore(deps): bump ty from 0.0.23 to 0.0.33 in /libs/sdk-py (#7666)
feat(checkpoint-sqlite): override get_delta_channel_history with streaming walk (#7702)
chore(deps-dev): bump the minor-and-patch group across 1 directory with 3 updates (#7698)
release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
release: alpha bump langgraph 1.2.0a6 (#7697)
Original source - May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 12, 2026
langgraph-cli==0.4.26
LangGraph releases CLI 0.4.26 with prerelease API version support and dependency updates.
Changes since cli==0.4.25
release(cli): 0.4.26 (#7772)
fix(cli): add support for prerelease api_versions (#7771)
chore(deps): bump the uv group across 2 directories with 1 update (#7749)
chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/cli (#7765)
chore(deps): bump langchain-core from 1.3.0 to 1.3.3 in /libs/cli (#7753)
Original source - May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 12, 2026
langgraph-checkpoint-sqlite==3.1.0
LangGraph ships checkpoint-sqlite updates, bumps dependencies, removes a helper, and adds delta channel checkpointer conformance guidance.
Changes since checkpointsqlite==3.1.0a1
- release: bump alpha packages to official versions (#7775)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/checkpoint-sqlite (#7760)
- chore(deps): bump langchain-core from 1.2.28 to 1.3.3 in /libs/checkpoint-sqlite (#7751)
- chore: remove keepset helper (#7745)
- chore(langgraph): add guide/conformance for delta channel checkpointer (#7736)
- May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 12, 2026
langgraph-checkpoint-postgres==3.1.0
LangGraph ships checkpoint-postgres updates with official package versions, dependency bumps, and a UNION ALL fix.
Changes since checkpointpostgres==3.1.0a4
- release: bump alpha packages to official versions (#7775)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/checkpoint-postgres (#7761)
- chore(deps): bump langchain-core from 1.3.2 to 1.3.3 in /libs/checkpoint-postgres (#7754)
- fix(checkpoint-postgres): add column aliases to seed-blob branch of delta stage-2 UNION ALL (#7728)
- May 12, 2026
- Date parsed from source:May 12, 2026
- First seen by Releasebot:May 12, 2026
langgraph-checkpoint==4.1.0
LangGraph releases checkpoint updates with alpha packages moved to official versions, a new delta channel snapshot rule after max supersteps, and a Reviver fix. It also marks DeltaChannel and delta-history APIs as beta while refining checkpoint and delta channel behavior.
Changes since checkpoint==4.1.0a4
release: bump alpha packages to official versions (#7775)
chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/checkpoint (#7762)
chore(deps): bump langchain-core from 1.3.2 to 1.3.3 in /libs/checkpoint (#7752)
feat(checkpoint): force delta channel snapshot after max supersteps since last snapshot (#7746)
fix(checkpoint): specify allowed_objects in Reviver (#7743)
chore: remove keepset helper (#7745)
chore(langgraph): add guide/conformance for delta channel checkpointer (#7736)
docs(checkpoint): mark DeltaChannel and delta-history APIs as beta (#7732)
chore(deps): bump the minor-and-patch group across 1 directory with 3 updates (#7670)
chore: "chore: minor clean up around checkpoint and delta channel" (#7706)
chore: minor clean up around checkpoint and delta channel (#7705)
Original source - May 7, 2026
- Date parsed from source:May 7, 2026
- First seen by Releasebot:May 8, 2026
langgraph-cli==0.4.25
LangGraph adds CLI studio deploy support and bumps the CLI version with dependency updates.
Changes since cli==0.4.24
release: bump cli version (#7734)
feat(cli): support studio deploy (#7394)
chore(deps): bump the minor-and-patch group in /libs/cli with 4 updates (#7674)
chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 updates (#7673)
chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example with 7 updates (#7671)
chore: update x links to langchain_oss (#7645)
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 6, 2026
langgraph-sdk==0.3.14
LangGraph releases SDK-Python 0.3.14 with return_minimal for thread updates, adds v3 stream_events support on Pregel, and brings new streaming transformer infrastructure. The update also includes fresh alpha bumps across LangGraph, checkpoint, prebuilt, and timers.
Changes since sdk==0.3.13
release(sdk-py): 0.3.14 (#7712)
feat(sdk-py): add return_minimal to threads update (#7704)
release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
release: alpha bump langgraph 1.2.0a6 (#7697)
release: alpha bump prebuilt 1.1.0a2, langgraph 1.2.0a5 (#7682)
release: alpha bump prebuilt 1.1.0a1, langgraph 1.2.0a4 (#7679)
feat(langgraph): dispatch stream_events(version='v3') on Pregel (#7677)
release: alpha bump (a3) for langgraph, checkpoint, checkpoint-postgres (#7678)
release: alpha for timers (#7647)
chore: update x links to langchain_oss (#7645)
feat(langgraph): add streaming transformer infrastructure and tests (#7519)
chore(deps): bump the minor-and-patch group across 1 directory with 4 updates (ty held back) (#7635)
release(prebuilt): 1.0.12, langgraph 1.1.10 (#7623)
release(checkpoint): 4.0.3 (#7625)
release(prebuilt): 1.0.11 (#7610)
feat(prebuilt): allow ToolNode tools to return list[Command | ToolMessage] (#7596)
chore(langgraph): bump version 1.1.8 -> 1.1.9 (#7563)
release(langgraph): 1.1.8 (#7545)
release(prebuilt): 1.0.10 (#7541)
release(langgraph): 1.1.7 (#7540)
chore(deps): bump langsmith from 0.7.20 to 0.7.31 in /libs/sdk-py (#7528)
release(checkpoint): 4.0.2 (#7518)
chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 in /libs/sdk-py (#7504)
release(langgraph): 1.1.7a2 (#7511)
chore: allow passing some metadata only for tracing purposes (#7383)
release(langgraph): 1.1.7a1 (#7476)
chore(deps): bump langchain-core from 1.2.22 to 1.2.28 in /libs/sdk-py (#7449)
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 6, 2026
langgraph-checkpoint-sqlite==3.1.0a1
LangGraph adds checkpoint-sqlite improvements, including a streaming walk override for get_delta_channel_history, a public get_writes_history saver API, and a delta cadence rework. It also ships alpha bumps across langgraph, checkpoint, checkpoint-postgres, plus alpha timers support.
Changes since checkpointsqlite==3.0.3
feat(checkpoint-sqlite): override get_delta_channel_history with streaming walk (#7702)
Original source
release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
feat: public get_writes_history saver API + delta cadence rework (#7699)
chore(deps): bump the minor-and-patch group in /libs/checkpoint-sqlite with 2 updates (#7668)
release: alpha bump (a3) for langgraph, checkpoint, checkpoint-postgres (#7678)
release: alpha for timers (#7647)
chore: update x links to langchain_oss (#7645)
release(checkpoint): 4.0.3 (#7625)
chore(deps): bump langsmith from 0.6.4 to 0.7.31 in /libs/checkpoint-sqlite (#7524)
release(checkpoint): 4.0.2 (#7518)
docs: document LANGGRAPH_STRICT_MSGPACK for checkpoint security (#7517)
chore(deps): bump pytest from 9.0.2 to 9.0.3 in /libs/checkpoint-sqlite (#7502)
chore(deps): bump langchain-core from 1.2.22 to 1.2.28 in /libs/checkpoint-sqlite (#7451)
chore(deps): bump the minor-and-patch group in /libs/checkpoint-sqlite with 3 updates (#7374)
chore(deps): bump pygments from 2.19.2 to 2.20.0 in /libs/checkpoint-sqlite (#7350)
chore(deps): bump langchain-core from 1.2.11 to 1.2.22 in /libs/checkpoint-sqlite (#7318)
chore(deps): bump requests from 2.32.5 to 2.33.0 in /libs/checkpoint-sqlite (#7279)
chore(deps): bump the all-dependencies group in /libs/checkpoint-sqlite with 2 updates (#7248)
chore(deps): bump ruff from 0.15.5 to 0.15.6 in /libs/checkpoint-sqlite in the all-dependencies group (#7191)
chore(deps): bump orjson from 3.11.5 to 3.11.6 in /libs/checkpoint-sqlite (#7144)
chore(deps): bump the all-dependencies group across 1 directory with 2 updates (#7070)
release(checkpoint): 0.4.1 (#6966)
chore: add serde events (#6954)
chore: update defaults (#6953)
release: rc2 (#6949)
release: Candidate (#6947)
Merge commit from fork
chore(deps-dev): bump ruff from 0.15.1 to 0.15.2 in /libs/checkpoint-sqlite in the all-dependencies group (#6913)
chore: add make type target for type checking (#6748)
chore(deps): bump ruff from 0.14.13 to 0.15.1 in /libs/checkpoint-sqlite in the all-dependencies group (#6807)
chore(deps): bump langchain-core from 1.2.7 to 1.2.11 in /libs/checkpoint-sqlite (#6828) - May 4, 2026
- Date parsed from source:May 4, 2026
- First seen by Releasebot:May 4, 2026
langgraph==1.2.0a7
LangGraph adds a public get_writes_history saver API and reworks delta cadence in an alpha update.
Changes since 1.2.0a6
release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
feat: public get_writes_history saver API + delta cadence rework (#7699)
Original source - May 4, 2026
- Date parsed from source:May 4, 2026
- First seen by Releasebot:May 4, 2026
langgraph==1.2.0a6
LangGraph adds alpha controls for node execution with timeouts, error recovery, and graceful shutdown, plus DeltaChannel to reduce checkpoint overhead for long-running threads and a new beta content-block streaming API with typed per-channel projections.
langgraph v1.2 (alpha)
This release adds finer-grained control over node execution — timeouts, error recovery, and graceful shutdown — a new channel type that cuts checkpoint overhead for long-running threads, and a new content-block-centric streaming API (v3) with typed, per-channel projections.
DeltaChannel (beta)
A new channel type that stores only the incremental delta at each step rather than re-serializing the full accumulated value. Most useful for channels that grow large over time — for example, a message list in a long-running thread. Without it, the full message list is written into every checkpoint; with DeltaChannel, only the new messages from each step are stored.
Use snapshot_frequency=K to write a full snapshot every K steps and bound read latency:
from typing import Annotated, Sequence from typing_extensions import TypedDict from langgraph.channels import DeltaChannel # batch reducer: receives the current value and all writes from the superstep at once def list_reducer(messages: list[str], writes: Sequence[list[str]]) -> list[str]: return [*messages, *(item for write in writes for item in write)] class State(TypedDict): messages: Annotated[list[str], DeltaChannel(list_reducer, snapshot_frequency=5)]Read the DeltaChannel docs →
Per-node timeouts
Pass timeout= to add_node to cap how long a single attempt may run. You can set a hard wall-clock limit (run_timeout), an idle limit that resets on progress (idle_timeout), or both. When the limit fires, LangGraph raises NodeTimeoutError, clears any writes from that attempt, and hands off to the retry policy. Timeouts apply to async nodes only; sync nodes with timeout= are rejected at compile time.
from langgraph.types import RetryPolicy, TimeoutPolicy # Hard wall-clock limit: abort after 2 minutes regardless of progress builder.add_node( "call_model", call_model, timeout=TimeoutPolicy(run_timeout=120), retry_policy=RetryPolicy(max_attempts=3), ) # Idle limit: abort if no output is yielded for 30 seconds — # useful for streaming nodes where partial progress should keep the clock reset builder.add_node( "stream_response", stream_response, timeout=TimeoutPolicy(idle_timeout=30), ) # Both: cap total duration and require steady progress builder.add_node( "fetch_and_parse", fetch_and_parse, timeout=TimeoutPolicy(run_timeout=120, idle_timeout=30), ) # Heartbeat: yield sentinel values to reset the idle clock during long async work, # without writing anything meaningful to state async def slow_tool(state: State) -> AsyncIterator[dict]: async for chunk in call_external_api(): process(chunk) yield {} # heartbeat — resets idle_timeout, writes nothing builder.add_node( "slow_tool", slow_tool, timeout=TimeoutPolicy(idle_timeout=10), )Read the timeouts docs →
Node-level error handlers
Pass error_handler= to add_node to run a recovery function after all retries are exhausted. The handler receives a typed NodeError with the failing node name and exception, and can return a Command to update state and route to a different node — useful for Saga/compensation patterns where you want to recover gracefully rather than abort the graph. Handler failures propagate up normally; interrupt() inside a node bypasses the handler as expected.
from langgraph.errors import NodeError from langgraph.types import Command, RetryPolicy def payment_error_handler(state: State, error: NodeError) -> Command: return Command( update={"status": f"compensated: {error.error}"}, goto="finalize", ) builder.add_node( "charge_payment", charge_payment, retry_policy=RetryPolicy(max_attempts=3, retry_on=ConnectionError), error_handler=payment_error_handler, )Read the error handler docs →
Graceful shutdown
Stop an in-flight run cooperatively — after the current superstep completes — and save a resumable checkpoint. Unlike timeouts, which fire mid-node, graceful shutdown waits for running work to finish before halting.
import signal from langgraph.runtime import RunControl from langgraph.errors import GraphDrained control = RunControl() signal.signal(signal.SIGTERM, lambda *_: control.request_drain("sigterm")) try: result = graph.invoke(inputs, config, control=control) except GraphDrained as e: # Stopped cleanly after the current superstep. Resume later with the same config. log.info("graph drained: %s", e.reason) # Resume on next startup: result = graph.invoke(None, config)Read the graceful shutdown docs →
All five features require langgraph>=1.2. Timeouts and error handlers are Python-only; retry policies continue to work in both Python and TypeScript.
New event streaming API (beta)
A new content-block-centric streaming protocol that replaces dict-shaped events with typed, per-channel streams. version="v3" returns a GraphRunStream (sync) or AsyncGraphRunStream (async) — a handle whose typed projections the caller drives by iterating, rather than an iterator of StreamEvent dicts that callers must filter and reassemble.
run = graph.stream_events(input, version="v3") for state in run.values: # one snapshot per superstep print(state) print(run.output) # final state print(run.interrupted, run.interrupts)run.output, run.interrupted, and run.interrupts are populated regardless of which transformers are registered, so the "run to completion and read the result" path stays one line.
Per-LLM streams with typed sub-projections
run.messages yields one ChatModelStream (or AsyncChatModelStream) per LLM call. Each exposes typed sub-projections — text tokens, reasoning, tool calls, usage — so consumers can pick the slice they care about without filtering chunks by hand:
async for chat in graph.astream_events(input, version="v3").messages: async for token in chat.text: print(token, end="", flush=True) tool_calls = await chat.tool_calls.collect() final = await chat.output # finalized AIMessageThis is the recommended path for token-level streaming to a UI in 1.2. Content-block streaming requires v3 end-to-end, including any inner graphs.
Built-in projections
Projection
What it carriesrun.values
full state snapshot per superstep (also drives run.output etc.)run.messages
one ChatModelStream per LLM callrun.lifecycle
subgraph started / completed / failed payloadsrun.subgraphs
navigation handles for direct-child subgraphsOther channels are opt-in — register them via compile(transformers=[...]) or the call-site transformers= on stream_events:
Transformer
AddsUpdatesTransformer
run.updatesCustomTransformer
run.customCheckpointsTransformer
run.checkpointsTasksTransformer
run.tasksDebugTransformer
run.debugfrom langgraph.stream import UpdatesTransformer, CustomTransformer graph = builder.compile(transformers=[UpdatesTransformer, CustomTransformer]) run = graph.stream_events(input, version="v3") for update in run.updates: print(update)Projections are single-consumer by default — iterating run.values twice raises. Use projection.tee(n) (or atee(n) async) for fan-out, or run.interleave("messages", "values") to consume multiple projections in arrival order.
Custom transformers
Compile with transformers=[...] to register custom projections that propagate to subgraph scopes automatically. Each transformer declares the stream modes it needs; the runtime builds the union and subscribes to exactly that — no hardcoded defaults, no overhead for modes nobody consumes.
from typing import Any from langgraph.stream import StreamTransformer, StreamChannel class TokenCounter(StreamTransformer): """Surface per-call token usage for chat models at the run scope.""" required_stream_modes = ("messages",) def __init__(self, scope: tuple[str, ...] = ()) -> None: super().__init__(scope) self._scope_list = list(scope) self.usage: StreamChannel[dict[str, int]] = StreamChannel() def init(self) -> dict[str, Any]: return {"token_usage": self.usage} def process(self, event) -> bool: if event["method"] != "messages": return True if event["params"]["namespace"] != self._scope_list: return True payload, _meta = event["params"]["data"] if not isinstance(payload, dict) or payload.get("event") != "message-finish": return True if "usage" in payload: self.usage.push(payload["usage"]) return True graph = builder.compile(transformers=[TokenCounter]) run = graph.stream_events(input, version="v3") run.output # drive to completion usages = list(run.extensions["token_usage"]) total_in = sum(u.get("input_tokens", 0) for u in usages) total_out = sum(u.get("output_tokens", 0) for u in usages)Migration notes
v3 is opt-in via version="v3"; version="v1" and version="v2" are unchanged.
The protocol is in beta and may change before stabilization.
Original source - May 4, 2026
- Date parsed from source:May 4, 2026
- First seen by Releasebot:May 4, 2026
langgraph-checkpoint-postgres==3.1.0a4
LangGraph ships an alpha bump and a new public get_writes_history saver API with delta cadence rework.
Changes since checkpointpostgres==3.1.0a3
release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
feat: public get_writes_history saver API + delta cadence rework (#7699)
chore(deps): bump the minor-and-patch group in /libs/checkpoint-postgres with 2 updates (#7665)
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.
Similar to LangGraph with recent updates:
- Gemini updates331 release notes · Latest May 20, 2026
- Claude Code updates322 release notes · Latest May 23, 2026
- ChatGPT updates167 release notes · Latest May 21, 2026
- Claude updates90 release notes · Latest May 21, 2026
- Deepseek updates18 release notes · Latest Apr 24, 2026
- Qwen updates24 release notes · Latest May 19, 2026