LangGraph Release Week Recap

LangGraph Release Week Recap

See what we released for LangGraph.js and Python over the past few weeks to speed up development workflows and gain more control at every level of your graph.

2 min read

Over the past few weeks, we rolled out new features for both LangGraph.js and LangGraph Python, improving both low level workflows and prebuilt agents.

These new features make it easier to build workflows with faster development cycles, more efficient runs, and greater control at every level of your graph.

Here’s a quick recap of what’s new:

1. Node Caching ♻️

We kicked off the week by introducing node/task level caching. Now you can cache the results of individual nodes in your LangGraph workflow, reducing redundant computation and speeding up execution. Node caching is particularly helpful for speeding up development cycles.

🔗 Python docs | JS docs

2. Deferred Nodes 🕰️

Next, we added support for deferred nodes — nodes whose execution is postponed until all upstream paths complete. Deferred nodes are ideal for map-reduce, consensus, and agent collaboration workflows.

🔗 Python docs | JS docs

3. Pre/Post Model Hook 🪝

Our prebuilt ReAct agents now support more customizable message flow with pre/post model hooks. Pre model hooks ag great for summarizing message history (controlling context bloat) and post model hooks are ideal for guardrails and human-in-the-loop interactions.

As a nice bonus, check out these interactive docs that help you visualize react agent workflows.

🔗  Python docs | JS docs

4. Builtin Provider Tools 🔍

You can now use builtin provider tools like web search and Remote MCP tools with the prebuilt ReAct agent. Simply pass in the tool specification dict to the list of tools, and you’re golden!

JS Enhancements

In addition to the above features introduced in both Python and JS, we’ve also added a few improvements specifically on the JS side.

1. Resumable Streams ⏩

Make your app resilient to page reloads or network hiccups with reconnectOnMount. Streams resume automatically — no lost tokens, no extra code.

🔗 JS docs

2. DevX Improvements 🧘

Finally, we've made a bunch of changes to improve the day-to-day developer experience with LangGraph JS v0.3:

  • .stream() method is now fully type-safe, returning the state updates and values depending on your streamMode. No more any and unsafe casts littered throughout the code. The same is coming in Python soon!
  • .addNode({node1, node2, ...}) and .addSequence({node1, node2, ...}) is now available for StateGraph, reducing the boilerplate of constructing a simple workflow.
  • Interrupts are now returned in .invoke() and "values" stream modes, allowing you to handle the interrupt directly without the need to call getState() afterwards.

Follow @LangChainAI, @SydneyRunkle (Python), and @__dqbd (JS) to stay up to date on what’s next. 👀