Last 7 days
0
Features: 0
Changes: 0
Fixes: 0
Deprecations: 0
High-performance Python framework for building typed web APIs.
Latest FastAPI changelog updates, official release notes, breaking changes, security patches, pricing changes, and developer reactions in one product feed.
Follow this FastAPI release-notes page to spot useful features, risky migrations, noisy announcements, and source links before they hit your backlog.
Changes.Watch links back to official changelog and release-note sources so summaries stay easy to verify.
Use channels to follow groups of tools around a stack, workflow, or topic.
Rolling windows show how many product updates landed in the last 7, 30, 90, and 365 days, grouped by existing changelog semantics.
0
16
25
93
Fix support for background tasks and dependency headers in app.frontend().
Add app.frontend(check dir="auto") to simplify local development with FastAPI dev server
Fix status code being ignored for SSE and JSONL streaming endpoints
Fix line splitting in SSE event formatting to comply with the SSE specification
Fixes ignored response model parameters for non‑generator endpoints that return Iterable types.
Fixed handling of sequences with nested Annotated types
Fix jsonable encoder to correctly propagate exclude defaults for dict keys and values
Fixed loss of stream item type when using include router().
Refactor to avoid flattening dependencies for OpenAPI
Refactored request parameter handling to avoid flattening dependencies, improving OpenAPI schema generation.
Refactor to avoid flattening dependencies for body fields
Refactored Skip unused dependency handling to eliminate redundant repeat bookkeeping.
Refactored OpenAPI generation to cache dependency flattening
Refactored dependency handling to stop retaining flat dependency trees
Updated LRU cache limit for dependencies to better support large applications.
Refactor code to lower memory usage in dependencies.
Refactored router route building to be thread‑safe
Fix frontend fallback support for dotted paths (e.g., /users/john.doe).
Add support for dependencies in app.frontend(), enabling automatic cookie authentication for the frontend.
Make app.frontend() return 404 for non-GET/HEAD requests when no static file matches.
Refactor library skills to improve discoverability for agents
Added app.frontend() and router.frontend() helpers for serving a static directory (e.g., “dist”).
Added iter route contexts() for advanced router use cases (e.g., Jupyverse).
Fix typing checks for APIRoute
Refactored APIRouter/APIRoute handling: router.routes now forms a tree of intermediate objects, breaking code that expected a flat list.
Reject underscore headers when convert_underscores=True (default)
Refactored Server Sent Event field validation to prevent broken data.
Update Pydantic v2 code to address deprecations
Add support for free‑threaded Python 3.14t (PR 15149).
Removed the April Fool's @app.vibe() endpoint.
Added @app.vibe() support
Raise the minimum supported pydantic version to 2.9.0 and fix the test suite.
Fix TaskGroup usage to require an async context manager and ensure proper closure in the request async exit stack.
Add Server Sent Events (SSE) support to the framework.
Added streaming support for JSON Lines and binary data using `yield` and upgraded Starlette to 0.46.0.
Added FastAPI Agent Skill to the library.
Add support for Starlette 1.0.0+
Refactored logic for OpenAPI and Swagger UI data escaping.
Introduced strict JSON Content-Type validation, rejecting non‑JSON requests (breaking change, can be disabled via strict_content_type=False).
Deprecates ORJSONResponse.
Introduce Rust-powered JSON serialization for Pydantic return types or response models
Upgrade pytest dependency to the latest version.
Fixed JSON Schema for bytes by using contentMediaType "application/octet-stream".
Drop support for Python 3.9
Corrected grammar in the first‑steps tutorial documentation.
Added clear error when a router attempts to include itself
Fixed handling of startup and shutdown parameters in APIRouter.
Refactor and simplify internal utilities for Pydantic v2 (and v1) compatibility
Refactored internals: simplified Pydantic v2/v1 utilities, removed obsolete Pydantic v1‑only logic, added model field and improved lenient issubclass typing.
Reimplemented FastAPI event handling for compatibility with upcoming Starlette while preserving backward compatibility.
Added PEP695 TypeAliasType support and allowed Response type hints as dependency annotations
Add a viewport meta tag for better Swagger UI on mobile and enhance error messages for invalid query parameter type annotations.
Drop support for pydantic v1, requiring migration to v2.
Introduced a custom FastAPIDeprecationWarning and added missing tests for code examples.
Added deprecation warnings for pydantic.v1 usage (breaking change)
Dropped Pydantic v1 support; minimum required version is now pydantic 2.7.0 with updated settings and extra‑types dependencies.
Drop support for Python 3.8, making it a breaking change for installers.
Fixes handling of parameter aliases
Fixed support for tagged unions with discriminators inside Annotated Body parameters.
Fix handling of TYPE_CHECKING when using non‑evaluated stringified annotations.
Fix handling of arbitrary types when using allowed=True.
Improve tracebacks by adding endpoint metadata for better debugging
Fixed class (non-instance) dependency handling for call methods.
Fix OAuth2 scope handling in OpenAPI for edge cases.
Fixed OpenAPI generation of OAuth2 security scheme scopes
Fixed evaluation of stringified type annotations on Python 3.10.
Fixed support for combined functools.wraps and functools.partial with async and sync functions/classes in path operations and dependencies.
Add dependables support for functools.partial and wrapped functions with forward references, including handling of wrapped dependencies.
Fix OpenAPI schema support for computed fields when using separate input/output schemas disabled.
Fix Query/Header/Cookie parameter model alias issue
Fixed several parsing bugs: unformatted type in FastAPIError, extra non‑body and Form parameters handling, and empty string form values treated as missing.
Fixed bugs: prevented non‑existent "$ref" access for Pydantic v2, resolved TypeError when encoding Decimal NaN/Infinity, and fixed Windows UnicodeEncodeError in CLI tests.
Fixed caching of dependencies that lack scopes and have no sub‑dependencies with scopes.
Fixed hierarchical security scope propagation.
Security classes now return 401 for missing credentials; docs updated on overriding old 403 behavior.
Depends() and Security() now return hashable objects, improving compatibility with external tools.
Fixed handling of JSON Schema attributes named "$ref".
Fixed Depends(func, scope='function') handling for top‑level (parameterless) dependencies.
Add support for dependency scopes, including "request" scope for yield dependencies that exit before the response is sent
Fixed handling of security schemes in OpenAPI when defined at the top-level app.
Refactored dependency handling to eliminate cyclic recursion and simplify code using dataclasses.
Fix schema separation for nested models introduced in 0.119.0.
Upgrade Starlette dependency to versions below 0.50.0.
Switched internal reference docs to use annotated doc.Doc instead of typing_extensions.Doc, adding a tiny dependency
Fix internal Pydantic v1 compatibility warnings for Python 3.14 and Pydantic 2.12.1.
Added temporary ability to mix `pydantic.v1` and Pydantic v2 models within the same FastAPI app.
Add support for Python 3.14
Fix bug where tagged discriminated unions were not recognized as body fields
Added compatibility with Pydantic 2.12.0.
Fixed StreamingResponse handling with dependencies using `yield` so cleanup runs after the response is sent.
Fixed validation error when a `File` parameter is declared after a `Form` parameter
Added support for None return types, array schema types, and OpenAPI external docs parameter
Updated Starlette compatibility to >=0.40.0,<0.49.0 and bumped several internal dependencies (pyjwt, actions, mkdocs, ruff, etc.).
Updated supported Starlette version range to >=0.40.0,<0.48.0.
Add fastapi deploy command for FastAPI Cloud, included in fastapi[standard] extra
Fixed Form handling for union types
Fix truncating model description with form feed character for Pydantic V2 and resolve Pydantic deprecation warnings in internal scripts.
Fixed bug where header Pydantic models failed when convert underscores=False.
Added documentation examples and tests for Annotated custom validations (e.g., AfterValidator) and reverted a previous change.
Updated internal annotation usage for Pydantic 2.11 compatibility.
Fixed HTTPDigest exception handling and a minor bug in test module naming.
Fix OAuth2PasswordRequestForm and OAuth2PasswordRequestFormStrict grant‑type regex handling.
Bumped core dependencies: python‑multipart to 0.0.18, Starlette <0.46.0, and Jinja2 to 3.1.5.
Fix traceback preservation for exceptions raised in sync dependencies using yield.
Refactored internal checks to add support for Pydantic 2.10.
Refactored multipart import logic for compatibility with newer Python versions.
Upgrade Starlette to 0.40.x and httpx to 0.23.x (dependency updates).
Upgrade Starlette dependency to version >=0.37.2 and <0.41.0.
Fix openapi generation with responses kwarg and remove Required shadowing from FastAPI (bugfixes).
Add support for Pydantic models to define Query, Header, and Cookie parameters
Fixed form field regression with alias handling.
Added cache to speed up request body parsing, improving performance
Added support to forbid extra form fields using Pydantic model config "extra": "forbid".
Add support for using Pydantic models to declare form fields.
Performed extensive internal refactoring to lay groundwork for future Pydantic model support in Form, Query, and related parameters.
Refactored internal utilities (field checks, response model handling, dependency resolution) with clearer names and dataclasses.
Fix allow_inf_nan option for Param/Body and ensure app.include_router merges nested lifespans.
Upgrade Starlette compatibility to 0.38.x (dependency range update).
Breaking change: fastapi no longer includes standard dependencies by default; install with the optional extra "fastapi[standard]" and updated CLI support.
Removed orjson and ujson from FastAPI's default dependencies (still available via fastapi[all]).
Added FastAPI CLI (`fastapi` command) with new documentation.
Updated docs to note FastAPI supports all current Python versions and added Chinese and Spanish translations.
Fixed query parameter list handling and JSON encoding of Pydantic UndefinedType; added support for Pydantic 2.7 deprecated Field parameter.
Fixed bug with parameter‑less Depends() when using generics and corrected a typo in fastapi/security/oauth2.py
Fix memory leak in unhandled internal server errors by requiring re‑raise in dependencies using yield/except, introducing a breaking change for existing code.
Bump Starlette dependency to version 0.36.3.
Upgrade python‑multipart to ≥0.0.7 to fix a Content‑Type header ReDoS security issue.
Add Python 3.12 support, AnyIO 4.x compatibility and upgrade Starlette to 0.29.0.
Upgrade Starlette dependency to version >=0.29.0, <0.33.0.
Upgrade Starlette dependency to version 0.28.0
Yield‑based dependencies no longer support using their resources in background tasks; background tasks must create and manage their own resources.
Add support for multiple Annotated annotations (e.g., Annotated[str, Field(), Query()])
Pinned Swagger UI to version 5.9.0 to avoid a crash in 5.9.1 (temporary bug workaround).
Added FastAPI Reference Code API docs (PEP 727) and a BackgroundTasks subclass with custom docstrings, plus a docs structure refactor.
Upgrade compatibility to Pydantic v2.4, introducing renamed functions and JSON Schema input/output models with default values (potential breaking change).
Pin AnyIO to <4.0.0 to resolve incompatibility with Starlette 0.31.1.
Add support for OpenAPI examples in all FastAPI parameters.
Add option to disable separate input/output JSON Schemas in OpenAPI for Pydantic v2 (feature).
Added printable details for ResponseValidationError to appear in server error logs.
Enable Pydantic serialization mode, computed fields, and improved OpenAPI/response model handling for generated clients.
Fix compatibility with older Pydantic v1 by replacing MultHostUrl with AnyUrl.
Added first‑class support for Pydantic v2 while retaining compatibility with v1
Fix JSON Schema validation to reject boolean schemas (e.g., additionalProperties: false).
Add OpenAPI 3.1.0 support with Swagger UI 5.x, update examples handling via JSON Schema 2020‑12, and introduce webhook documentation
Add option to disable automatic slash redirects at the FastAPI app level.
Added dependency support and custom exception handling for WebSocket routes.
Fixed HTTPException header type annotations and corrected OpenAPI model integer validation (gte → ge).
Updated cloned field creation to use a global cache, improving startup performance.
Upgrade Starlette to 0.27.0 to address a security advisory.
Fix bug with Annotated in routers and path operations decorated multiple times.
Added PEP 593 Annotated support for declaring dependencies and parameters, preserving defaults and enabling full editor and runtime validation.
Fixed type definitions for the lifespan feature.
Upgrade python‑multipart to 0.0.6 and Starlette to the latest version, adding new lifespan‑with‑state support.
Add async context manager support for application lifespan, superseding separate startup/shutdown events.
Security fix addressing DoS vulnerability caused by many small multipart fields/files
Upgrade Starlette to version 0.24.0 with internal refactor for compatibility.
Upgrade Starlette dependency to allow version 0.23.1.
Upgrade Starlette to 0.23.0 and update tooling (isort, pre‑commit, Ubuntu version) for the docs workflow.
Fixed ignoring of Response classes in return type annotations.
Add support for declaring response models via function return type annotations, enabling validation, docs, client generation, and data filtering.
Upgrade Starlette to 0.22.0, fixing query‑parameter encoding in TestClient.
Switch TestClient to HTTPX (Starlette 0.21.0) with a migration helper, introducing potential breaking changes in test code.
Added official support for Python 3.11 and enabled its test suite.
Added and corrected many documentation translations (Portuguese, Chinese, French) and fixed grammar, typos, and broken links
Fixed string support for OpenAPI status codes (default, 1XX‑5XX).
Bump Starlette requirement to >=0.20.4, bringing upstream bug fixes.
Dropped Python 3.6 support; minimum required version is now Python 3.7.
Added include/exclude support for dataclasses in the jsonable encoder.
Added new features: exported WebSocketState, support for Python internal descriptions in Pydantic model docstrings, and enhanced ORJSONResponse to handle non‑string keys and NumPy arrays.
Add ReDoc <noscript> warning, support for FrozenSet in parameters, allow custom middlewares to raise HTTPExceptions, and preserve JSONDecodeError details for better error handling.
Breaking: response models now raise an internal server error when a path returns None but the model doesn’t allow null, enforcing contract validation.
Fixed jsonable encoder handling of include/exclude for non-Pydantic objects and corrected repeated alias edge case in OpenAPI.
Fix response body handling for 204, 304, and 1xx status codes to prevent RuntimeError in Uvicorn
Add support for omitting the default value when declaring required parameters (Path, Query, Header, Cookie, Body, Form, File), making them required without using ellipsis.
Upgrade Starlette from 0.19.0 to 0.19.1.
Upgrade Starlette from 0.18.0 to 0.19.0 and make the `content` argument mandatory for explicit `JSONResponse` (breaking change).
Upgrade Starlette dependency to v0.18.0
Upgrade third‑party packages to address security vulnerabilities (ujson CVE‑2021‑45958 and Swagger UI HTML injection).
Added Dutch and Persian/Farsi translations and configuration to notify Dutch translations.
Add support for a custom generate-unique-id function
Add route to request scope, enabling middleware and tools to extract route information.
Update AsyncExitStack to correctly propagate exceptions from dependencies with `yield`, introducing a breaking change for existing exception handling logic.
Add support for declaring UploadFile parameters without explicit File(), add enum support for tags, and allow hiding Query, Cookie, Header, and Path parameters from OpenAPI documentation
Added ability to configure Swagger UI parameters.
Add Python 3.9/3.10 docs and tests with version‑specific code tabs
Fixed JSON Schema generation for dataclasses to align with Pydantic 1.9.
Upgrade Starlette to 0.16.0, bringing bug fixes and minor breaking changes.
Added Trio support via AnyIO and upgraded Starlette to 0.15.0, introducing breaking changes to async internals.
Expanded sub‑dependency version ranges (aiofiles, Uvicorn, test tools, etc.) and raised the minimum Python requirement to 3.6.1, dropping backports for Python 3.7.
Added ORM read mode support for SQLModel relationship attributes
Added support for OpenAPI schema extensions per path operation, extra metadata parameters on FastAPI class, and description fields for security scheme classes.
Add dataclass support for request bodies and response models (including responses)
Added German and Portuguese translations for documentation pages.
Added ability to set response class to RedirectResponse or FileResponse and return URLs directly
Fixed request body JSON handling when the Content-Type header is missing, correcting a breaking change from 0.65.2 while preserving CSRF protection.
Added validation of the Content-Type header before parsing request bodies as JSON, fixing a CSRF vulnerability (CVE‑2021‑32677) when using cookie authentication.
Upgrade pydantic pinned version to mitigate CVE‑2021‑29510.
Breaking: Upgrade Starlette to 0.14.2 and migrate internal UJSONResponse.
Add support for multiple examples in request bodies and all parameter types (path, query, cookie, header).
Improve type annotations with mypy‑strict support
Add support for shared/top‑level router parameters (dependencies, tags, callbacks, default response class, etc.) in APIRouter and include_router, enabling configuration closer to the code.
Fixed bugs like Swagger UI version pin, custom HTTPException handling override, CI docs preview unzip, and multiple FastAPI People GitHub Action dependency issues.
Fixed jsonable encoder issue with SQLAlchemy models directly
Added support for injecting HTTPConnection into Request and WebSocket handlers and exported WebSocketDisconnect with a new docs example.
Enhanced documentation with typo corrections, new async tests guide, tutorial links, Ukrainian translation, and MkDocs Material update.
Added debugging logs for GitHub Actions and refined workflow steps (docs preview commit handling, Gitter bot refactor).
Added multiple GitHub Actions for CI, documentation preview, and artifact handling, replacing Travis CI
Added automatic OpenAPI server generation for root paths with a new FastAPI `root_path_in_servers` parameter and related docs updates.
Added Chinese translations for Body Fields, Body Multiple Parameters, and Path Parameters with numeric validations
Added deep‑merge of OpenAPI responses and support for OpenAPI servers
Added features: http.HTTPStatus support in status codes, OpenAPI tag metadata, Swagger UI showCommonExtensions, repr for parameter helpers, and direct import of OAuth2PasswordRequestFormStrict.
Enhanced documentation: added link to advanced docs, updated Python Types intro, added Microsoft project generator for spaCy/Azure, and added extensive Chinese and initial Italian translations.
Add built‑in ASGI root_path support for mounted FastAPI apps and introduce a new root_path parameter (usable via Uvicorn/Hypercorn CLI) so OpenAPI and docs UI work automatically.
Fix handling of enums with custom schemas in path parameters.
Add support for enums to have their own schemas in OpenAPI (feature).
Added Spanish, Portuguese, and Chinese translations for tutorials, features, benchmarks, and other documentation sections, and enabled Unicode support in MkDocs.
Updated database test setup
Fixed grammatical errors in async documentation and added new docs for testing a DB, contributing guide, translations, and settings handling.
Fixed automatic embedding of body fields for dependencies and sub‑dependencies and corrected dependency overrides in WebSocket tests
Fixed example handling after translations refactor and corrected recursive model usage in responses
Added `orjson` as an optional dependency (`fastapi[all]`) and expanded documentation with new external links, translation support, and terminal styling notes.
Introduce ORJSONResponse class for high‑performance JSON responses using orjson.
Re-export Starlette utilities (e.g., JSONResponse, Request, Response, WebSocket, status) so they can be imported directly from FastAPI.
Updated docs with links and guidance on pinning FastAPI and Starlette versions for deployment.
Fixed documentation issues (release notes links/typos, SQL tutorial formatting) and added missing test dependencies.
Fixed duplicated parameters in path operations when using dependencies and the operation function.
Fix pathlib path encoding in jsonable encoder and enable callables (e.g., functools.partial) as path operation functions.
Add support for Any type in enum definitions for OpenAPI.
Fixed model filtering in response models, including proper cloning of sub-models (PR 889).
Refactored documentation: shortened Tutorial User Guide, added Advanced User Guide, updated external links and development environment setup.
Implemented OAuth2AuthorizationCodeBearer class and extended jsonable encoder to support sub‑type main types (e.g., asyncpg UUIDs).
Added OpenAPI Callbacks support and a default response class parameter to APIRouter.
Added GitHub social preview images and updated PyPI trove classifiers.
Added GitHub Action Issue Manager, async class method dependencies, and support for Pydantic ≥ 1.0.0 with deprecated compatibility for older versions.
Updated documentation: reduced gender bias, added guidance on overriding operationId, cleaned Bash code blocks, and documented offline Swagger UI asset usage.
Added support for dependencies with yield (exit steps), including async handling and proper teardown ordering for complex dependency trees.
Require Starlette version 0.12.9, making the upgrade a breaking change.
Added documentation updates, including installing python-multipart for forms, truncating docstrings for path operations, and Swagger UI initOAuth settings, plus typo fixes.
Path parameters may now have default values (e.g., None) and are ignored when not supplied, enabling optional path parameters.
Corrected the import path for the Request class.
Added recent articles and opinions to the External Links section.
Added custom route classes, Pydantic dataclass support, enhanced media type handling, custom 422 validation responses, and status‑code‑range responses in OpenAPI.
Fixed skip defaults handling when returning Pydantic models
Corrected typo in routing assertion.
Upgrade Starlette compatibility range to support versions 0.11.1 through 0.12.7.
Upgrade Pydantic to version 0.30.0
Fixed documentation typos, clarified OAuth2 scopes wording, updated Enums to inherit from str, and added notes on including the same router with different prefixes.
Extended supported Pydantic versions to 0.28–0.29.0.
Added new documentation sections (External Links & Articles, Help FastAPI Get Help, SQLite online viewers) and updated the SQL tutorial with SQLAlchemy
Add ORM mode support for Pydantic models, enabling direct response handling for ORMs like SQLAlchemy, Peewee, and others
Fix handling of empty request bodies when a required body parameter is present.
Added a Response parameter to declare cookies, headers, and custom status codes while still returning arbitrary objects.
Added per‑request dependency caching to avoid duplicate calls, with opt‑out via use_cache=False
Fixed handling of dict values for path and query parameters, now correctly mapped to a body payload.
Fixed HTTPBearer security scheme to not raise errors when auto_error=False and Authorization header is incorrect.
Fixed broken OAuth 2.0 documentation link
Added customizable validation error handling with new RequestValidationError and WebSocketRequestValidationError classes and documentation
Added support for Pydantic's include, exclude, and by‑alias options in response models
Added WebSocket support, including handling of Depends, Security, Cookie, Header, Path, and Query parameters (excluding Body).
Upgrade to Starlette 0.12.0 with ASGI 3 support, adding StreamingResponse iterator handling and a thread‑pool iterator utility.
Introduce a new `dependencies` parameter for path operation decorators and `include_router()`, enabling shared dependency execution (e.g., auth) across routes and supporting security scopes.
Raise body parsing errors from the original exception for better introspection
Added typing information and a py.typed file to the package.
Updated OAuth2 password flow to return 401 Unauthorized with proper WWW‑Authenticate header.
Renamed the path operation decorator parameter `content_type` to `response_class`.
Added documentation for HTTP Basic Auth and Middleware
Enable Flit publishing in CI workflows
Added Markdown‑compatible parsing for path operation docstrings and updated related tutorial documentation.
Add support for uploading multiple files through a single form field.
Improved auto‑generated operation names in OpenAPI docs (e.g., "Read Items" instead of "Read Items Get").
Added SecurityScopes parameter to retrieve and merge OAuth2 scopes from dependencies
Fix bug in handling additional responses in APIRouter.include_router().
Added a `responses` parameter to path operation decorators for extending OpenAPI responses, custom status codes, and media types
Add optional auto error parameter to security utilities, enabling combined checks of multiple schemes and automatic error responses
Added community links and expanded docs (Gitter chat, OpenAPI extension, response model guidance, event startup/shutdown fix)
Fixed OpenAPI JSON Schema generation for Python Union types by correcting handling of additionalProperties.
Added documentation for async SQL relational databases using encode/databases
Added Background Tasks support to path operation functions and dependencies.
Added documentation on handling multiple identical query parameters.
Updated supported Pydantic version to 0.21.0.
Added support for specifying tags in app.include_router() calls
Updated documentation on async def handling and compatibility with previous frameworks.
Added UploadFile support for File parameters, enabling file-like interfaces
Added extensive async handling documentation and debugging guide for FastAPI.
Add favicons to the documentation pages
Added a FastAPI + PostgreSQL project generator
Added GraphQL tutorial documentation
Updated the SQLAlchemy tutorial to use the new request.state API.
Added a “Help and getting help with FastAPI” section to the docs
Introduced a new HTTPException supporting custom headers
Added OpenAPI prefix support and ability to mount sub‑applications, enabling reverse‑proxy deployments.
Add SQLAlchemy support with ORM integration.
Fixed jsonable encoder to correctly handle Pydantic models with a Config class but without custom json_encoders.
Fixed typos in the Security documentation
Upgrade Starlette to version 0.10.1
Resolve issue with constrained large file uploads when constraints are applied
Added support for list-valued query and header parameters via explicit `Query`/`Header` usage
Micro release focused on documentation improvements