fastapi breaking changes
Every breaking API change we have recorded in fastapi on PyPI: 8 breaking changes in 2 versions. Below are its newest 2 versions, removals and renames first, each with its source.
Newest change September 29, 2025

On this page
0.118.0
- Behavior changed
Exit code of dependencies with yield now runs after the response is sent, not before. Code that relied on the 0.117.1 timing, such as closing a session before streaming, must be checked. github.com - Signature changed
fastapi.security.OAuth2PasswordRequestForm.__init__
Was def __init__(self, *, grant_type: Annotated[Union[str, None], Form(pattern='^password$'), Doc('\n The OAuth2 spec says it is required and MUST be the fixed string\n "password". Nevertheless, this dependency class is permissive and\n... pypi.org - Signature changed
fastapi.security.OAuth2PasswordRequestFormStrict.__init__
Was def __init__(self, grant_type: Annotated[str, Form(pattern='^password$'), Doc('\n The OAuth2 spec says it is required and MUST be the fixed string\n "password". This dependency is strict about it. If you want to be\n permissive, use... pypi.org
0.117.0
- Configuration changed
The package now limits httpx to versions from 0.23.0 up to but not including 1.0.0. Projects that need httpx 1.0 or later must adjust their dependency versions. github.com - Signature changed
fastapi.applications.get_openapi
Was def get_openapi(*, title: str, version: str, openapi_version: str = '3.1.0', summary: Optional[str] = None, description: Optional[str] = None, routes: Sequence[BaseRoute], webhooks: Optional[Sequence[BaseRoute]] = None, tags... pypi.org - Signature changed
fastapi.FastAPI.__init__
Was def __init__(self: AppType, *, debug: Annotated[bool, Doc('\n Boolean indicating if debug tracebacks should be returned on server\n errors.\n\n Read more in the\n [Starlette docs for... pypi.org - Signature changed
fastapi.openapi.models.Schema.type
Was type: Optional[str]; now type: Optional[Union[SchemaType, List[SchemaType]]]. pypi.org - Signature changed
fastapi.openapi.utils.get_openapi
Was def get_openapi(*, title: str, version: str, openapi_version: str = '3.1.0', summary: Optional[str] = None, description: Optional[str] = None, routes: Sequence[BaseRoute], webhooks: Optional[Sequence[BaseRoute]] = None, tags... pypi.org
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The 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.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp