Core LangChain.js abstractions and schemas
Last release 8 days ago
20 Aug 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
350 releases · first in 2023
Release timeline
350 releases since 2023Releases
- 1.2.920 Aug 2026
Release notes
Open source →Patch Changes
- #11402
43e4396Thanks @thushanth-bengre-langchain! - Fix ChatVertexAI/ChatGoogle content blocks: includetool_callblocks frommessage.tool_callsand skip spurious emptytextblocks incontentBlocks.
- #11402
- 1.2.814 Aug 2026
Release notes3 sources agree
Open source →Patch Changes
-
#11369
d6ad973Thanks @hntrl! - fix(langchain): use unified endpoint for gateway -
#11342
3b0e4c4Thanks @thushanth-bengre-langchain! - feat(core): mark errors as retryable or not, and stop retrying the ones that aren'tRetry middleware retried every failure up to
maxRetries, including deterministic ones like a bad API key or an unknown model. Retries also nest, so a single such failure could cost dozens of API calls.@langchain/core/errorsaddsstampRetryable(error, retryable)andgetRetryable(error). Marking an error leaves its class and shape untouched, so a provider SDK error can be classified without breakinginstanceof.getRetryablereturnsundefinedfor errors nobody classified, and both are exported so tool authors can mark their own failures.modelRetryMiddlewareandtoolRetryMiddlewarenow respect the mark by default, and retries stop as soon as one is found rather than each layer spending its own budget. Aborted calls, context overflow, and oversized payloads are marked non-retryable out of the box. Models accept a per-callmaxRetriesso a surrounding retry loop can take over.Behavior change: errors marked non-retryable now fail on the first attempt. Unclassified errors — including any from third-party integrations or custom tools — retry exactly as before. Pass
retryOn: () => trueto restore the old default. A customonFailedAttemptreplaces the built-in handler and opts out of marking.
-
- 1.2.713 Aug 2026
- 1.2.612 Aug 2026
Release notes3 sources agree
Open source →Patch Changes
-
#11344
f08e0c6Thanks @hntrl! - fix: apply [Symbol.hasInstance] method to all comparable properties using .isInstance()We have some internal schemas that rely on
z.instanceof(). This uses a strictinstanceofcheck which can conflict if there are multiple versions of core installed. This overrides the Symbol.hasInstance method to use the same logic as.isInstance()to compare objects at runtime.
-
- 1.2.55 Aug 2026
Release notes3 sources agree
Open source →Patch Changes
-
#11305
e654022Thanks @jacoblee93! - Add LangSmith Gateway environment configuration to OpenAI, Anthropic, and Fireworks chat models. -
#11295
1a1b347Thanks @vladislav-nechakhin! - fix(core): pass the mustache escape override per render call
-
- 1.2.430 Jul 2026
Release notes3 sources agree
Open source →Patch Changes
-
#11190
9654bdeThanks @pawel-twardziak! - Coalesce nested LangChain tracer callbacks that share run bookkeeping. -
#11153
84ce6d6Thanks @parveshsaini! - fix(core): bind splitText when trimMessages receives a TextSplitter instance
-
- 1.2.314 Jul 2026
- 1.2.29 Jul 2026
Release notes3 sources agree
Open source →Patch Changes
-
#11171
82bef01Thanks @christian-bromann! - fix(core): coerce string v1 AIMessage content to text blocksPrevent
contentBlocks.push is not a functionwhen constructing anAIMessagewithresponse_metadata.output_version === "v1"and stringcontent(common in serialized LangGraph stream payloads).
-
- 1.2.122 Jun 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10674
f017708Thanks @christian-bromann! - fix: classify provider 429s before retrying -
#11092
7918bbdThanks @aolsenjazz! - fix(core): only treat arrays of content blocks as ToolMessage contentFix tool outputs that are arrays of plain objects being forwarded as malformed message content. An array is now only treated as message content blocks when every element is an object with a
type; otherwise it is JSON-stringified.
-
- 1.2.017 Jun 2026
Release notes
Open source →Minor Changes
- #10924
2e28115Thanks @christian-bromann! - feat(mistralai): add native streamEvents event conversion
Additional notes3 sources agree
Open source →Minor Changes
- #10924
2e28115Thanks @christian-bromann! - feat(core): add OpenAI-compatible stream event conversion
Patch Changes
-
#11047
ac0f71dThanks @christian-bromann! - fix(core): preserve AIMessage content blocksKeep existing v1 contentBlocks when constructing AIMessage instances so serialized messages do not lose block content during deserialization.
Additional notes
Open source →Minor Changes
- #10603
66effb0Thanks @dependabot! - chore(deps): bump groq-sdk from 0.37.0 to 1.1.2
- #10924
- 1.2.0-dev-17757638038789 Apr 2026pre-release
Nothing published for this version
- 1.2.0-dev-176593770526517 Dec 2025pre-release
Nothing published for this version
- 1.1.50-dev-178158035742416 Jun 2026pre-release
Nothing published for this version
- 1.1.4912 Jun 2026
Release notes2 sources agree
Open source →Patch Changes
-
#10679
1f7b495Thanks @hnustwjj! - fix(core): makeRemoveMessagetype-compatible acrossMessageStructurevariantsRemove unnecessary
TStructuregeneric fromRemoveMessage— its content is always[], so the type parameter only caused incompatibilities when passingRemoveMessageinto APIs expecting a differentMessageStructure(e.g.@langchain/langgraph-sdk'sMessage<DefaultToolCall>). Also add{ type: "remove"; id: string }toBaseMessageLikeso the serialized format is accepted by TypeScript, matching the existing runtime behavior incoerceMessageLikeToMessage.
-
- 1.1.49-dev-17810481857309 Jun 2026pre-release
Nothing published for this version
- 1.1.49-dev-17810444363129 Jun 2026pre-release
Nothing published for this version
- 1.1.4821 May 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10832
1b24369Thanks @info-arnav! - fix(core, openrouter): make CJS default re-exports callable -
#10666
2bb55b0Thanks @hnustwjj! - feat(openrouter): surface reasoning content as v1 standard content blocksconvertOpenRouterResponseToBaseMessageandconvertOpenRouterDeltaToBaseMessageChunknow copy OpenRouter'sreasoning(flat string) andreasoning_details(structured array) fields ontoadditional_kwargs.reasoning_content/additional_kwargs.reasoning_details. A newChatOpenRouterTranslatoris registered in@langchain/coreunder the"openrouter"provider key soAIMessage.contentBlocksemits standard{type: "reasoning"}blocks alongside text and tool calls.Previously, reasoning text returned by reasoning-capable models routed through OpenRouter (DeepSeek R1, Minimax M2, Claude extended thinking, o-series, etc.) was silently dropped: only the
reasoning_tokenscount was preserved viausage_metadata. Consumers using standard content blocks (including the frontend agent UI patterns shown in the docs) could not display the model's chain of thought. -
#10918
3999fabThanks @christian-bromann! - fix(openai): stream custom tool calls through Responses API chunks
-
- 1.1.4718 May 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10906
f61b345Thanks @hntrl! - feat(core): add uuid v6 utility supportAdd
v6UUID generation support to@langchain/core/utils/uuidby vendoring the upstream uuidjsv6implementation and itsv1ToV6helper, exportingv6from the UUID utils index, and adding tests for deterministic generation, buffer/offset behavior, validation/versioning, and ordering. -
#10872
a640079Thanks @hntrl! - chore(deps): remove redundant @types/uuid declarationsRemove
@types/uuidfrom package manifests that rely on@langchain/core/utils/uuidor do not require uuid type stubs directly, and refresh the lockfile entries accordingly. -
#10792
3682268Thanks @Genmin! - fix(core): apply v1 message casting after implicit streaming aggregation -
#10901
f26fc4aThanks @christian-bromann! - fix(testing): share fakeModel invocation state across bindTools instances
-
- 1.1.4612 May 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10847
1659e7dThanks @hntrl! - chore(core): reduce transitive dependency exposure and tighten release hygieneRemove direct runtime dependencies on
ansi-styles,camelcase, anddecamelizeby inlining equivalent logic in core internals, and enable npm provenance in the release workflow. -
#10790
ef78bc6Thanks @Genmin! - fix(core): keep different content block types separate when merging chunks
-
- 1.1.457 May 2026
- 1.1.442 May 2026
Release notes2 sources agree
Open source →Patch Changes
- #10822
922a040Thanks @christian-bromann! - fix(core): translate content block delta for other models
- #10822
- 1.1.432 May 2026
Release notes2 sources agree
Open source →Patch Changes
-
#10814
dfec1b7Thanks @hntrl! - fix(google): restore structured output parsing with includeRaw and reasoning blocksEnsure structured output parsers read
BaseMessagetext content whenincludeRaw: true, so responses that include reasoning/thought blocks plus JSON text continue to parse correctly. -
#10772
1ba7131Thanks @christian-bromann! - chore(core): new stream primitives
-
- 1.1.43-dev-17776155387781 May 2026pre-release
Nothing published for this version
- 1.1.4227 Apr 2026
- 1.1.4122 Apr 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10733
589f29cThanks @jacoblee93! - fix(core): Update inheritance behavior for tracer metadata for special keys -
#10711
2e9e696Thanks @jacoblee93! - feat(core): Add chat model and llm invocation params to traced metadata
-
- 1.1.4015 Apr 2026
Release notes3 sources agree
Open source →Patch Changes
- #10694
d3e0809Thanks @hntrl! - refactor(core): decouple tracer-only metadata defaults from runnable metadata- Add tracer-scoped inheritable metadata/tag options in callback manager while keeping backward-compatible aliases.
- Move configurable-to-tracing metadata derivation into a tracer-only path and keep
ensureConfigmetadata mirroring limited tomodel. - Update
LangChainTracerdefault metadata/tag handling and add regression tests for stream events metadata behavior.
- #10694
- 1.1.40-dev-17776141212441 May 2026pre-release
Nothing published for this version
- 1.1.40-dev-177759005141330 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177758764945130 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177758192934630 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177757688034030 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177743473630529 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177742612474529 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177732253899927 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177712950039825 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177712850608625 Apr 2026pre-release
Nothing published for this version
- 1.1.40-dev-177707368872324 Apr 2026pre-release
Nothing published for this version
- 1.1.393 Apr 2026
Release notes3 sources agree
Open source →Patch Changes
- #10430
d3d0922Thanks @christian-bromann! - feat(langchain): support for browser tools
- #10430
- 1.1.39-dev-17752441166343 Apr 2026pre-release
Nothing published for this version
- 1.1.3831 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
- #10552
589ab9bThanks @christian-bromann! - fix(langchain): accept cross-version runnable models in createAgent
- #10552
- 1.1.3730 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10511
6933769Thanks @hntrl! - cache Zod-to-JSON-Schema conversions in toJsonSchema() -
#10541
50d5f32Thanks @jacoblee93! - revert: Revert "feat(core): Add all chat model/llm invocation params to metadata" -
#10509
5552999Thanks @hntrl! - feat(openai): add support for phase parameter on Responses API messages- Extract
phasefrom message output items and surface it on text content blocks - Support phase in streaming via
response.output_item.addedevents - Round-trip phase through both raw provider and standard content paths
- Move phase into
extrasdict in the core standard content translator
- Extract
-
#10528
8331833Thanks @christian-bromann! - fix(core): normalize single-block content in mergeContent
-
- 1.1.3624 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10512
bbbfea1Thanks @hntrl! - fix(core): fix streaming chunk merge for providers withoutindexon tool call deltas_mergeListsnow falls back toid-based matching when items don't have anindexfield. Previously, providers routing through the OpenAI-compatible API withoutindexon streaming tool call deltas (e.g. Anthropic models viaChatOpenAI) would accumulate hundreds of individual raw deltas intool_call_chunksandadditional_kwargs.tool_callsinstead of merging them into a single entry per tool call. In a real trace with 3 concurrent subagents, this caused a single AI message to balloon from ~4KB to 146KB -- with 826 uncollapsed streaming fragments carrying a few bytes each.Also fixes
SystemMessage.concat()which used...thisto spread all instance properties (includinglc_kwargs) into the new constructor, causing each chainedconcat()call to nest one level deeper. After 7 middlewareconcat()calls (typical in deepagents), a 7KB system prompt would serialize to 81KB due to content being duplicated at every nesting level.
-
- 1.1.3522 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10327
5dc11b5Thanks @hntrl! - fix(core): replace exported zod type references with structural duck-type interfaces to fix TypeScript OOMReplaces all exported Zod type references (
z3.ZodType,z4.$ZodType, etc.) in@langchain/core's public API with minimal structural ("duck-type") interfaces. This prevents TypeScript from performing expensive deep structural comparisons (~3,400+ lines of mutually recursive generics) when downstream packages resolve a different Zod version than@langchain/core, which was causing OOM crashes and unresponsive language servers in monorepo setups. -
#10433
7af0b65Thanks @tanushree-sharma! - feat: Add LangSmith integration metadata to createAgent and initChatModel
-
- 1.1.3418 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
- #10312
bfb7944Thanks @jacoblee93! - feat(core): Add all invocation params as part of metadata
- #10312
- 1.1.3317 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10412
6db417bThanks @pawel-twardziak! - fix(core): respect timeout option in streamEvents v2 -
#10424
d69dfccThanks @pawel-twardziak! - fix(core): preserve multimodal content in getBufferString as placeholders
-
- 1.1.33-dev-177396263379519 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177378658057517 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177378515005517 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177377607169717 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177371209810017 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177371062897417 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177370999765417 Mar 2026pre-release
Nothing published for this version
- 1.1.33-dev-177369844553416 Mar 2026pre-release
Nothing published for this version
- 1.1.3211 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10330
26488b5Thanks @hntrl! - fix(core): treat empty string tool call chunk IDs as missing during mergeFixed
_mergeListsin message base to treat empty string""IDs the same asnull/undefinedwhen merging tool call chunks. This fixes old completions-style streaming where follow-up chunks carryid: ""instead ofundefined, which previously prevented chunks from being merged by index. -
#10167
ca826f6Thanks @colifran! - feat: implement type inference for tool streams -
#10334
a602c42Thanks @maahir30! - fix(core): add JSDoc docstrings to fakeModel builder API and export FakeBuiltModel -
#10254
db7d017Thanks @pawel-twardziak! - fix(core): preserve thoughtSignature in array content during streaming with thinking models
-
- 1.1.32-dev-177334579764812 Mar 2026pre-release
Nothing published for this version
- 1.1.315 Mar 2026
Release notes3 sources agree
Open source →Patch Changes
-
#10271
7373b4cThanks @jacoblee93! - feat(core): Use uuid7 instead of v4 for generating run ids -
#10262
b0175a5Thanks @maahir30! - fix: Move fakeModel from utils/testing to testing namespace move to updated namespace -
#10185
414f6edThanks @maahir30! - feat: add custom Vitest matchers for LangChain message and tool call assertionsAdds a new
@langchain/core/testing/matchersexport containing custom Vitest matchers (toBeHumanMessage,toBeAIMessage,toBeSystemMessage,toBeToolMessage,toHaveToolCalls,toHaveToolCallCount,toContainToolCall,toHaveToolMessages,toHaveBeenInterrupted,toHaveStructuredResponse) that external users can register viaexpect.extend(langchainMatchers)in their Vitest setup files. Re-exported fromlangchainfor convenience.
-
- 1.1.303 Mar 2026
Release notes2 sources agree
Open source →Patch Changes
-
#10243
96c630dThanks @hntrl! - fix: add explicit: symboltype annotations to Symbol.for() declarations for cross-version compatibilityTypeScript infers
unique symboltype when Symbol.for() is used without an explicit type annotation, causing type incompatibility when multiple versions of the same package are present in a dependency tree. By adding explicit: symbolannotations, all declarations now use the general symbol type, making them compatible across versions while maintaining identical runtime behavior.Changes:
- Added
: symboltoMESSAGE_SYMBOLin messages/base.ts - Added
: symboltoMIDDLEWARE_BRANDin agents/middleware/types.ts (also changed from Symbol() to Symbol.for() for cross-realm compatibility)
- Added
-
#10256
a8b9cccThanks @colifran! - fix(core): standard schema type guards don't support callable schemas -
#10204
a1f22bbThanks @colifran! - feat(core): implement standard schema support for structured output
-
- 1.1.2926 Feb 2026
Release notes2 sources agree
Open source →Patch Changes
-
#10106
9f30267Thanks @hntrl! - Add package version metadata to runnable traces. Each package now stamps its version inthis.metadata.versionsat construction time, making version info available in LangSmith trace metadata. -
#10154
403a99fThanks @kanweiwei! - fix(core): add usage_metadata to AIMessage lc_aliases -
#10169
3b1fd54Thanks @hntrl! - fix(core, langchain): bump uuid dependency from ^10.0.0 to ^11.0.0 to fix Metro bundler errorThe
uuidv10 package has ambiguousexportsin itspackage.jsonwhich causes Metro (used by Expo/React Native) to resolve the wrong entry point, resulting inCannot read properties of undefined (reading 'v1'). Theuuidv11 package fixes its exports map to work correctly with Metro's package exports resolution. -
#10044
77bd982Thanks @hntrl! - fix(core): remove inherited LangChainTracer handlers when tracingEnabled is falseWhen a RunTree explicitly disables tracing via
tracingEnabled: false,CallbackManager._configureSyncnow strips any inheritedLangChainTracerhandlers so child runs don't produce traces.
-
- 1.1.2824 Feb 2026
- 1.1.2720 Feb 2026
Release notes
Open source →Patch Changes
- Updated dependencies [
9270c48,589ab9b]:- @langchain/[email protected]
- @langchain/[email protected]
- @langchain/[email protected]
- Updated dependencies [