Releases: ayushsharma82/ESP-DASH
v5.0.2
What's Changed
- Fixed page getting re-routed to somewhere else when websocket connection was restored.
- Fixed Statistics tab not showing in OSS version.
- Removed MAC address statistic from default set of statistics as the value will always be "00:00:00:00:00:00" on dashboard intialization. User should use StatisticsProvider to fetch MAC address whenever requested by the dashboard. Example code in this issue: #266
Full Changelog: v5.0.1...v5.0.2
v5.0.1
What's Changed
- ESP-DASH is now compatible with Cloudflare Tunnels. Your dashboard will now automatically use WSS (Secure WebSockets) if it detects the webpage is using
https
protocol. - Added tooltip to show any truncated names. This helps with UI structure not breaking while keeping compatibility with longer card names. (Fixes #263)
Documentation Updates
- Updated input card callback syntax inside documentation. Previous syntax was wrong which resulted in compilation errors.
- Documented
setTarget
function for link card. Now users can decide if the link card will open the desired URL within the same tab or a new one.
Full Changelog: v5.0.0...v5.0.1
v5.0 - A Giant Leap Forward
I'm excited to finally announce the release of ESP-DASH v5! The next major revision of the ESP-DASH library which just started as my hobby project in 2017 but turned into something beautiful because 'you' the OSS community liked it 😄 .
Without wasting much time - v5 finally brings the best of both worlds, a memory optimized C++ backend (thanks to @mathieucarbou) and a new refined UI according to Y25' style trends which makes it look professional. Here are the top features that are introduced with this release:
Memory Optimization
A revamped C++ backend was proposed for v5 by @mathieucarbou and the benefits are evident! According to tests, this resulted in a huge reduction of heap usage and the template class based approach provides ESP-DASH with what it really needed - a truly extensive backend that can be moulded in any way possible for complex widgets.
This approach allows every widget to have its own set of methods and how it parses the data, this in return opens up a whole new world of possibilities which can be now be integrated within ESP-DASH in the long run!
Important
For existing users coming from v4, there's already a quick migration guide available in the latest documentation here: https://docs.espdash.pro/v5.x.x/getting-started/migrating-from-v4-to-v5 . Make sure to go through everything as this release is not directly compatible with v5, there are a lot of breaking changes.
🌞 Light or 🌑 Dark?

It's 2025 and having a application without dark mode is a shame! That's why with this release, ESP-DASH v5 finally supports both light and dark modes! The colors are adjusted very precisely between both modes so that nothing appears out-of-place. Additionally, you or your user can easily switch between light and dark mode easily from the dashboard itself.
Interactive Widgets Now Support Numbers
Natively
Interactive widgets like slider, input etc now support numbers
natively with precision of your choice! Earlier we used to parse the value from string but this time almost all interactive widgets support native numerical types (int
, float
) thanks to the template class based approach in the new backend!
Improved Chart Animations 📊

Chart animations in v5 have been improved; this time the whole chart doesn't refresh whenever we update the values instead the existing chart values transition/animate to new position gracefully.
Separator Card

A dashboard with lots of widgets can get messy! V5 introduces a whole new card called "Separator", it's only purpose is to divide the page into groups which are easier to understand. A feature so requested that separator card is made available in both ESP-DASH Lite (OSS) and Pro! 🎉
Indicator Button (Pro)

A whole new kind of push button which has a indicator in the centre of it that is individually controllable via your code! You can indicate multiple status types through this indicator like green, blue, red, or even no indication as well.
Action Button (Pro)


Want to double confirm a particular action with the user? Use action button card! This whole new card looks just like a push button card but it opens a confirmation dialog so that you can make sure it's not a accidental press by the user! This card is particularly helpful when it comes to offering critical actions on the dashboard like: rebooting, factory reset etc.
Range Slider (Pro)

A slider when you want to select a certain range between two numbers. Just like a regular slider but with 2 thumbs to set a range.
File Upload (Pro)

A very demanded feature by many! File upload card now allows your user to upload files to an external or internal URL. Simply supply it with an URL to where the file should be uploaded and the acceptable file types if you want to restrict the upload to specific file types. That's it! Rest the file upload card will handle for you.
If you want to receive the file within your microcontroller then it's advised to create a "file upload" route in your AsyncWebServer instance to which the file upload card will then upload the file to.
Doughnut Chart (Pro)

A pie turned into a doughnut 😆 . There's really not much to say about it, it's the same thing as a pie chart but with an giant hole in centre.
Changelog
Note
Like I always say, examples are your best friend! Glance over all the examples provided with the library so that you can quickly grasp the changes. Reading changelog always looks daunting for everyone 😄 .
- Revamped C++ backend by @mathieucarbou
- V5 introduces
dashboard.refresh(<card>)
method. This refresh method is now used in callbacks for refreshing 1 widget quickly for which you have just received the value inside callback. Earlier, we usedsendUpdates
but that method would send updates for all the widgets making it slow.sendUpdates
is still used for regularly sending batch updates to dashboard. - Widgets now use
class
based approach rather than macros likeTEMPERATURE_CARD
. Example:dash::TemperatureCard
,dash::HumidityCard
etc. - Every widget has it's own class and methods. Everything is documented inside each widget's documentation page.
- AsyncWebServer instance is now passed as reference rather than a pointer inside constructor of ESP-DASH. Example:
ESPDash dashboard(server);
- ESP-DASH dashboard instance is now passed as reference rather than a pointer to widgets. Example:
dash::TemperatureCard temp1(dashboard, "Temperature");
- Status card is now called "Feedback" card in v5. The functionality remains the same but the name better describes its purpose.
- Button card is now called "Toggle Button" card in v5. Version 5 introduces lots of more buttons so it was necessary to distinguish it.
- Statistics now have a
StatisticProvider
class through which you can provide real-time values. The StatisticsProvider will execute your callback function to get the latest value and display it on the dashboard! - All new UI design language according to Y25' trends. It now feels more professional and just like a proper full blown dashboard.
- UI is now based on latest Svelte 5 framework which in return makes it more robust with improved performance.
- Dashboard now has a collapsable sidebar which provides with more screen space when required.
- ESP-DASH v5 now comes with light and dark modes! There's a toggle switch provided inside the dashboard as well for user to set their preference.
- Added all-new
Separator
card (even in the lite/oss version) which allows you to segment the dashboard into multiple intuitive regions! - Chart animations are now fixed with v5! Now instead of refreshing whole chart, values within chart gracefully transition/animate to the new position.
- Deprecated ESP8266 support. This platform is now unmaintainable as nobody is supporting its core development.
v4.0.9
Important
We have officially switched our dependency to ESP32Async/ESPAsyncWebServer
which is now the only official & maintained version. It's advised to delete old forks from your system and install the latest ESP32Async/ESPAsyncWebServer
and it's dependencies from here.
This was a joint decision among multiple core collaborators to form ESP32Async organization and keep a single active version. All the changes and improvements from mathieu's fork of ESPAsyncWebServer
were merged in ESP32Async/ESPAsyncWebServer
.
More information about required dependencies can also be found in our documentation.
What's Changed
- Added full compatibility for arduino-pico SDK (RP2040 and RP2350 microcontrollers) by @ayushsharma82 in #253
- Switch to
ESP32Async/ESPAsyncWebServer
dependency by @ayushsharma82 in #253 - Switch to
RPAsyncTCP
dependency forRP2040
andRP2350
microcontrollers by @ayushsharma82 in #253 - Updated ArduinoJson dependency to
^v7.3.0
by @ayushsharma82 in #253
Full Changelog: v4.0.8...v4.0.9
v4.0.8
Note: Make sure to update your ESP-DASH to latest release to mitigate any compilation errors. This release fixes a critical compilation bug which was happening due to a return
statement in a void function.
What's Changed
- Float support on sliders by @mathieucarbou in #231
- Update version and CI by @mathieucarbou in #237
- Added CLA by @ayushsharma82
- Added Code of Conduct by @ayushsharma82
- Minor fix in CI (paths-ignore) by @ayushsharma82
Full Changelog: v4.0.7...v4.0.8
v4.0.7
- Added written offer for source code due to compliance issues.
Full Changelog: v4.0.6...v4.0.7
v4.0.6
What's Changed
- Several improvements regarding transfer size and speed by @mathieucarbou in #226
- Added: void refreshChart(Chart* chart); by @mathieucarbou in #228
- fix: merge improvements and updated dependencies by @ayushsharma82 in #229
- Fixes #227
Full Changelog: v4.0.5...v4.0.6
June 2024 Maintenance Release
Important
ESPAsyncWebserver dependency has to be updated on your end to be compatible with this release. Ref: https://docs.espdash.pro/installation/
What's Changed
- Arduino 3 / ESP-IDF 5 compatibility by @mathieucarbou in #210
- Fix CI by @mathieucarbou in #214
- Before update callback by @mathieucarbou in #213
- Group of commits from dev branch by @mathieucarbou in #224
- v4.0.5 by @ayushsharma82 in #225
Full Changelog: v4.0.4...v4.0.5
February 2024 Maintenance Release
What's Changed
- Combination of 1+2+3+4+5+6 + websocket reload fix by @mathieucarbou in #183
- Fix auth by @mathieucarbou in #187
- Many changes regarding Json support and memory improvement by @mathieucarbou in #195
Brief Note by @mathieucarbou
-
Changed card and stat names to
const char*
to improve memory usage. This makes them immutable and require to use constants but avoids a memory copy on heap of all the string values -
Help mitigate concurrency issue with
isAsyncAccessInProgress()
to avoid updating cards while the layout is being generated from the async_http task -
Support both
ESPAsyncWebServer
Ws buffer API andyubox-node-org/ESPAsyncWebServer
buffer API (which as a better api for sending websocket buffers and dealing with concurrency) -
Supports WebSocket batching to avoid crash with the initial layout sending. Batch sizes can be controlled with
DASH_JSON_SIZE
andDASH_JSON_DOCUMENT_ALLOCATION
(Arduino Json 6) -
refreshLayout() refactoring in order to avoid too many layout refresh requests when updating components dynamically: let the caller trigger a layout refresh once.
-
Removed refreshStatistics() because it it not refreshing the stats only but all the updated cards also
-
Removed update calls when adding / removing cards and stats in order to avoid trigger a sequence of full layout updates: this is u to the user to call refreshLayout() when he has finished
-
DASH_MAX_WS_CLIENTS
allows to configure the max WS clients: the default value being set by theESPAsyncWebServer
lib. I recommend setting this value to 1 or 2.
Full Changelog: v4.0.3...v4.0.4
December Maintenance Release
What's Changed
- Fixes and improvements by @mathieucarbou in #174
- cleanup by @mathieucarbou in #176
- Updated webpage to fix statistics not updating properly - part of #174
New Contributors
- @mathieucarbou made their first contribution in #174
Full Changelog: v4.0.2...v4.0.3