NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2258 most downloaded on PyPI
A Python ASGI web framework with the same API as Flask
Last release 1 months ago
29 Aug 2026
Ships unpredictably
gaps range from 9 days to 1.6 years
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
9 years old
69 releases · first in 2017
Merge contexts into a single AppContext as per Flask. This could be a breaking change if the other contexts where used directly.
The release includes two major improvements and otherwise updates Quart to changes in Flask. The major improvements are to the development reloader and to the ASGI handling to handle backpressue. This release performs better in my micro benchmarks than 0.22.0 by around 25%.
This release supports Python 3.13 to 3.14.
PyPI: https://pypi.org/project/Quart/0.22.0/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0220
One column per quarter.
Yanked, please do not use. See 0.23.1 instead.
Yanked, please do not use. See 0.23.1 instead.
Released 2026-08-29
The release is mostly bugfixes except for the specified serving function call ordering which could cause differences in application code compared with
The release is mostly bugfixes except for the specified serving function call ordering which could cause differences in application code compared with 0.21.0
This release supports Python 3.11 to 3.14.
PyPI: https://pypi.org/project/Quart/0.22.0/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0220
Released 2026-08-19
The release mostly brings Quart up to date with changes in Flask, including a security fix to the signing key selection order.
The release mostly brings Quart up to date with changes in Flask, including a security fix to the signing key selection order.
This release supports Python 3.11 to 3.14.
PyPI: https://pypi.org/project/Quart/0.21.0/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0210
SECRET_KEY_FALLBACKS, GHSA-4grg-w6v8-c28gReleased 2026-07-23
SECRET_KEY_FALLBACKS.
https://github.com/pallets/flask/security/advisories/GHSA-4grg-w6v8-c28gFix deprecated asyncio.iscoroutinefunction for Python 3.14.
This is the Quart 0.20.0 release, which adds support for max_form_parts and max_form_memory_size.
PyPI: https://pypi.org/project/Quart/0.20.0/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0200
Released 2024-12-23
asyncio.iscoroutinefunction for Python 3.14.AsyncIterable to be passed to Response.This is the Quart 0.19.9 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
This is the Quart 0.19.9 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Quart/0.19.9/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0199
PROVIDE_AUTOMATIC_OPTIONS config for compatibility with Flask 3.1.Released 2024-11-14
PROVIDE_AUTOMATIC_OPTIONS config for compatibility with
Flask 3.1.This is the Quart 0.19.8 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
This is the Quart 0.19.8 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Quart/0.19.8/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0198
Released 2024-10-25
This is the Quart 0.19.7 security fix release, which fixes security issues but does not otherwise change behavior and should not result in breaking ch…
This is the Quart 0.19.7 security fix release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes.
PyPI: https://pypi.org/project/Quart/0.19.7/
Changes: https://github.com/pallets/quart/blob/main/CHANGES.rst#0197
max_form_memory_size is applied when parsing large non-file fields. GHSA-q34m-jh98-gwm2Released 2024-10-25
max_form_memory_size is applied when parsing large non-file fields.
https://github.com/advisories/GHSA-q34m-jh98-gwm2Released 2024-10-25
Fix how max_form_memory_size is applied when parsing large non-file fields. advisories/GHSA-q34m-jh98-gwm2
Bump and release 0.19.6
Bump and release 0.19.6
Released 2024-05-19
ContentRange in the right way.ResourceWarning in DataBody.__aiter__.Bump and release 0.19.5
Bump and release 0.19.5
Released 2024-04-01
DeprecationWarning from datetime.utcnow().teardown_websocket methods.config_class type.kwargs to be passed to the test client (matches Flask API).Bump and release 0.19.4
Bump and release 0.19.4
Released 2023-11-19
AfterWebsocket functions.ensure_async method.Bump and release 0.19.3
Bump and release 0.19.3
Released 2023-10-04
Restore the app after_/before_websocket methods.
Released 2023-10-01
after_/before_websocket methods.cli group in Quart.Remove QUART_ENV and env usage.
Released 2023-09-30
QUART_ENV and env usage.Fix Werkzeug deprecation warnings.
Released 2023-09-30
path.make_response errors if the value is incorrect.scope extension value being None.abort method.root_path usage..svg to Jinja's autoescaping.WebsocketResponse error, by including the response.mode parameter to the config.from_file method.routes command output.tomllib rather than toml.Restrict Blinker to < 1.6 for 0.18.x versions to ensure it works with Quart's implementation.
Released 2023-04-09
Corrected quart.json.loads type annotation.
Released 2022-10-08
quart.json.loads type annotation.Use add_signal_handler not signal.signal.
Released 2022-10-04
add_signal_handler not signal.signal.Fix static hosting with resource path escaping the root.
Released 2022-10-03
make_conditional API/functionality.Remove usage of LocalStacks, using ContextVars more directly. This should improve performance, but introduces backwards incompatibility. _*_ctx_stack…
Released 2022-07-23
safe_join, use Werkzeug's version instead.config.from_file as
desired).websocket.send_json to match jsonify's options.Response construction.get_root_path to helpers to match Flask.silent argument in config.from_envvar.stream_template and stream_template_string functions to stream a large
template in parts.aborter object to app to allow for abort customisation.redirect method to app to allow for redirect customisation.LocalStacks, using ContextVars more directly. This should
improve performance, but introduces backwards incompatibility. _*_ctx_stack
globals are removed, use _context instead. Extensions should store on
g as appropriate. Requires Werkzeug >= 2.2.0.url_for to the app to allow for url_for customisation.config.from_json, use from_file instead.--app, --env, and -debug options to the
CLI.Raise startup and shutdown errors.
Released 2022-03-26
redirect.Markup and escape from MarkupSafe.Ensure auth is sent on test client requests.
Released 2022-02-02
Await background task shutdown after shutdown functions.
Released 2021-12-14
Add missing serving exception handling.
Released 2021-11-17
Support an auth argument in the test client.
Released 2021-11-09
auth argument in the test client.ensure_async in the copy context functions.app.add_background_task.open_resource and open_instance_resource async.save_session to accept None as a response value.Error suffix.redirect from Flask.ctx.pop() without passing exc explicitly.Improve the g AppGlobals typing.
Released 2021-05-24
g AppGlobals typing.url_prefixes.Add the quart routes to output the routes in the app.
Released 2021-05-11
quart routes to output the routes in the app.AppContext lifespan interaction change in 0.14. It is not possible to
introduce this and match Flask's g usage.app.get, app.post,
etc. for app and blueprint instances.Response.werkzeug.exceptions instead of quart.exceptions.files argument.NoAppException clearer.while_serving functionality.request.flashes.run.url_for in websocket contexts.SERVER_NAME configuration for the run method.root_paths.Add missing receive to test request connection and docs.
Released 2020-12-13
templates_auto_reload API.debug property on the app now also sets the auto reloading for
the Jinja environment.Add user_agent property to requests/websockets to easily extract the user agent using Werkzeug's UserAgent class.
Released 2020-12-05
user_agent property to requests/websockets to easily extract the user
agent using Werkzeug's UserAgent class.test_app method, this should be used to ensure that the startup
& shutdown functions are run during testing.websocket_received and websocket_sent signals.dump and load functions to the json module, as matching Flask.AppContext lifespan interaction - this pushes the app context on
startup and pops on shutdown meaning g is available throughout without being
cleared.request method on the
test client for a request connection (like the websocket connection) for
testing streaming.Add the data property to the patched request attributes.
Released 2020-09-09
data property to the patched request attributes.with_appcontext by default.Set cookies from the testing jar for websockets.
Released 2020-07-14
Add certfile and keyfile arguments to cli.
Released 2020-05-21
certfile and keyfile arguments to cli.Request.host value returns an empty string rather than None for HTTP/1.0
requests without a Host header.Map fixing a TypeError.scope dictionary to request.FlaskGroup exists when using flask_patch by patching the
flask.cli module from quart.quart.cli.with_appcontext matching the Flask API.quart.Blueprint registration compatible with flask.Blueprint.add_url_rule API match the Flask API.lookup_app and lookup_request to Flask patch globals.quart.Blueprint constructor fully compatible with flask.Blueprint.Ensure any exceptions are raised in the ASGI handling code.
Released 2020-03-31
Security fix for the htmlsafe function.
Released 2020-03-29
FlaskClient exists.htmlsafe function.Lowercase header names passed to cgi FieldStorage.
Released 2020-02-26
FieldStorage.Fix multipart/form-data parsing.
Released 2020-02-10
multipart/form-data parsing.await to the LocalProxy mappings.Fix cors header accessors and setters.
Released 2020-02-09
iscoroutinefunction with Python3.7.after_request/_websocket function typing.*This contains all the bug fixes from the 0.6 branch.*
Released 2020-02-08
This contains all the bug fixes from the 0.6 branch.
root_path values.TooManyRequests, 429, exception.ThreadPoolExecutor. This means that sync route
handlers, before request, and more, are run in a thread.
This is a major change.asgi_app method for middleware usage, for example
quart_app.asgi_app = Middleware(quart_app.asgi_app).run_sync function to run synchronous code in a thread pool with the
Quart contexts present.dumps/loads.from_file this allows
for toml format configurations (among others).redirect.QUART_DEBUG when using quart run._QUART_PATCHED marker to all patched modules.run_task method to Quart (app) class. This is a task based on the
run method assumptions that can be awaited or run as desired.run method, but not the run_task method.*This contains all the bug fixes from the 0.6 branch.*
Released 2019-08-30
This contains all the bug fixes from the 0.6 branch.
Response argument.json, data, or form arguments to test_request_context.send_file sending a BytesIO object.samesite cookie support (requires Python 3.8).ContentSecurityPolicy datastructure, this follows a new addition to
Werkzeug.root_path as a prepended path to all routes.Unquote the path in the test client, following the ASGI standard.
Released 2019-05-12
LocalProxy name API.*This contains all the bug fixes from the 0.6 and 0.8 branches.*
Released 2019-04-22
This contains all the bug fixes from the 0.6 and 0.8 branches.
debug has an effect when passed to app.run.test_request_context arguments to match the test client open
arguments.before_app_websocket, and after_app_websocket methods to
Blueprint.send_file adding a mimetype
argument and supporting attachment sending.websocket.requested_subprotocols.response.push_promises attribute.Path types throughout and switch to Path types internally.Make the safe_join function stricter.
Released 2019-02-09
safe_join function stricter.multipart/form-data correctly.await.*This contains all the bug fixes from the 0.6 and 0.7 branches.*
Released 2019-01-29
This contains all the bug fixes from the 0.6 and 0.7 branches.
AccessLogAtoms.Quart.run method interface, this reduces the available options
for simplicity. See hypercorn for an extended set of deployment configuration.serve function, requires Hypercorn >= 0.5.0.list_templates method to DispatchingJinjaLoader.Accept datastructure, specifically keyed
accessors.abort functionality and signature, to allow for the description
and name to be optionally specified.make_push_promise function, to allow for push promises to be sent at
any time during the request handling e.g. pre-emptive pushes.make_conditional method with an argument
of the request range.instance_path and instance_relative_config to allow for an instance
folder to be used.Avoid crash in flask_patch isinstance.
Released 2019-01-03
flask_patch isinstance.Fix Flask patching step definition.
Released 2018-12-18
Support only Python 3.7, see the 0.6.X releases for continued Python 3.6 support.
Released 2018-12-16
ContextVar for local storage.Headers data structure.follow_redirects in Quart test client.This is the final 0.6 release and the final release to support Python3.6, Python3.8 is now available.
Released 2019-10-17
This is the final 0.6 release and the final release to support Python3.6, Python3.8 is now available.
http.request without a body keyFollow Werkzeug LocalProxy name API.
Released 2019-08-30
LocalProxy name API.make_response status code is an int.Unauthorized, Forbidden, and NotAcceptable exception
classes.Added Map.iter_rules(endpoint) method.
Released 2019-04-22
Map.iter_rules(endpoint) method.Raise a BadRequest if the body encoding is wrong.
Released 2019-01-29
BadRequest if the body encoding is wrong.MIMEAccept values./.Range header works.RequestEntityTooLarge errors are correctly raised.Support static files in blueprints.
Released 2018-12-09
app.run SSL usage and Hypercorn compatibility.Fix async body iteration cleanup.
Released 2018-11-12
Fix async body iteration deadlock.
Released 2018-11-10
Ensure an event loop is specified on app.run.
Released 2018-10-21
app.run.Fix ASGI conversion of websocket data (str or bytes).
Released 2018-09-23
Add type conversion to getlist (on multidicts)
Released 2018-08-27
getlist (on multidicts)None)Change default redirect status code to 302.
Released 2018-08-05
sys.modules to prevent dictionary changed errors.Host header (if missing) for HTTP/1.0._external in url_for.Correctly handle request query strings.
Released 2018-07-15
a=1&a=2.Ensure compatibility with Python 3.7
Released 2018-07-05
Remove class member patching from flask-patch system, as it was unreliable.
Released 2018-06-24
Your coding agent can read these notes before it upgrades. Set up the MCP server →