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