What changed with LangChain v1.0, and how should a team still on 0.x plan the migration?
Quick Answer
v1.0 (October 2025) stabilized the API around LCEL/Runnables and LangGraph-based agents, splitting legacy patterns out (langchain-classic) and committing to semver stability after years of 0.x breaking changes. Migration plan: inventory deprecated imports, move agents to LangGraph and memory to checkpointers, pin the coupled package set, and regression-test with a golden suite.
Detailed Answer
The 0.0.x -> 0.3 era earned LangChain a reputation for churn: three memory API generations in ~18 months, AgentExecutor patterns superseded, and import paths reshuffled into langchain-core/langchain-community/provider packages. v1.0 drew a line: the core abstraction is Runnables + LangGraph for anything stateful/agentic, legacy chains live on in a compatibility package, and breaking changes now follow semver. A sane migration: (1) inventory — grep for deprecated imports (langchain.memory, langchain.agents.AgentExecutor, old chain classes) and rank call sites by traffic; (2) mechanical moves first — import-path updates, provider packages (langchain-openai etc.); (3) structural moves second — memory classes to LangGraph checkpointers, custom agent loops to create_react_agent or explicit graphs; (4) pin langchain-core/langchain/langgraph/provider packages as one tested set; (5) golden-trace regression — replay recorded production requests through the new stack and diff outputs/costs/latency before cutover. Budget the structural part like a real project; the import churn is the cheap half.
Code Example
# inventory grep -rn 'from langchain.memory\|AgentExecutor\|LLMChain' src/ | wc -l # after: agent as graph with persistent state agent = create_react_agent(model, tools, checkpointer=PostgresSaver.from_conn_string(PG)) # pinned as a set langchain-core==1.0.* langgraph==1.0.* langchain-openai==1.0.*
Interview Tip
The golden-trace replay (record prod requests, replay through the new stack, diff) is the detail that separates 'read the changelog' from 'has migrated an LLM app safely'.