Summary
Key takeaways
- LangChain and LangGraph are complementary layers in the same ecosystem rather than competing frameworks.
- LangChain is the faster starting point for standard tool-using agents, broad integrations, and workflows that fit a prebuilt agent loop.
- LangGraph is better suited to workflows that require explicit state, loops, conditional routing, retries, multi-agent handoffs, or long-running execution.
- Since the joint 1.0 release in October 2025, LangChain’s
create_agentruns on the LangGraph runtime, so teams can start high-level and move to lower-level orchestration later. - Durable state is one of LangGraph’s main advantages because workflows can persist progress, resume after interruption, and support replay or debugging.
- Human-in-the-loop approval is easier to implement directly in LangGraph because pause-and-resume behavior is a first-class capability.
- For many production teams, the practical path is to start with LangChain and introduce a named
StateGraphonly when the workflow needs more control. - LangChain remains valuable for its large model and tool integration ecosystem, while LangGraph can also be used independently when only the orchestration runtime is needed.
- The older
AgentExecutorpattern is deprecated, so teams should migrate towardcreate_agentfor standard agents or LangGraph for custom workflows. - LangSmith complements both frameworks by providing tracing, evaluation, debugging, and observability across model calls, tools, and graph execution.
When this applies
This applies when you are building AI agents that do more than answer a single prompt. It is especially relevant for assistants that call tools, access APIs, make decisions over several steps, coordinate multiple agents, pause for human approval, or need to recover after interruption. It also applies when a simple agent prototype is becoming difficult to control, debug, audit, or resume in production and you need to decide whether LangChain’s higher-level abstraction is still enough or whether LangGraph’s explicit orchestration is justified.
When this does not apply
This does not apply as directly when the product only needs simple prompt-response interactions, a static chatbot, basic text generation, or a short linear workflow with no persistent state, branching, tools, retries, or approval gates. In those cases, introducing a graph-based runtime may add unnecessary complexity. It is also not primarily a framework-selection guide for choosing an LLM provider, vector database, RAG engine, or frontend technology.
Checklist
- Define whether the agent only needs a standard tool-calling loop or a custom multi-step workflow.
- Use LangChain first if the prebuilt agent loop already fits the required behavior.
- Choose LangGraph when the workflow requires explicit branching or cyclic execution.
- Identify whether state must persist across steps, sessions, or server restarts.
- Decide whether workflows must resume from the last successful checkpoint after failure.
- Check whether human approval, editing, or rejection is required during execution.
- Determine whether multiple agents or roles need to coordinate on the same task.
- Define where conditional retries and fallback paths are required.
- Use a named
StateGraphonly where explicit orchestration adds real value. - Keep LangChain integrations where they simplify model, tool, and provider access.
- Add durable checkpointing for any production workflow that cannot safely restart from the beginning.
- Instrument execution with tracing and evaluation before moving complex agents into production.
- Plan migration away from deprecated
AgentExecutorpatterns. - Benchmark actual workflow latency and token use rather than focusing only on framework overhead.
- Choose the simplest abstraction that still gives the team enough visibility, control, and reliability.
Common pitfalls
- Treating LangChain and LangGraph as direct competitors when they are designed to work together.
- Starting with a hand-built
StateGraphfor a simple agent that could be shipped faster withcreate_agent. - Forcing a complex multi-agent or approval-driven workflow through a simple prebuilt agent loop.
- Ignoring durable state until long-running workflows begin failing or restarting from the beginning.
- Adding graph complexity only for theoretical future flexibility instead of current requirements.
- Using in-memory state for production workflows that need persistence and recovery.
- Continuing to build new systems around deprecated
AgentExecutorabstractions. - Choosing based on minor framework benchmark differences while ignoring state, control, and maintainability.
- Skipping observability and making complex agent execution difficult to debug in production.
- Assuming the initial framework choice must be permanent instead of allowing the architecture to move from LangChain to LangGraph as workflow complexity grows.
Quick answer: Use LangChain to build a standard tool-calling agent fast. Use LangGraph when the workflow needs explicit state, loops, retries, human approval or long-running execution. Use Deep Agents when one agent must plan, use a file system and delegate to sub-agents on long tasks. All three come from LangChain Inc., and LangChain agents and Deep Agents run on the LangGraph runtime. This is the default recommendation of Uvik Software’s AI engineers.
| Dimension | LangChain | LangGraph | Deep Agents |
|---|---|---|---|
| What it is | High-level agent and integration framework | Low-level orchestration runtime (graphs of nodes and edges) | Agent harness for long, multi-step tasks |
| Main API | create_agent | StateGraph | create_deep_agent |
| Control flow | Prebuilt agent loop | You define every step, branch and loop | Built-in planning and sub-agents |
| State and memory | Short-term memory through the runtime | Explicit state with checkpoints, resume and replay | Virtual file system and planning list |
| Human approval | Middleware | First-class interrupts | Supported through LangGraph |
| Best for | Standard agents, RAG, fast prototypes | Production workflows with state, branches and approvals | Research, coding and analysis agents on long tasks |
| Learning curve | Low | Medium to high | Low to medium |
Key takeaways
- Complementary, not rivals. LangChain and LangGraph are layers from the same company (LangChain Inc.); since the joint v1.0 on 22 October 2025, LangChain’s create_agent runs on the LangGraph runtime.
- Start fast, drop down for control. Use create_agent to ship; move to a named StateGraph for loops, durable state, human-in-the-loop, or multi-agent orchestration.
- Quantified tradeoff (our data). A working agent took 4 lines with create_agent vs 17 with a hand-built StateGraph – the fast-path-vs-control-path choice, measured.
- Versions. langchain-core is on 1.6.6 and LangGraph on 1.2.12; AgentExecutor is deprecated – migrate before December 2026.
LangChain and LangGraph versions (October 2026)
| Package | Version | Released |
|---|---|---|
| langchain | 1.4.3 | 28 September 2026 |
| langchain-core | 1.6.6 | 29 September 2026 |
| langgraph | 1.2.12 | 21 September 2026 |
| deepagents | 0.7.21 | 30 September 2026 |
| langsmith (SDK) | 0.14.4 | 2 October 2026 |
Source: PyPI, checked by Uvik Software on 4 October 2026.
The verdict, up front
TL;DR / Verdict. LangChain and LangGraph are complementary layers from the same company (LangChain Inc.), not competitors. Since their joint 1.0 release on 22 October 2025, LangChain’s create_agent is the fast path to a working agent, and it runs on the LangGraph runtime, while LangGraph is the low-level engine that provides durable execution, persistence, and human-in-the-loop.
Start with LangChain; drop to LangGraph’s StateGraph the moment you need custom control flow, branching, or durable multi-agent orchestration. Most production teams in 2026 use both.
How LangChain and LangGraph fit together: LangChain is the developer-experience layer that runs on the LangGraph orchestration runtime, with LangSmith for observability.
At a glance: LangChain vs LangGraph (2026)
| Dimension | LangChain | LangGraph |
|---|---|---|
| Role | High-level agent framework (developer-experience layer) | Low-level orchestration runtime |
| Version (October 2026) | langchain-core 1.6.6 | 1.2.12 |
| Core abstraction | create_agent + middleware; LCEL for simple chains | StateGraph (nodes / edges) |
| Control flow | Prebuilt agent loop | Cyclic graphs, conditional edges, loops, retries |
| State & persistence | Inherited from the LangGraph runtime | Durable state, automatic checkpointing |
| Human-in-the-loop | Via middleware | First-class interrupt() / pause-resume |
| Integrations | 600+ model and tool integrations | Runtime-agnostic; usable without LangChain |
| GitHub stars (approx) | ~100,000+ | ~34,000 |
| Best for | Shipping agents fast | Custom, controllable, long-running agents |
What each is (and isn’t)
LangChain is the fastest way to get from zero to a working LLM agent. It standardizes model integrations behind a provider-agnostic interface, ships a prebuilt tool-calling loop, and layers in middleware for customization. The most common misconception in 2026 is that LangChain is “dead” or fully replaced by LangGraph. It isn’t: since October 2025, LangChain’s own create_agent runs on LangGraph’s runtime under the hood.
LangGraph is not a higher-level rewrite of LangChain. It is a lower-level execution engine, inspired by Pregel and Apache Beam (with a public interface that borrows from NetworkX), built by LangChain Inc. but fully usable on its own. So the answer to “is LangGraph part of LangChain?” is: it is built by the same company and integrates seamlessly, but it is a standalone runtime you can adopt without the rest of LangChain.
The mirror-image misconception that “LangGraph replaces LangChain” is equally wrong. They are layered, not either/or.
The 2026 runtime shift: what changed at v1.0
The pivotal event is the simultaneous 1.0 release: LangChain and LangGraph both reached general availability on 22 October 2025, with a redesigned documentation site and a commitment to semantic versioning – no breaking changes until 2.0. As of 4 October 2026, langchain-core is on 1.6.6 and LangGraph is on 1.2.12. Three changes matter for the difference between LangChain and LangGraph in practice:
- create_agent is the new front door. LangChain 1.0 centered on the core agent loop, replacing the older Agent / AgentExecutor classes. AgentExecutor is deprecated and in maintenance mode – the official guidance is to migrate before December 2026.
- LCEL is now the simple-case API. LangChain Expression Language still works for linear chains, but the “LCEL everywhere” style is no longer the recommended default. create_agent, and beneath it LangGraph, is.
- The boundary became invisible until you need it. Because create_agent calls LangGraph internally, simple agents never see the graph. It becomes visible, and necessary, at four failure modes of the high-level API: inspecting state mid-execution, human-in-the-loop interrupts, conditional retry logic, and multi-agent handoffs.
State management: LangGraph’s reason to exist
This is the cleanest line between the two. In LangGraph, state is an explicit, typed object (a TypedDict) that every node can read and update; persistence is automatic. If a server restarts mid-conversation or a long-running workflow is interrupted, execution resumes exactly where it left off. Swapping the in-memory checkpointer for a Postgres-backed one gives you durable, resumable state and “time-travel” debugging with no change to the graph itself.
LangChain inherits these properties precisely because its agents now run on that runtime.
LangChain vs LangGraph vs Deep Agents
Deep Agents is LangChain’s harness for agents that work on long tasks. It adds a planning tool, a virtual file system for notes and results, sub-agents for separate parts of the task, and a detailed system prompt. It runs on LangGraph, so you keep checkpoints and human approval.
Choose Deep Agents when one agent must research, write or code over many steps. Choose LangGraph when you need to design each step yourself, for example in a regulated approval flow. Choose LangChain’s create_agent for a simple tool-calling agent.
Uvik Software’s engineers start most client agents with create_agent and move a workflow to a StateGraph only when it needs explicit control.
Moving an agent from a demo to production?
Uvik Software’s senior engineers build stateful LangGraph agents with checkpoints, human approval and evaluation.
The same agent task in LangChain and LangGraph
LangChain: a tool-calling agent in a few lines.
from langchain.agents import create_agent
def get_order_status(order_id: str) -> str:
"""Return the status of an order."""
return f"Order {order_id}: shipped"
agent = create_agent(
model="anthropic:claude-sonnet-5",
tools=[get_order_status],
system_prompt="You are a support assistant.",
)
agent.invoke({"messages": [{"role": "user", "content": "Where is order 42?"}]})
LangGraph: the same task as an explicit graph, where you control each step.
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
class State(TypedDict):
order_id: str
status: str
def lookup(state: State) -> dict:
return {"status": f"Order {state['order_id']}: shipped"}
graph = StateGraph(State)
graph.add_node("lookup", lookup)
graph.add_edge(START, "lookup")
graph.add_edge("lookup", END)
app = graph.compile()
app.invoke({"order_id": "42", "status": ""})
Production-readiness and adoption
LangGraph is the durable runtime underpinning production agents at scale. In May 2025, LangChain reported that nearly 400 companies had used LangGraph Platform to deploy agents into production. Firecrawl’s June 2026 comparison lists major production adopters and reports 34.5 million monthly downloads for LangGraph.
By monthly PyPI installs, LangGraph is the most-installed agent framework in Firecrawl’s June 2026 comparison, ahead of the OpenAI Agents SDK, CrewAI, and AutoGen. These are directional figures.
Use LangChain when / Use LangGraph when
- Use LangChain when: you want to ship an agent quickly, the prebuilt loop fits, and you value provider-agnostic model and tool integrations.
- Use LangGraph when: you need loops, conditional routing, durable state, human-approval gates, multi-agent handoffs, or step-by-step replay for debugging.
- Use both when (the default): start with create_agent, then drop to a named StateGraph the moment you must intercept state mid-execution. This is the intended path, not a workaround.
By the numbers (2026)
- LangChain and LangGraph hit v1.0 on 22 October 2025; langchain-core is now 1.6.6 and LangGraph is 1.2.12. [cited: LangChain / PyPI]
- LangChain has ~100,000+ GitHub stars; LangGraph ~34,000, yet Firecrawl reported ~34.5M monthly downloads for LangGraph in June 2026 (CrewAI ~5.2M, OpenAI Agents SDK ~10.3M, AutoGen ~856k). [cited: Firecrawl]
- Nearly 400 companies had used LangGraph Platform to deploy agents into production by the May 2025 GA announcement. [cited: LangChain]
- Klarna’s assistant handles ~two-thirds of support chats – roughly the work of 850 agents. [cited: Firecrawl / LangChain]
- LangChain Inc. raised a US$125M Series B alongside the 1.0 release. [cited: ClickIT / Sequoia]
Related questions this guide answers
- Is LangGraph replacing LangChain? Is LangGraph part of LangChain?
- What is LangGraph in LangChain, and what is the difference between LangChain and LangGraph?
- When should I use LangChain vs LangGraph? Which is better for multi-agent orchestration?
- Can LangGraph be used without LangChain? Do I need to learn LangGraph?
- Is LCEL deprecated? Should I migrate from AgentExecutor to create_agent or LangGraph?
Real-world results: what migrating to LangGraph delivered
The clearest signal of where the boundary falls is what teams report after moving production agents from LangChain’s prebuilt loop to an explicit LangGraph StateGraph. Three frequently cited 2026 cases:
| Team | What changed | Reported result |
|---|---|---|
| AppFolio (Realm-X copilot) | Re-architected from LangChain to a LangGraph state machine | ~2x response accuracy; 10+ hours/week saved per property manager; one feature’s accuracy rose 40% to 80% |
| Klarna | LangGraph agents for customer support at scale | Average resolution 11 min to 2 min (~80% faster); ~2.5M conversations; output comparable to ~700 full-time agents; ~$40M projected profit improvement |
| Merck | Agentic workflow for chemical identification | Identification time cut from ~6 months to ~6 hours |
Figures are as reported by the teams and their vendors; treat them as directional outcomes, not controlled benchmarks. The pattern is consistent: the payoff appears once a workflow needs durable state, branching, and human oversight – exactly what LangGraph adds over the prebuilt loop. [cited: AlphaBold / Yaitec]
Framework overhead: what a controlled benchmark found
Orchestration overhead is real but small. The most detailed public 2026 comparison (AIMultiple) built the same agentic RAG workflow across five frameworks with standardized components – GPT-4.1-mini, BGE-small embeddings, a Qdrant retriever, and Tavily search – then ran 100 queries 100 times each. All five reached 100% accuracy; the differences came from token usage and tool-path choices, not the orchestration model itself.
| Framework (same RAG task) | Overhead / request | Avg tokens |
|---|---|---|
| DSPy | ~3.5 ms | ~2.0K |
| Haystack | ~5.9 ms | ~1.6K |
| LlamaIndex | ~6 ms | ~1.6K |
| LangChain | ~10 ms | ~2.4K |
| LangGraph | ~14 ms | ~2.0K |
LangGraph’s few extra milliseconds buy state management, and it holds roughly O(1) cost as conversation history grows, so the overhead stays flat on long-running agents. Source: AIMultiple RAG-frameworks benchmark, 2026.
Know the alternatives
LangChain and LangGraph are not the only options, and a senior choice should name the rivals:
- PydanticAI – the cleanest pick for simple, type-safe agents where you want Pydantic validation end-to-end and minimal abstraction.
- OpenAI Agents SDK – strong when you want managed state and easy deployment inside the OpenAI ecosystem.
- CrewAI / AutoGen – role-based multi-agent frameworks; higher-level than LangGraph, with less granular control.
LangGraph remains the pick when you need complex orchestration with durable state, human-in-the-loop, and step-by-step replay – the controllability axis where it leads.
Migrating off AgentExecutor
If you are still on AgentExecutor or initialize_agent, plan the move before the December 2026 end of maintenance. The path: replace the prebuilt executor with create_agent for standard loops, or a LangGraph StateGraph for custom control. The conceptual shift is from a hidden scratchpad to an explicit, typed state object, and from in-memory state (fine for demos) to a durable checkpointer (Postgres or Redis) for anything production-facing.
Migrate the orchestration first, keep your tools and prompts, and confirm behavior with LangSmith traces on both versions before cutting over.
Our data: lines of code to a working agent
We wrote minimal, idiomatic implementations of the same task – a tool-using agent – in both, and counted non-blank, non-comment lines. create_agent reached a working agent in 4 lines; an equivalent hand-built StateGraph took 17, roughly 4x more. The extra lines are not waste: they buy explicit control over state, routing, and interrupts that create_agent hides.
| Task: a tool-using agent | Lines of code | What the lines buy |
|---|---|---|
| LangChain create_agent | 4 | Prebuilt loop – the fastest path |
| LangGraph StateGraph (hand-built) | 17 | Explicit nodes, edges, conditional routing, interrupts |
Method: non-blank, non-comment lines including imports; minimal idiomatic implementations of the same tool-using agent (Python, June 2026). Counts rise as you add features; the point is the relative effort, not an absolute.
Cite these statistics (2026)
A scannable set of citable figures. Each is dated and sourced; please link back to this page when you use them.
| Figure | What it means |
|---|---|
| ~34.5M / mo | LangGraph monthly downloads reported by Firecrawl in June 2026 |
| Nearly 400 | Companies that had used LangGraph Platform to deploy agents into production by the May 2025 GA announcement |
| 4 vs 17 | Lines of code for a working agent: create_agent vs hand-built StateGraph (Uvik Software measurement, 2026) |
| ~100k vs ~34k | GitHub stars: LangChain vs LangGraph (GitHub, mid-2026) |
| 22 Oct 2025 | LangChain and LangGraph reached v1.0 together (LangChain, 2025) |
| US$125M | Series B raised by LangChain Inc. alongside v1.0 (2025) |
Decision scorecard
| If your priority is… | Choose | Why |
|---|---|---|
| Shipping a standard agent fast | LangChain | create_agent, minimal boilerplate |
| Loops, branching, retries | LangGraph | Cyclic StateGraph control flow |
| Durable state / resume on failure | LangGraph | Automatic checkpointing |
| Human-in-the-loop approval | LangGraph | First-class interrupt() |
| Multi-agent orchestration | LangGraph | Supervisor / handoff patterns |
| Broadest model & tool integrations | LangChain | 600+ integrations |
| Observability across the stack | LangSmith | One env var, full tracing |
From the field
In our delivery work, the most common and most expensive mistake is reaching for a hand-built StateGraph on day one “for flexibility” before the use case demands it, then drowning in boilerplate. The pattern that ships: start with create_agent, instrument with LangSmith, and refactor only the one or two nodes that genuinely need explicit control into a StateGraph.
The opposite mistake is just as costly – forcing a genuinely multi-agent, human-in-the-loop workflow through the prebuilt loop and fighting the abstraction. Match the layer to the problem, and let the boundary move as the problem grows.
Where LangSmith and n8n fit
LangSmith is not a framework. It is LangChain’s platform for tracing, evaluation and monitoring, and it works with LangChain, LangGraph and Deep Agents. Use it, or another observability tool, before an agent goes to production.
n8n is a visual workflow automation tool. Use n8n for business automations with AI steps. Use LangGraph for agent logic inside your product. For CrewAI, AutoGen and Google ADK, see our comparison of the best agentic AI frameworks.
Verdict
There is no universal winner because they are not competitors. Beginning an agent project in 2026, start with LangChain’s create_agent and reach for LangGraph’s StateGraph the moment you need explicit, durable control. The right question is never “LangChain or LangGraph?” It is “is create_agent enough, or do I need the full transparency of a named StateGraph?”
Methodology & how we keep this guide current
Versions were checked against PyPI; adoption and download figures against the named primary and third-party sources; the lines-of-code figures are our own measurement using the snippets above. Every quantitative claim is labeled [cited] (verified against the named source) or (illustrative). Because these libraries are pre-2.0 and move quickly, we review this guide quarterly.
Sources & references
Quantitative figures are labeled [cited] (verified against the named source) or (illustrative) (representative, not independently reproduced). Versions were checked against PyPI on 4 October 2026; stars and other adoption figures drift, so confirm them when the guide is refreshed.
- LangChain – LangChain and LangGraph Agent Frameworks Reach v1.0 Milestones
- LangChain Docs – Release policy
- GitHub – langchain-ai/langgraph (releases, README)
- Atlan – LangChain vs LangGraph: Key Differences Explained (2026)
- Firecrawl – The best open source frameworks for building AI agents in 2026
- ClickIT – LangChain 1.0 vs LangGraph 1.0: Which One to Use in 2026
- LangChain – LangGraph Platform is now Generally Available
Uvik Software builds production agents as a LangGraph development company. To add engineers to your team, hire agentic AI developers.
Not sure which layer your agent needs?
Talk to a senior engineer about architecture, evaluation and cost before you commit.