NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5177 most downloaded on PyPI
The fastest way to create an HTML app
Last release 1 months ago
03 Sep 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
2 years old
142 releases · first in 2024
Add procs to serve for running the app as several processes ( #927 ), thanks to @jph00
Fix: add_sig_param : pass annotation to Parameter ( #917 ), thanks to @RensDimmendaal
add_sig_param: pass annotation to Parameter (#917), thanks to @RensDimmendaal_handle got multiple values for argument f" when a POST route takes f as an argument (#834)One column per month.
Fix duplicate HTMX component parameters ( #909 ), thanks to @erikgaas
Fix duplicate HTMX component parameters ( #909 ), thanks to @erikgaas
Replace local port-waiting helpers with imports from fastcore.net
Replace local port-waiting helpers with imports from fastcore.net
Add StaticImmutable class and vurl helper for versioned static file URLs
Add cancel_on_disconnect decorator and until_disconnect helper
cancel_on_disconnect decorator and until_disconnect helper (#900)mk_getattr from fastcore to unify __getattr__ implementation (#899), thanks to @jackhoganparse_form (#880), thanks to @linguistic76Add upload_pb_attrs helper for upload progress bars
Add configurable max_part_size for multipart form uploads (default 100MB)
Bump Starlette min to 1.0.1 to avoid CVE
The following imports have been removed from fasthtml.common: `py import uvicorn from apswutils import Database from fastlite import * from .pico impo
The following imports have been removed from fasthtml.common:
import uvicorn
from apswutils import Database
from fastlite import *
from .pico import *
@rt on a class registers each HTTP method handler at the same path (#872)The following imports have been removed from fasthtml.common: `py import uvicorn from apswutils import Database from fastlite import * from .pico impo
The following imports have been removed from fasthtml.common:
import uvicorn
from apswutils import Database
from fastlite import *
from .pico import *
@rt on a class registers each HTTP method handler at the same path (#872)JSONResponse: serialize listy types as lists in addition to stringifying others
Add into decorator and add_sig_param utility; improve __from_request__ param handling; add Beforeware.__repr__
Fix ws header lookup key mismatch (#853), thanks to @dienhoa
Refactor lifespan handling into Lifespan class with on_event support and add add_websocket_route method
on_event support and add add_websocket_route method (#851)Add _mk_lifespan helper to wrap on_startup/on_shutdown for Starlette 1.x compatibility
Add HostRoute class for host-header based routing with pattern matching
_fix_anno mangling bare list annotations (#841), thanks to @jackhoganAdd HostRoute class for host-header based routing with pattern matching
_fix_anno mangling bare list annotations (#841), thanks to @jackhoganCache request body if content-type header is not multipart/form-data (#837), thanks to @curtis-allan
multipart/form-data (#837), thanks to @curtis-allanMake ApiReturn callable without positional args by defaulting norm to None
Add __bool__ method to ApiReturn for direct boolean context support
__bool__ method to ApiReturn for direct boolean context support (#832)Add all HTTP request param handling to websockets too
Add all HTTP request param handling to websockets too
Add ApiReturn class for dual browser/API responses in route handlers
Add uvicorn kwargs to serve() with @delegates(uvicorn.run) and add colored link output
Add async OAuth methods and make OAuth handlers async
add optional client arg to HTMX for persistent tests (#824), thanks to @johnowhitaker
Fix typo: put='hx-post' → put='hx-put' in _verbs mapping (#821), thanks to @erikgaas
Add Apple sign in (#813), thanks to @erikgaas
Bump toast z-index to 1090 so toasts appear above modals (#807), thanks to @erikgaas
_resp (#792), thanks to @kenfjget_client (#800)show (#796)_resp (#792), thanks to @kenfjNothing published for this version
Only strip newlines when parsing strings (#797), thanks to @johnowhitaker
### New Features - render_ft kw param
render_ft kw param (#791)Use TestClient to render HTMX components
### New Features - Use https for canonical
Add LsJson, robots.txt, and sitemap.xml
### New Features - Add StaticNoCache
StaticNoCache (#783)fix broken toasts (#782), thanks to @comhar
Correct afterware resp objects (#778), thanks to @erikgaas
update afterware arg parsing (#777), thanks to @comhar
### New Features - Use kw args for handler params
### New Features - Update htmx and ext versions
### New Features - Add __from_request__ (#765) - Handle async __from_request__
Support dict params in ws routes
### New Features - Handle empty host in HTMX()
HTMX() (#752)Add title= kwarg to fast_app() constructor (#740), thanks to @mmacpherson
set_lifespan (#744)fast_app() constructor (#740), thanks to @mmacpherson### New Features - seeded option for unqid
seeded option for unqid (#741)### New Features - Add canonical link option (#735) - Add onevent kwargs
Check for "hx-history-restore-request" for identifying full page request
fallback stringify FT with to_xml
### New Features - Pass through kwargs in show
show (#723)Add GoogleAppClient.consent_url
inserts toasts at top of the page (#704), thanks to @comhar
### New Features - Add Fragment
Fragment (#706)### New Features - Add Fragment
Fragment (#706)Background tasks fix+docs (#692), thanks to @pydanny
Move htmx and ext js to jsdelivr from unpkg
Move htmx and ext js to jsdelivr from unpkg
Your coding agent can read these notes before it upgrades. Set up the MCP server →