Releases: ESP32Async/ESPAsyncWebServer
v3.10.1
β οΈ DO NOT USE
We have just discovered an issue in this release in the JSON handler. Please do not use this release and wait for the next one, or point your project to the main branch with lib_deps = https://github.com/ESP32Async/ESPAsyncWebServer
What's Changed
- Reduce warning level to warn for some lines by @mathieucarbou in #396
- Review logging across WebSocket implementation by @mathieucarbou in #397
- Put HTTP_METHOD symbols in namespace by @willmmiles in #400
Full Changelog: v3.10.0...v3.10.1
v3.10.0
π New Website!
- The project has a new website for its documentation at https://esp32async.github.io/ESPAsyncWebServer
β οΈ Important Notice
-
The WebSocket code has been refactored and several issues fixed. The performance of WebSocket is now insanely fast, with the ability of sending from server to several clients messages at a rate of 20-60 messages per second without even overflowing the message queue, even on Windows!
-
When receiving data in the onData handler, this is not required anymore to add the final
\0(null terminator) for WS_TEXT frames after the buffer like it was documented. This wrong documented design asking user to write after the buffer is fixed. -
The basics for WebDAV support was added by @MitchBradley (see below)
-
ESPHome team put some efforts lately to improve ESP8266 support. All ESP8266 users can thank them for that!
π‘ New Features
-
Add HTTP request methods defined by WebDAV RFC 4918 by @MitchBradley in #376
-
Support chunked encoding in requests by @MitchBradley in #377
π Fixes
- Fix broken WebSocket defragmentation by @mathieucarbou in #383
- Fix #384: Remove the buffer overflow intended by design allowing users to add a null terminator after the buffer end by @mathieucarbou in #385
- Fix poor websocket throughput on Windows by @broddo in #387
- Refactor the code handling WS data event to remove code duplication and fix the usages of pinfo->opcode in examples by @mathieucarbou in #388
βοΈ Under the hood
New Contributors
- @MitchBradley made their first contribution in #376
- @broddo made their first contribution in #387
Full Changelog: v3.9.6...v3.10.0
v3.9.6
What's Changed
Full Changelog: v3.9.5...v3.9.6
v3.9.5
What's Changed
- Fix: Process ETag header value to be RFC 9110 compliant. by @StefanOberhumer in #367
- Fix ESP8266 crash in logging macros due to FUNCTION in flash by @bdraco in #371
- Store HTTP response strings in PROGMEM on ESP8266 by @bdraco in #372
- Code cleanup and null checks by @mathieucarbou in #373
New Contributors
- @StefanOberhumer made their first contribution in #367
Full Changelog: v3.9.4...v3.9.5
v3.9.4
What's Changed
- URGENT - Fix bug introduced in #349 by @mathieucarbou in #363
- ESP32Async/AsyncTCP @ 3.4.10 by @mathieucarbou in #362
Full Changelog: v3.9.3...v3.9.4
v3.9.3
What's Changed
- Fix compiler warning on Arduino Core 2 by @mathieucarbou in #357
- fix: strlen is not constexpr by @proxict in #354
- Deal with safari fragmented pong data by @DeqingSun in #353
New Contributors
- @proxict made their first contribution in #354
- @DeqingSun made their first contribution in #353
Full Changelog: v3.9.2...v3.9.3
v3.9.2
What's Changed
- Several fixes around Chunk processing (Json) of a large Json document and available length passed to fill send buffer by @mathieucarbou in #349
Full Changelog: v3.9.1...v3.9.2
v3.9.1
β οΈ This release works on ESP8266
What's Changed
- Introduce cpplint check by @mathieucarbou in #334
- Correctly support ESP8266 for examples and default filters by @mathieucarbou in #344
- Support ESP8266 TCP stack config by @willmmiles in #345
Full Changelog: v3.9.0...v3.9.1
v3.9.0
β οΈ This release is broken on ESP8266
- Update November , 25th 2025: Subscribe to this issue to get notified: #343
π Performance improvement
-
Huge performance improvement in terms of request served: about 6x faster!
@vortigont refactored the part sending bytes over the wire. In our benchmark test, we can now serve with 16 concurrent clients about ~ 70 req / second. Before, we were capped at ~12-13 req / second. -
ESP32Async/AsyncTCP @ 3.4.9 by @mathieucarbou in #302 (Switch from rand() to an XOR Shift to favor speed over random quality in ESP32Async/AsyncTCP#89)
π‘ New Feature
URIMatcher was added to handler declaration in order to have more flexibility when defining routes, with or without regex support (-D ASYNCWEBSERVER_REGEX=1). This also applies to Json and MessagePack handlers. See the example and doc at https://github.com/ESP32Async/ESPAsyncWebServer/tree/main/examples/URIMatcher
-
Introduce AsyncURIMatcher class to encapsulate the URI matching logic with and without regex support (-D ASYNCWEBSERVER_REGEX=1) by @mathieucarbou in #304
-
Added URIMatcherTest to test possible route matching by @mathieucarbou in #311
-
Completing support for Bearer tokens which were initially half-supported by @mathieucarbou in #309
π Fixes
- Fix #292: Upload handler was not called when an empty file was uploaded. by @mathieucarbou in #293
- Fix CORS behavior when credentials flag is set to true. by @mathieucarbou in #295
- Fix ETag handling for dynamic template responses by @JosePineiro and @willmmiles in #271
- Fix compiler warning by @mathieucarbou in #303
- CONFIG_ESP32_WIFI_ENABLED was missing for Arduino 2 by @mathieucarbou in #314
- Fix multipart file upload handling and improve error responses by @mathieucarbou in #329
- fix: AsyncAbstractResponse might loose part of send buffer by @vortigont and @mathieucarbou in #316
βοΈ Under the hood
- Backward-compatible refactoring of the Json and MessagePack integration . by @mathieucarbou in #301
- Code and CI cleanup in relation to regex support by @mathieucarbou in #310
- Added LargeResponse example by @mathieucarbou in #317
- Update GH Actions to use faster uv and pioarduino core instead pio core by @Jason2866 in #320
- Cleanup close(bool) calls by @mathieucarbou in #321
New Contributors
- @Jason2866 made their first contribution in #320
- @vortigont made their first contribution in #316
Full Changelog: v3.8.1...v3.9.0
v3.8.1
What's Changed
- Refactor _getEtag to get etag from gzip instead of buffer by @JosePineiro in #270
- Improve JS MIME type detection by @JosePineiro in #273
- Fix: Refactor AsyncFileResponse (File overload) by @JosePineiro in #272
- Correctly support form POST with text/plain content type by @mathieucarbou in #280
- Logging refactoring to supports macros redefinition and -D USE_ESP_IDF_LOG by @mathieucarbou in #281
- ESP32Async/AsyncTCP @ 3.4.8 by @mathieucarbou in #285
Full Changelog: v3.8.0...v3.8.1