---
title: "langchain-core Breaking Changes on PyPI | Since.dev"
description: "What each langchain-core release removed, renamed or changed: 1,149 breaking changes in 18 versions on PyPI, each with its source."
canonical_url: https://since.dev/packages/pypi/langchain-core
last_updated: 2026-05-05
---

# langchain-core breaking changes

Every breaking API change we have recorded in langchain-core on PyPI: 1,149 breaking changes in 18 versions. Below are its newest 6 versions, removals and renames first, each with its source.

Newest change May 5, 2026

## 1.3.3

5 breaking changes, first published May 5, 2026.

- **Signature changed** `langchain_core.load.load.load`  

Was def load(obj: Any, \*, allowed_objects: Iterable\[AllowedObject\] | Literal\['all', 'core'\] = 'core', secrets_map: dict\[str, str\] | None = None, valid_namespaces: list\[str\] | None = None, secrets_from_env: bool = False... [pypi.org](https://pypi.org/project/langchain-core/1.3.3/)
- **Signature changed** `langchain_core.load.load.Reviver.__init__`  

Was def \_\_init\_\_(self, allowed_objects: Iterable\[AllowedObject\] | Literal\['all', 'core'\] = 'core', secrets_map: dict\[str, str\] | None = None, valid_namespaces: list\[str\] | None = None, secrets_from_env: bool = False... [pypi.org](https://pypi.org/project/langchain-core/1.3.3/)
- **Signature changed** `langchain_core.load.loads`  

Was def loads(text: str, \*, allowed_objects: Iterable\[AllowedObject\] | Literal\['all', 'core'\] = 'core', secrets_map: dict\[str, str\] | None = None, valid_namespaces: list\[str\] | None = None, secrets_from_env: bool = False... [pypi.org](https://pypi.org/project/langchain-core/1.3.3/)
- **Signature changed** `langchain_core.runnables.history.load`  

Was def load(obj: Any, \*, allowed_objects: Iterable\[AllowedObject\] | Literal\['all', 'core'\] = 'core', secrets_map: dict\[str, str\] | None = None, valid_namespaces: list\[str\] | None = None, secrets_from_env: bool = False... [pypi.org](https://pypi.org/project/langchain-core/1.3.3/)
- **Signature changed** `langchain_core.tracers.log_stream.load`  

Was def load(obj: Any, \*, allowed_objects: Iterable\[AllowedObject\] | Literal\['all', 'core'\] = 'core', secrets_map: dict\[str, str\] | None = None, valid_namespaces: list\[str\] | None = None, secrets_from_env: bool = False... [pypi.org](https://pypi.org/project/langchain-core/1.3.3/)

## 1.3.0

5 breaking changes, first published April 17, 2026.

- **Signature changed** `langchain_core.callbacks.CallbackManager.configure`  

Was @classmethod def configure(cls, inheritable_callbacks: Callbacks = None, local_callbacks: Callbacks = None, verbose: bool = False, inheritable_tags: list\[str\] | None = None, local_tags: list\[str\] | None = None, inheritable_metadata... [pypi.org](https://pypi.org/project/langchain-core/1.3.0/)
- **Signature changed** `langchain_core.tracers.BaseTracer.__init__`  

Was def \_\_init\_\_(self, \*, \_schema_format: Literal\['original', 'streaming_events', 'original+chat'\] = 'original', \*\*kwargs: Any) -> None; now def \_\_init\_\_(self, \*, \_schema_format: Literal\['original', 'streaming_events', 'original+chat'\] =... [pypi.org](https://pypi.org/project/langchain-core/1.3.0/)
- **Signature changed** `langchain_core.tracers.BaseTracer.order_map`  

Was order_map: dict\[UUID, tuple\[UUID, str\]\]; now order_map. [pypi.org](https://pypi.org/project/langchain-core/1.3.0/)
- **Signature changed** `langchain_core.tracers.BaseTracer.run_map`  

Was run_map: dict\[str, Run\]; now run_map. [pypi.org](https://pypi.org/project/langchain-core/1.3.0/)
- **Signature changed** `langchain_core.tracers.LangChainTracer.__init__`  

Was def \_\_init\_\_(self, example_id: UUID | str | None = None, project_name: str | None = None, client: Client | None = None, tags: list\[str\] | None = None, \*\*kwargs: Any) -> None; now def \_\_init\_\_(self, example_id: UUID | str | None = None... [pypi.org](https://pypi.org/project/langchain-core/1.3.0/)

## 1.2.22

3 breaking changes, first published March 24, 2026.

- **Signature changed** `langchain_core.prompts.load_prompt`  

Was def load_prompt(path: str | Path, encoding: str | None = None) -> BasePromptTemplate; now def load_prompt(path: str | Path, encoding: str | None = None, \*, allow_dangerous_paths: bool = False) -> BasePromptTemplate. [pypi.org](https://pypi.org/project/langchain-core/1.2.22/)
- **Signature changed** `langchain_core.prompts.loading.load_prompt_from_config`  

Was def load_prompt_from_config(config: dict) -> BasePromptTemplate; now def load_prompt_from_config(config: dict, \*, allow_dangerous_paths: bool = False) -> BasePromptTemplate. [pypi.org](https://pypi.org/project/langchain-core/1.2.22/)
- **Signature changed** `langchain_core.prompts.loading.type_to_loader_dict`  

Was type_to_loader_dict: dict\[str, Callable\[\[dict\], BasePromptTemplate\]\]; now type_to_loader_dict: dict\[str, Callable\[..., BasePromptTemplate\]\]. [pypi.org](https://pypi.org/project/langchain-core/1.2.22/)

## 1.2.15

4 breaking changes, first published February 23, 2026.

- **Removed** `langchain_core.callbacks.manager.ConsoleCallbackHandler`  

langchain_core.callbacks.manager.ConsoleCallbackHandler was removed in langchain-core 1.2.15 [pypi.org](https://pypi.org/project/langchain-core/1.2.15/)
- **Removed** `langchain_core.callbacks.manager.LangChainTracer`  

langchain_core.callbacks.manager.LangChainTracer was removed in langchain-core 1.2.15 [pypi.org](https://pypi.org/project/langchain-core/1.2.15/)
- **Removed** `langchain_core.callbacks.manager.tracing_v2_callback_var`  

langchain_core.callbacks.manager.tracing_v2_callback_var was removed in langchain-core 1.2.15 [pypi.org](https://pypi.org/project/langchain-core/1.2.15/)
- **Removed** `langchain_core.runnables.config.LangChainTracer`  

langchain_core.runnables.config.LangChainTracer was removed in langchain-core 1.2.15 [pypi.org](https://pypi.org/project/langchain-core/1.2.15/)

## 1.2.10

1 breaking change, first published February 10, 2026.

- **Signature changed** `langchain_core.messages.utils.count_tokens_approximately`  

Was def count_tokens_approximately(messages: Iterable\[MessageLikeRepresentation\], \*, chars_per_token: float = 4.0, extra_tokens_per_message: float = 3.0, count_name: bool = True, tokens_per_image: int = 85, use_usage_metadata_scaling: bool... [pypi.org](https://pypi.org/project/langchain-core/1.2.10/)

## 1.2.9

1 breaking change, first published February 5, 2026.

- **Signature changed** `langchain_core.messages.utils.count_tokens_approximately`  

Was def count_tokens_approximately(messages: Iterable\[MessageLikeRepresentation\], \*, chars_per_token: float = 4.0, extra_tokens_per_message: float = 3.0, count_name: bool = True, tokens_per_image: int = 85) -> int; now def... [pypi.org](https://pypi.org/project/langchain-core/1.2.9/)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
