ESPHome 2025.8.0 - 20th August 2025
Release Overview
ESPHome 2025.8.0 expands platform support with the introduction of Nordic nRF52 devices, adds mesh communication capabilities, and delivers significant performance improvements. This release focuses on architectural innovation and memory optimization while introducing new hardware possibilities.
Key Highlights:
- New nRF52 platform based on Zephyr RTOS opens Nordic semiconductor ecosystem
- ESP-NOW mesh communication enables direct device-to-device connectivity
- High-performance MIPI DSI displays for ESP32-P4 professional applications
- Extensive memory optimizations with up to 10x performance improvements in key areas
- Python 3.11+ requirement (breaking change - Python 3.10 support dropped)
NRF52 Platform Support
ESPHome 2025.8.0 introduces comprehensive support for Nordic nRF52 series microcontrollers through the new NRF52 Platform platform. This implementation is built on the Zephyr RTOS, providing a robust foundation for Nordic semiconductor devices.
Key Features:
- Complete platform integration with ESPHome’s component ecosystem
- ADC support for analog sensor reading with configurable resolution
- GPIO functionality with interrupt support and pin configuration
- Zephyr debug component for advanced debugging and development
The nRF52 platform opens up new possibilities for low-power, Bluetooth-enabled devices while maintaining the familiar ESPHome configuration syntax and component compatibility.
ESP-NOW Communication
The new ESPNow communication Component component brings device-to-device communication to ESP32 platforms without requiring WiFi infrastructure. ESP-NOW enables direct communication between ESP32 devices using the 2.4GHz band with minimal power consumption.
Applications:
- Mesh sensor networks - Sensors can communicate directly without WiFi routers
- Remote control systems - Direct device control with low latency
- Backup communication - Fallback when WiFi is unavailable
- Battery-powered devices - Efficient communication for power-constrained applications
This protocol is particularly valuable for distributed sensor networks and scenarios where traditional WiFi infrastructure is impractical or unavailable.
MIPI DSI Display Support
ESPHome now supports high-performance MIPI DSI displays through the new MIPI DSI Display Driver component, specifically designed for ESP32-P4 processors with DSI interfaces.
Benefits:
- High-resolution displays with excellent performance
- Hardware acceleration through dedicated DSI controllers
- Reduced CPU overhead compared to traditional SPI displays
- Professional display quality for advanced applications
This addition significantly expands ESPHome’s display capabilities, enabling professional-grade user interfaces and high-resolution graphics applications.
Memory & Performance Optimizations
ESPHome 2025.8.0 includes extensive optimizations focused on reducing memory usage and improving performance:
Flash Memory Savings:
- Conditional compilation removes unused API features (thousands of bytes saved)
- Optimized protobuf implementations with zero-copy techniques
- Reduced code duplication across components
- Streamlined error handling and logging systems
Runtime Performance:
- 10x faster string encoding with optimized memcpy operations
- Enhanced scheduler with reduced millis() calls
- Improved BLE scanning with batched processing
- Zero-copy protobuf fields for reduced memory allocations
Python 3.11+ Requirement
Starting with ESPHome 2025.8.0, Python 3.11 or higher is required to run ESPHome. This change enables us to:
- Utilize modern Python features and improvements
- Remove legacy compatibility code that was needed for older Python versions
- Maintain a more secure and efficient codebase
Why This Change?
Python 3.10 reaches its end of life in October 2026. This upgrade is necessary for the project to move forward with modern development practices and maintain long-term security and maintainability.
What You Need to Do
Installation Method | Action Required |
---|---|
Home Assistant Add-on | No action needed - Already uses Python 3.12 |
Container Images (Docker) | No action needed - Already uses Python 3.12 |
Direct Installation (pip) | Upgrade Python to 3.11+ before updating ESPHome |
Warning
If you’re running ESPHome directly on your machine with Python 3.10 or older, runningpip install -U esphome
will not upgrade beyond version 2025.7.x. You must upgrade your Python installation first.Breaking Changes
ESPHome 2025.8.0 includes several breaking changes that may require action on your part:
Bluetooth and BLE Changes
Bluetooth Proxy: Parsed advertisement support and V1 connection support removed to save memory
BLE: Conditional compilation for advertising and service classes may reduce available features if not explicitly enabled
May affect older components using deprecated Bluetooth features
API Optimizations
- Deprecated protobuf fields removed (reduces flash usage)
- Conditional compilation for Home Assistant state/service subscriptions
- May affect custom API clients using deprecated fields
Component Filter Changes
LD2410 and LD2450 components now use native filters instead of
throttle
See the component documentation for updated filter configuration
ESP32 Touch Sensor
- Workaround implemented for ESP-IDF v5.4 regression
- May affect touch sensor behavior on newer ESP-IDF versions
Most of these changes are automatic optimizations that shouldn’t affect typical usage, but custom components or advanced configurations may need updates.
Full list of changes
New Features
- [output] Add
set_min_power
&set_max_power
actions forFloatOutput
esphome#8934 by @DjordjeMandic (new-feature) - [nrf52] add adc esphome#9321 by @tomaszduda23 (new-feature)
- [espnow] Basic communication between ESP32 devices esphome#9582 by @nielsnl68 (new-component) (new-feature)
- [esp32] Add config option to execute from PSRAM esphome#9907 by @clydebarrow (new-feature)
- [color][lvgl] Allow Color to be used for lv_color_t esphome#10016 by @clydebarrow (new-feature)
- [esp32] Add framework migration warning for upcoming ESP-IDF default change esphome#10030 by @bdraco (new-feature)
- Add CO5300 display support esphome#9739 by @mschnaubelt (new-feature)
- [remote_transmitter] Add digital_write automation esphome#10069 by @swoboda1337 (new-feature)
- Support multiple –device arguments for address fallback esphome#10003 by @bdraco (new-feature)
- Add device class absolute_humidity to the absolute humidity component esphome#10100 by @mbo18 (new-feature)
- [switch] Add
switch.control
automation action esphome#10105 by @edwardtfn (new-feature) - [switch] Add
control()
method to API esphome#10118 by @edwardtfn (new-feature) - [switch] Add trigger
on_state
esphome#10108 by @edwardtfn (new-feature) - [nrf52, zephyr_debug] add zephyr debug component esphome#8319 by @tomaszduda23 (new-feature)
- [sensor] Extend timeout filter with option to return last value received esphome#10115 by @kbx81 (new-feature)
- [substitutions] Add some safe built-in functions to jinja parsing esphome#10178 by @jesserockz (new-feature)
- [ld2412] New component esphome#9075 by @Rihan9 (new-component) (new-feature) (new-platform)
- [entity] Allow
device_id
to be blank on entities esphome#10217 by @jesserockz (new-feature)
New Components
- [nrf52, core] nrf52 core based on zephyr esphome#7049 by @tomaszduda23 (new-component)
- Add runtime_stats component for performance debugging and analysis esphome#9386 by @bdraco (new-component)
- [mipi] Refactor constants and functions esphome#9853 by @clydebarrow (new-component)
- [mipi_dsi] New display driver for P4 DSI esphome#9403 by @clydebarrow (new-component) (new-platform)
- [espnow] Basic communication between ESP32 devices esphome#9582 by @nielsnl68 (new-component) (new-feature)
- [ld2412] New component esphome#9075 by @Rihan9 (new-component) (new-feature) (new-platform)
New Platforms
- [mipi_dsi] New display driver for P4 DSI esphome#9403 by @clydebarrow (new-component) (new-platform)
- [ld2412] New component esphome#9075 by @Rihan9 (new-component) (new-feature) (new-platform)
Breaking Changes
- Remove parsed advertisement support from bluetooth_proxy to save memory esphome#9489 by @bdraco (breaking-change)
- Drop Python 3.10 support, require Python 3.11+ esphome#9522 by @bdraco (breaking-change)
- Remove legacy unique_id field from entities esphome#9022 by @bdraco (breaking-change)
- [api] Remove deprecated protobuf fields to reduce flash usage esphome#9679 by @bdraco (breaking-change)
- [api] Add conditional compilation for Home Assistant state subscriptions esphome#9898 by @bdraco (breaking-change)
- [api] Add conditional compilation for Home Assistant service subscriptions esphome#9900 by @bdraco (breaking-change)
- [esp32_touch] Work around ESP-IDF v5.4 regression in
touch_pad_read_filtered
esphome#9957 by @bdraco (breaking-change) - [ld2410] Replace
throttle
with native filters esphome#10019 by @kbx81 (breaking-change) - [esp32_ble] Conditionally compile BLE advertising to reduce flash usage esphome#10099 by @bdraco (breaking-change)
- [esp32_ble_client] Conditionally compile BLE service classes to reduce flash usage esphome#10114 by @bdraco (breaking-change)
- [bluetooth_proxy] Remove V1 connection support esphome#10107 by @bdraco (breaking-change)
- [esp32] Add IDF log_level option esphome#10134 by @swoboda1337 (breaking-change)
- [ld2450] Replace
throttle
with native filters esphome#10196 by @kbx81 (breaking-change)
All changes
Show
Collapse
[web_server] fix
Arudino
typo esphome#9404 by @ximexSpeed up clang-tidy CI by 80%+ with incremental checking esphome#9396 by @bdraco
Fix PlatformIO cache in CI by adding platformio.ini hash to cache key esphome#9411 by @bdraco
Fix clang-tidy triggering full scan on Python-only core file changes esphome#9412 by @bdraco
Implement shared PlatformIO cache for integration tests esphome#9413 by @bdraco
Fix Python cache for all pytest CI jobs esphome#9415 by @bdraco
Fix Python cache key mismatch for all pytest jobs esphome#9417 by @bdraco
Adding support for Airthings Wave Gen2 esphome#8460 by @precurse
Fix Windows virtual environment activation in CI workflows esphome#9420 by @bdraco
Fix clang-tidy not finding changed files on squash-merge commits esphome#9421 by @bdraco
[config] Add bitrate validator esphome#9423 by @clydebarrow
[esp32] remove debug log esphome#9424 by @ssieb
CI: Centralize test determination logic to reduce unnecessary job runners esphome#9432 by @bdraco
Disable WiFi when using Ethernet to save memory esphome#9456 by @bdraco
Fix pre-commit CI failures by skipping local hooks that require virtual environment esphome#9476 by @bdraco
Fix clang-tidy skipping when Python linters are skipped esphome#9463 by @bdraco
Refactor format_hex_pretty functions to eliminate code duplication esphome#9480 by @bdraco
Fix pre-commit CI issues by switching to lite mode esphome#9484 by @bdraco
Refactor WebServer request handling for improved maintainability esphome#9470 by @bdraco
Fix WebServer routes constant naming convention esphome#9497 by @bdraco
Remove redundant pyupgrade CI job (follow-up to #9484) esphome#9493 by @bdraco
Add pre-commit hooks to fix common formatting issues causing CI failures esphome#9494 by @bdraco
Remove yamllint job from CI since its now handled by pre-commit job esphome#9500 by @bdraco
Fix blocked CI cancellation caused by always() in clang-tidy workflow esphome#9503 by @bdraco
Include entire platformio.ini in clang-tidy hash calculation esphome#9509 by @bdraco
Enable issue tracking esphome#9515 by @jesserockz
[repo] Fix issue template config.yml esphome#9516 by @jesserockz
[ms8607] Fix humidity calc esphome#9499 by @LorbusChris
[nrf52, core] nrf52 core based on zephyr esphome#7049 by @tomaszduda23 (new-component)
remove duplication from component_iterator esphome#7210 by @tomaszduda23
[adc] Use new library with ESP-IDF v5 esphome#9021 by @edwardtfn
[mipi_spi] Template code, partial buffer support esphome#9314 by @clydebarrow
Remove dead code: 64-bit protobuf types never used in 7 years esphome#9471 by @bdraco
Add runtime_stats component for performance debugging and analysis esphome#9386 by @bdraco (new-component)
Make API ConnectRequest optional for passwordless connections esphome#9445 by @bdraco
Improve API protobuf decode method readability and reduce code size esphome#9455 by @bdraco
Reduce API component flash usage by consolidating error logging esphome#9468 by @bdraco
Remove parsed advertisement support from bluetooth_proxy to save memory esphome#9489 by @bdraco (breaking-change)
Drop Python 3.10 support, require Python 3.11+ esphome#9522 by @bdraco (breaking-change)
Optimize MedianFilter memory allocation by adding vector reserve esphome#9531 by @bdraco
[i2c] Use new driver with IDF 5.4.2+ esphome#8483 by @swoboda1337
Optimize scheduler timing by reducing millis() calls esphome#9524 by @bdraco
Optimize API component LOGCONFIG usage for flash memory savings esphome#9526 by @bdraco
Skip API log message calls for unsubscribed log levels esphome#9514 by @bdraco
Optimize API connection batch priority message handling to reduce flash usage esphome#9510 by @bdraco
Reduce flash usage by replacing ProtoSize template with specialized methods esphome#9487 by @bdraco
[ssd1306_base] fix typo
brighrness
esphome#9491 by @ximexFix CI failures from merge collisions esphome#9535 by @bdraco
Remove legacy unique_id field from entities esphome#9022 by @bdraco (breaking-change)
Reduce binary size with field-level conditional compilation for protobuf messages esphome#9473 by @bdraco
[adc] Test platforms on IDF esphome#9536 by @edwardtfn
Refactor API connection entity encoding to reduce code duplication esphome#9505 by @bdraco
Reduce API proto vtable overhead by splitting decode functionality esphome#9541 by @bdraco
Add ability to have same entity names on different sub devices esphome#9355 by @bdraco
Synchronise Device Classes from Home Assistant esphome#9513 by @esphomebot
Update script/helpers.py to use ESPHome YAML parser for integration fixtures esphome#9544 by @bdraco
[adc] Add ESP32-C5 support esphome#9486 by @edwardtfn
Move CONF_ALTITUDE_COMPENSATION to const.py esphome#9563 by @mikelawrence
Revert “Bump ESP32 IDF version to 5.4.2 and Arduino version to 3.2.1” esphome#9574 by @jesserockz
Workflow to auto label PRs based on changes esphome#9585 by @jesserockz
[dependabot] Use specific labels for github-actions updates esphome#9586 by @jesserockz
[CI] Add
by-code-owner
labelling esphome#9589 by @jesserockz[CI] Add
needs-docs
labelling esphome#9591 by @jesserockzSkip compilation of web_server_v1.cpp when not using version 1 esphome#9590 by @bdraco
Update Issues / Feature Requests links in Readme esphome#9600 by @RubenKelevra
Add some AI instructions esphome#9606 by @jesserockz
Update Issues / Feature Requests links esphome#9607 by @RubenKelevra
[ci] Implement external component PR workflow esphome#9595 by @clydebarrow
[ci] attempt to fix permission for workflow esphome#9610 by @clydebarrow
Refactor API send_message from template to non-template implementation esphome#9561 by @bdraco
Fix scheduler rollover detection with concurrent task calls esphome#9624 by @bdraco
adds nRF52840 to PR templates esphome#9631 by @tomaszduda23
[code quality] move const to esphome/const.py esphome#9632 by @tomaszduda23
[esp32] Allow variant in place of board esphome#9427 by @clydebarrow
[scheduler] Fix LibreTiny compilation error due to missing atomic operations esphome#9643 by @bdraco
Fix bluetooth_proxy heap allocations during BLE scanning esphome#9633 by @bdraco
core/schedule: fixup out of sync code comment esphome#9649 by @RubenKelevra
[CI] New workflow to mention codeowners on issues esphome#9658 by @jesserockz
[CI] Add codeowners mention workflow esphome#9651 by @jesserockz
[CI] Fix by-code-owner labelling esphome#9661 by @jesserockz
[scheduler] Add integration tests for set_retry functionality esphome#9644 by @bdraco
Use message_source_map consistently in proto generation esphome#9542 by @bdraco
esp32cam: add fb location config option esphome#9630 by @RubenKelevra
[i2s_audio] Bugfix: cast adc_channel_t to adc1_channel_t esphome#9688 by @kahrendt
Add core team as codeowner of .github folder esphome#9663 by @jesserockz
[CI] Fix clang-tidy not running when platformio.ini changes esphome#9678 by @bdraco
[api] Fix missing ifdef guards for field_ifdef fields in protobuf base classes esphome#9693 by @bdraco
[const] Move CONF_FLIP_X and CONF_FLIP_Y to
const.py
esphome#9741 by @DT-art1core/scheduler: Make
millis_64_
rollover monotonic on SMP esphome#9716 by @RubenKelevra[bluetooth_proxy] Fix service discovery on disconnect and refactor connection handling esphome#9697 by @bdraco
[esp32_ble_tracker] Batch BLE advertisement processing to reduce overhead esphome#9699 by @bdraco
[api] Memory optimizations for API frame helper buffering esphome#9724 by @bdraco
[api] Eliminate heap allocation in
process_batch_
using stack-allocated PacketInfo array esphome#9703 by @bdraco[api] Remove deprecated protobuf fields to reduce flash usage esphome#9679 by @bdraco (breaking-change)
[CI] Only mention codeowners once esphome#9727 by @jesserockz
[api] Consolidate error handling and remove unused code esphome#9726 by @bdraco
[api] Fix missing ifdef guards for AreaInfo and DeviceInfo messages esphome#9730 by @bdraco
[core] Refactor scheduler to eliminate hidden side effects in
empty_
esphome#9743 by @bdraco[api] Reduce memory usage by eliminating duplicate client info strings esphome#9740 by @bdraco
[CI] Label PR too-big if it has more than 1000 lines changed esphome#9744 by @jesserockz
[CI] Keep original labels when PR has too many lines esphome#9745 by @jesserockz
[CI] Fetch platform components and target platforms from hosted json file esphome#9747 by @jesserockz
[CI] Add url and dismiss reviews once conditions are met esphome#9748 by @jesserockz
[api] Split frame helper implementation into protocol-specific files esphome#9746 by @bdraco
[CI] Fix codeowner workflow requesting the same multiple times esphome#9750 by @jesserockz
[CI] Use comment marker in too-big reviews esphome#9751 by @jesserockz
[CI] Dont create new review if existing and dont count tests esphome#9753 by @jesserockz
[api] Sync uses_password field_ifdef optimization from aioesphomeapi esphome#9756 by @bdraco
[tests] Fix flaky scheduler retry test timing esphome#9760 by @bdraco
[bluetooth_proxy] Optimize service discovery with in-place construction esphome#9765 by @bdraco
Factor PlatformIO buildgen out of writer.py esphome#9378 by @stellar-aria
[api] Implement zero-copy for all protobuf bytes fields esphome#9761 by @bdraco
[api] Optimize string encoding with memcpy for 10x performance improvement esphome#9778 by @bdraco
[api] Optimize noise handshake with memcpy for faster connection setup esphome#9779 by @bdraco
[nrf52] Add missing CoreModel define for scheduler esphome#9777 by @bdraco
[esp32_ble_tracker] Write require feature defines after all clients are registered esphome#9780 by @jesserockz
[api] Optimize protobuf memory usage with fixed-size arrays for Bluetooth UUIDs esphome#9782 by @bdraco
[api] Implement zero-copy string optimization for outgoing protobuf messages esphome#9790 by @bdraco
[schema-gen] fix referenced schemas when schema in component platform esphome#9755 by @glmnet
[audio] fix typo
gneneral
anddivison
esphome#9808 by @ximex[sgp4x] Fix build esphome#9794 by @swoboda1337
[http_request] set correct duration_ms for failed requests esphome#9789 by @stas-sl
[udp] Move
on_receive
to const esphome#9811 by @jesserockzBump ESP32 IDF version to 5.4.2 and Arduino version to 3.2.1 esphome#9770 by @swoboda1337
Workflow - check all comments to find previous bot comment esphome#9815 by @clydebarrow
[core] Match LockFreeQueue initialization order esphome#9813 by @jesserockz
[CI] Paginate codeowner comments to make sure we find it esphome#9817 by @jesserockz
[CI] Paginate codeowner comments to make sure we find it esphome#9818 by @jesserockz
[core] Initialize
looping_components_
before setup blocking phase esphome#9820 by @bdraco[i2c] Use
i2c_master_probe
to scan i2c bus esphome#9831 by @jesserockz[core] Restore COMPONENT_STATE_LOOP_DONE check in calculate_looping_components esphome#9832 by @bdraco
[ci] Support C++17 nested namespace syntax in linter esphome#9826 by @bdraco
[modem] network component change esphome#9801 by @oarcher
[interval] Fix startup behaviour esphome#9793 by @clydebarrow
[mipi] Refactor constants and functions esphome#9853 by @clydebarrow (new-component)
Update post_build.py.script to Fix #7137 esphome#9578 by @Maeur1
[helpers] Add “unknown” value handling to
Deduplicator
esphome#9855 by @kbx81[ld2450] Set
accuracy_decimals=0
as default for “target” entities esphome#9842 by @bharvey88[logger] remove unnecessary call to setTxTimeoutMs esphome#9854 by @tjhorner
[i2s_audio] Speaker improvements: CPU core agnostic and more accurate timestamps esphome#9800 by @kahrendt
[esp32] Fix threading model for single-core variants (S2, C3, C6, H2) esphome#9851 by @bdraco
[api] Replace magic numbers with MESSAGE_TYPE constants in protobuf switch cases esphome#9776 by @bdraco
[api] Simplify generated authentication check code esphome#9806 by @bdraco
[api] Reduce code duplication in protobuf dump methods with helper functions esphome#9809 by @bdraco
[api] Use emplace_back for TemplatableKeyValuePair construction in HomeAssistant services esphome#9804 by @bdraco
[core] Fix component state documentation and add state helper method esphome#9824 by @bdraco
[bluetooth_proxy] [esp32_ble_tracker] [esp32_ble] Use C++17 nested namespace syntax esphome#9825 by @bdraco
[ld2410] Use
Deduplicator
for sensors esphome#9584 by @kbx81[api] Use C++17 nested namespace syntax esphome#9856 by @bdraco
[mipi] Keep models from different drivers separate esphome#9865 by @clydebarrow
[ld2450] Use
Deduplicator
for sensors esphome#9863 by @kbx81[core] Revert #9851 and rename ESPHOME_CORES to ESPHOME_THREAD esphome#9862 by @bdraco
[CI] Refactor auto-label workflow: modular architecture, CODEOWNERS automation, and performance improvements esphome#9860 by @jesserockz
[factory_reset] Allow factory reset by rapid power cycle esphome#9749 by @clydebarrow
[gps] Patches to build on IDF, other optimizations esphome#9728 by @kbx81
[sound_level] fix spelling mistake esphome#9843 by @tomaszduda23
rc522: fix buffer overflow in UID/buffer formatting helpers esphome#9375 by @RubenKelevra
[platformio.ini] Move GPS to common lib_deps esphome#9883 by @kbx81
[ruff] Enable SIM rules and fix code simplification violations esphome#9872 by @bdraco
[platformio.ini] Add GPS to nrf52-zephyr lib_deps esphome#9884 by @kbx81
Remove redundant platformio environments esphome#9886 by @jesserockz
[CI] Better mega-pr label handling esphome#9888 by @jesserockz
[CI] Fix auto-label workflow - codeowners & listFiles esphome#9890 by @jesserockz
[mqtt] Don’t log state topic subscription for buttons esphome#9887 by @GilDev
[scheduler] Fix retry race condition on cancellation esphome#9788 by @bdraco
[ruff] Enable PERF rules and fix all violations esphome#9874 by @bdraco
[scheduler] Fix null pointer crash esphome#9893 by @clydebarrow
[core] Centralize component setup logging to reduce flash usage esphome#9885 by @bdraco
[mipi_dsi] New display driver for P4 DSI esphome#9403 by @clydebarrow (new-component) (new-platform)
[api] Add missing USE_API_PASSWORD guards to reduce flash usage esphome#9899 by @bdraco
[api] Add conditional compilation for Home Assistant state subscriptions esphome#9898 by @bdraco (breaking-change)
[i2c] Fix logging level for bus scan results in dump_config esphome#9904 by @bdraco
[ruff] Enable FURB rules for code modernization esphome#9896 by @bdraco
[core] Fix format error in log printf esphome#9911 by @clydebarrow
[logger] Use C++17 nested namespace syntax esphome#9916 by @bdraco
[wifi] Allow config to use PSRAM esphome#9866 by @clydebarrow
[ci-custom] Report actual changes needed for absolute import esphome#9919 by @clydebarrow
[light] Reduce flash memory usage by optimizing validation and color mode logic esphome#9921 by @bdraco
[power_supply] Optimize logging, reduce flash footprint esphome#9923 by @kbx81
[wifi] Disallow psram config with arduino esphome#9922 by @clydebarrow
[core] Use nullptr defaults in status_set_error/warning to reduce flash usage esphome#9931 by @bdraco
[light] Reduce flash usage by 832 bytes through code optimization esphome#9924 by @bdraco
[api] Reduce code duplication in send_noise_encryption_set_key_response esphome#9918 by @bdraco
replace os.getlogin() with getpass.getuser() esphome#9928 by @cmaxl
[packages] add example from documentation to component tests esphome#9891 by @tomaszduda23
[api] Add conditional compilation for Home Assistant service subscriptions esphome#9900 by @bdraco (breaking-change)
[api] Fix string lifetime issue in Home Assistant service calls with templated values esphome#9909 by @bdraco
[bluetooth_proxy] Fix service discovery cache pollution and descriptor count parameter bug esphome#9902 by @bdraco
[config_validation] extend should combine extra validations esphome#9939 by @clydebarrow
[scheduler] Eliminate more runtime string allocations from retry esphome#9930 by @bdraco
[api] Remove unnecessary string copies from optional access esphome#9897 by @bdraco
[heatpumpir] Bump library to 1.0.37 esphome#9944 by @jesserockz
[api] Optimize protobuf empty message handling to reduce flash and runtime overhead esphome#9908 by @bdraco
[api] Align ProtoSize API design with ProtoWriteBuffer pattern esphome#9920 by @bdraco
[esp32] Enable LWIP core locking on ESP-IDF to reduce socket operation overhead esphome#9857 by @bdraco
[sensor] Add support for default filters esphome#9934 by @kbx81
[binary_sensor] Add support for default filters esphome#9935 by @kbx81
[text_sensor] Add support for default filters esphome#9936 by @kbx81
[heatpumpir] Fix issue with IRremoteESP8266 being included on ESP32 esphome#9950 by @swoboda1337
Openthread add Teardown esphome#9275 by @rwrozelle
[gps] Fix slow parsing esphome#9953 by @kbx81
[output] Add
set_min_power
&set_max_power
actions forFloatOutput
esphome#8934 by @DjordjeMandic (new-feature)[esp32] Bump platform to 54.03.21-1 and add support for tagged releases esphome#9926 by @swoboda1337
[adc] Enable ADC on ESP32-P4 esphome#9954 by @clydebarrow
[esp32] Fix post build esphome#9951 by @jesserockz
[component] Revert setup messages to LOG_CONFIG level esphome#9956 by @clydebarrow
Media player API enumeration alignment and feature flags esphome#9949 by @rwrozelle
[mipi_dsi] Add dependencies esphome#9952 by @clydebarrow
Fix WiFi to prefer strongest AP when multiple APs have same SSID esphome#9963 by @dayowe
[api] Eliminate heap allocations when populating repeated fields from containers esphome#9948 by @bdraco
[wifi] add more disconnect reason descriptions esphome#9955 by @ssieb
[sensor] Add new filter:
throttle_with_priority
esphome#9937 by @kbx81[template] Add tests for more sensor filters esphome#9973 by @kbx81
[esp32_ble_client] Fix connection failures with short discovery timeout devices and speed up BLE connections esphome#9971 by @bdraco
media_player add off on capability esphome#9294 by @rwrozelle
[core] Fix regex for lambda id() replacement esphome#9975 by @clydebarrow
[CI] Add labels for checkboxes esphome#9991 by @jesserockz
[api] Bump APIVersion to 1.11 esphome#9990 by @rwrozelle
[api] Reduce flash usage through targeted optimizations esphome#9979 by @bdraco
[esp32_touch] Work around ESP-IDF v5.4 regression in
touch_pad_read_filtered
esphome#9957 by @bdraco (breaking-change)[esp32_ble] Fix spurious BLE 5.0 event warnings on ESP32-S3 esphome#9969 by @bdraco
[tm1651] Remove dependency on Arduino Library esphome#9645 by @mrtoy-me
[wifi] Allow fast_connect with multiple networks esphome#9947 by @GilDev
[esp32_ble_client] Fix BLE connection stability for WiFi-based proxies esphome#9993 by @bdraco
[bluetooth_proxy] Batch BLE service discovery messages for 67% reduction in API traffic esphome#9992 by @bdraco
[bluetooth_proxy] Optimize UUID transmission with efficient short_uuid field esphome#9995 by @bdraco
[esp32] Bump ESP32 platform to 54.03.21-2 esphome#10000 by @swoboda1337
[esp32] Fix strapping pin validation for P4 and H2 esphome#9980 by @clydebarrow
[bluetooth_proxy] Implement dynamic service batching based on MTU constraints esphome#10001 by @bdraco
[midea] Use c++17 constexpr and inline static in IrFollowMeData esphome#10002 by @DjordjeMandic
[image] Improve schemas esphome#9791 by @clydebarrow
[nrf52] add adc esphome#9321 by @tomaszduda23 (new-feature)
[ruff] Enable RET and fix all violations esphome#9929 by @bdraco
[sensor] Fix bug in percentage based delta filter esphome#8157 by @swoboda1337
[sensor] A little bit of filter clean-up esphome#9986 by @kbx81
[espnow] Basic communication between ESP32 devices esphome#9582 by @nielsnl68 (new-component) (new-feature)
[nrf52, debug] debug component for nrf52 esphome#8315 by @tomaszduda23
[nrf52, gpio] check different port notation esphome#9737 by @tomaszduda23
[esp32] Add config option to execute from PSRAM esphome#9907 by @clydebarrow (new-feature)
[wifi] Fix crash during WiFi reconnection on ESP32 with poor signal quality esphome#9989 by @bdraco
[CI] Allow multiple grep options for clang-tidy esphome#10004 by @jesserockz
[bluetooth_proxy] Eliminate heap allocations in connection state reporting esphome#10010 by @bdraco
[core] Convert entity vectors to static allocation for reduced memory usage esphome#10018 by @bdraco
[syslog] Fix RFC3164 timestamp compliance for single-digit days esphome#10034 by @Copilot
[core] Fix compilation errors when platform sections have no entities esphome#10023 by @bdraco
[config] Fix reversion of excessive yaml output after error esphome#10043 by @clydebarrow
[color][lvgl] Allow Color to be used for lv_color_t esphome#10016 by @clydebarrow (new-feature)
Update esp32-camera library version to 2.1.0 esphome#9527 by @RubenKelevra
[core] Replace std::find and std::max_element with simple loops to reduce binary size esphome#10044 by @bdraco
[core] Convert components, devices, and areas vectors to static allocation esphome#10020 by @bdraco
[core] Replace std::stable_sort with insertion sort to save 3.5KB flash esphome#10035 by @bdraco
[web_server_idf] Replace std::find_if with simple loop to reduce binary size esphome#10042 by @bdraco
[core] Optimize Application::pre_setup() to reduce duplicate MAC address operations esphome#10039 by @bdraco
[web_server] Reduce binary size by using EntityBase and minimizing template instantiations esphome#10033 by @bdraco
[web_server] Conditionally compile authentication code to save flash memory esphome#10022 by @bdraco
[core] Update to esptool 5.0+ command syntax esphome#10011 by @bdraco
[wifi] Replace std::stable_sort with insertion sort to save 2.4KB flash esphome#10037 by @bdraco
[esp32] Add framework migration warning for upcoming ESP-IDF default change esphome#10030 by @bdraco (new-feature)
[api] Use static allocation for areas and devices in DeviceInfoResponse esphome#10038 by @bdraco
[AI] Add note about the defines.h file needing to include all new defines added esphome#10054 by @jesserockz
[nfc] Rename
binary_sensor
source files esphome#10053 by @jesserockz[core] Move docs url generator to helpers.py esphome#10056 by @jesserockz
[esp32_ble_tracker] Remove unnecessary STOPPED scanner state to reduce latency esphome#10055 by @bdraco
[esp32_ble_client] Use FAST connection parameters for all v3 connections esphome#10052 by @bdraco
[esp32_ble_client] Connect immediately on READY_TO_CONNECT to reduce latency esphome#10051 by @bdraco
[esp32_ble] Fix BLE connection slot waste by aligning ESP-IDF timeout with client timeout esphome#10013 by @bdraco
[gt911] Use timeout instead of delay, shortened log msg esphome#10024 by @DjordjeMandic
[espnow, web_server_idf] Fix IDF 5.5 compile issues esphome#10068 by @swoboda1337
Add CO5300 display support esphome#9739 by @mschnaubelt (new-feature)
[api] Add helpful compile-time errors for Custom API Device methods esphome#10076 by @bdraco
[bluetooth_proxy] Warn about BLE connection timeout mismatch on Arduino framework esphome#10063 by @bdraco
[esp32_ble_client] Start MTU negotiation earlier following ESP-IDF examples esphome#10062 by @bdraco
[esp32_ble_tracker] Optimize connection by promoting client immediately after scan stop trigger esphome#10061 by @bdraco
[esp32_ble_tracker] Eliminate redundant ring buffer for lower latency esphome#10057 by @bdraco
[esp32_ble_client] Fix connection parameter timing by setting preferences before connection esphome#10059 by @bdraco
[tests] Add datetime entities to host_mode_many_entities integration test esphome#10032 by @bdraco
[bluetooth_proxy] Optimize memory usage with fixed-size array and const string references esphome#10015 by @bdraco
[esp32_dac] Always use esp-idf APIs esphome#9833 by @jesserockz
[core] Allow extra args on cli and just ignore them esphome#9814 by @jesserockz
[gpio_expander] Fix bank caching esphome#10077 by @jesserockz
[remote_transmitter] Add digital_write automation esphome#10069 by @swoboda1337 (new-feature)
Support multiple –device arguments for address fallback esphome#10003 by @bdraco (new-feature)
[core] Update core component codeowners to
@esphome/core
esphome#10082 by @jesserockzAdd myself to multiple bluetooth codeowners esphome#10083 by @bdraco
[speaker] Media player fixes for IDF5.4 esphome#10088 by @kahrendt
[espnow] Small changes and fixes esphome#10014 by @nielsnl68
[select] Fix new_select() not forwarding constructor args while preserving keyword-only options parameter esphome#10036 by @Copilot
[mcp23xxx] Use CachedGpioExpander esphome#10078 by @jesserockz
update espressif’s esp32-camera library to 2.1.1 esphome#10090 by @RubenKelevra
[esp32_ble_tracker] Add missing
USE_ESP32_BLE_DEVICE
guard foralready_discovered_
member esphome#10085 by @bdraco[esp32_ble_tracker] Refactor loop() method for improved readability and performance esphome#10074 by @bdraco
[esp32_rmt_led_strip] Work around IDFGH-16195 esphome#10093 by @swoboda1337
[bme680] Eliminate warnings due to unused functions esphome#9735 by @pgolawsk
[light] Allow light effect schema to be a schema object already esphome#10091 by @jesserockz
[bluetooth_proxy] Reduce flash usage by consolidating duplicate logging esphome#10094 by @bdraco
[esp32_ble_tracker] Simplify state machine guards with helper functions esphome#10092 by @bdraco
[deep_sleep] enable sleep pull up/down for wakeup pin esphome#9395 by @candrews
[esp32_ble] Make BLE notification limit configurable to fix ESP_GATT_NO_RESOURCES errors esphome#10098 by @bdraco
[bluetooth_proxy] Replace std::find with simple loop for small fixed array esphome#10102 by @bdraco
[ld2410] Replace
throttle
with native filters esphome#10019 by @kbx81 (breaking-change)[esp32_ble_client] Convert to C++17 nested namespace syntax esphome#10111 by @bdraco
[esp32_ble] Conditionally compile BLE advertising to reduce flash usage esphome#10099 by @bdraco (breaking-change)
[bluetooth_proxy] Consolidate dump_config() log calls esphome#10103 by @bdraco
[bluetooth_proxy][esp32_ble_tracker][esp32_ble_client] Consolidate duplicate logging code to reduce flash usage esphome#10097 by @bdraco
[bluetooth_proxy] Remove unnecessary heap allocation for response object esphome#10104 by @bdraco
Add device class absolute_humidity to the absolute humidity component esphome#10100 by @mbo18 (new-feature)
[esp32_touch] Restore get_value() for ESP32-S2/S3 variants esphome#10112 by @bdraco
[esp32_ble_client] Avoid iterating empty services vector for bluetooth_proxy connections esphome#10110 by @bdraco
[esp32_ble_tracker] Optimize member variable ordering to reduce memory padding esphome#10113 by @bdraco
[esp32_ble_client] Conditionally compile BLE service classes to reduce flash usage esphome#10114 by @bdraco (breaking-change)
[bluetooth_proxy] Remove V1 connection support esphome#10107 by @bdraco (breaking-change)
[switch] Add
switch.control
automation action esphome#10105 by @edwardtfn (new-feature)[mdns] Conditionally compile extra services to reduce flash usage esphome#10129 by @bdraco
[esp32_ble_client] Reduce flash usage by optimizing logging strings esphome#10119 by @bdraco
[wifi] Reduce flash usage by optimizing logging esphome#10127 by @bdraco
[cover] Reduce flash usage by optimizing validation messages esphome#10130 by @bdraco
[bluetooth_proxy] Optimize connection loop to reduce CPU usage esphome#10133 by @bdraco
[switch] Add
control()
method to API esphome#10118 by @edwardtfn (new-feature)[switch] Add trigger
on_state
esphome#10108 by @edwardtfn (new-feature)[esp32_ble_tracker] Fix false reboots when event loop is blocked esphome#10144 by @bdraco
[esp32] Add IDF log_level option esphome#10134 by @swoboda1337 (breaking-change)
[dashboard] Fix port fallback regression when device is offline esphome#10135 by @bdraco
[web_server] Reduce flash usage by consolidating parameter parsing esphome#10154 by @bdraco
[ade7880] Fix duplicate sensor name validation error esphome#10155 by @bdraco
Optimize subprocess performance with close_fds=False esphome#10145 by @bdraco
[CI] Print more info for when consts are duplicated esphome#10166 by @jesserockz
[neopixelbus] Fix neopixelbus on esp32 esphome#10123 by @swoboda1337
[lvgl] Various validation fixes esphome#10141 by @clydebarrow
[lvgl] fix allocation of reduced size buffer with rotation esphome#10147 by @clydebarrow
[nrf52, zephyr_debug] add zephyr debug component esphome#8319 by @tomaszduda23 (new-feature)
[display] Disallow
show_test_card: true
andupdate_interval: never
esphome#9927 by @ChadMatsalla[sensor] Extend timeout filter with option to return last value received esphome#10115 by @kbx81 (new-feature)
[esphome] Fix OTA watchdog resets during port scanning and network delays esphome#10152 by @bdraco
[api] Optimize single vector writes to use write() instead of writev() esphome#10193 by @bdraco
[bluetooth_proxy] Replace dynamic vector with fixed array for BLE advertisements esphome#10174 by @bdraco
[substitutions] Add some safe built-in functions to jinja parsing esphome#10178 by @jesserockz (new-feature)
[core] Improve entity duplicate validation error messages esphome#10184 by @bdraco
[api] Add constexpr optimizations to protobuf encoding esphome#10192 by @bdraco
[wifi] Remove restriction from using NONE power saving mode with BLE esphome#10181 by @kahrendt
[const] Add CONF_POWER_MODE esphome#10173 by @joshuasing
[core] Reset pin registry after target platform validations esphome#10199 by @jesserockz
[ld2412] New component esphome#9075 by @Rihan9 (new-component) (new-feature) (new-platform)
[atm90e32] energy meter calibration log output enhancements & software SPI fix esphome#10143 by @CircuitSetup
[ld2450] Replace
throttle
with native filters esphome#10196 by @kbx81 (breaking-change)[bme280_base, bmp280_base] add reasons to the fails, clean up logging esphome#10209 by @ssieb
[bluetooth_proxy] Remove ESPBTUUID dependency to save 296 bytes of flash esphome#10213 by @bdraco
[CI] Fix CI job failures for PRs with >300 changed files esphome#10215 by @bdraco
[entity] Allow
device_id
to be blank on entities esphome#10217 by @jesserockz (new-feature)[espnow] Set state to enabled before adding initial peers esphome#10225 by @jesserockz
[psram] allow disabling esphome#10224 by @ssieb
[esp32_ble] Add
USE_ESP32_BLE_UUID
when advertising is desired esphome#10230 by @jesserockzImprove error reporting for add_library esphome#10226 by @stellar-aria
[wifi] Automatically disable Enterprise WiFi support when EAP is not configured esphome#10242 by @bdraco
[core] Trigger clean build when components are removed from configuration esphome#10235 by @bdraco
[bluetooth_proxy] Remove redundant connection type check after V1 removal esphome#10208 by @bdraco
[esp32_ble] Optimize BLE event memory usage by eliminating std::vector overhead esphome#10247 by @bdraco
[web_server] fix cover_all_json_generator wrong detail esphome#10252 by @RFDarter
[esp32_ble] Store GATTC/GATTS param and small data inline to nearly eliminate heap allocations esphome#10249 by @bdraco
[senseair] Discard 0 ppm readings with “Out Of Range” bit set. esphome#10275 by @raineth
[core] Fix post-OTA logs display when using esphome run and MQTT esphome#10274 by @raineth
[core] Fix scheduler race condition where cancelled items still execute esphome#10268 by @bdraco
[esp32] Write variant to sdkconfig file esphome#10267 by @jesserockz
[nextion] Don’t include terminating NUL in nextion text_sensor states esphome#10273 by @raineth
[atm90e32] Only read 1 register per SPI transaction per datasheet. esphome#10258 by @raineth
[pipsolar] fix faults_present, fix update interval esphome#10289 by @patagonaa
[bluetooth_proxy] Fix connection slot race by deferring slot release until GATT close esphome#10303 by @bdraco
Dependency Changes
Show
Collapse
Bump ruff from 0.12.2 to 0.12.3 esphome#9446 by @dependabot[bot]
Bump aioesphomeapi from 34.2.1 to 35.0.1 esphome#9474 by @dependabot[bot]
Bump aioesphomeapi from 35.0.1 to 36.0.0 esphome#9567 by @dependabot[bot]
Bump pytest-asyncio from 1.0.0 to 1.1.0 esphome#9588 by @dependabot[bot]
Bump pytest-xdist from 3.7.0 to 3.8.0 esphome#9287 by @dependabot[bot]
Bump ruff from 0.12.3 to 0.12.4 esphome#9634 by @dependabot[bot]
Bump aioesphomeapi from 36.0.0 to 36.0.1 esphome#9636 by @dependabot[bot]
Bump aioesphomeapi from 36.0.1 to 37.0.0 esphome#9677 by @dependabot[bot]
Bump aioesphomeapi from 37.0.0 to 37.0.1 esphome#9685 by @dependabot[bot]
Bump aioesphomeapi from 37.0.1 to 37.0.2 esphome#9738 by @dependabot[bot]
Bump aioesphomeapi from 37.0.2 to 37.0.3 esphome#9754 by @dependabot[bot]
Bump aioesphomeapi from 37.0.3 to 37.0.4 esphome#9764 by @dependabot[bot]
Bump ruff from 0.12.4 to 0.12.5 esphome#9871 by @dependabot[bot]
Bump aioesphomeapi from 37.0.4 to 37.1.0 esphome#9905 by @dependabot[bot]
Bump aioesphomeapi from 37.1.0 to 37.1.2 esphome#9910 by @dependabot[bot]
Bump aioesphomeapi from 37.1.2 to 37.1.3 esphome#9943 by @dependabot[bot]
Bump aioesphomeapi from 37.1.3 to 37.1.4 esphome#9964 by @dependabot[bot]
Bump aioesphomeapi from 37.1.4 to 37.1.5 esphome#9977 by @dependabot[bot]
Bump ruff from 0.12.5 to 0.12.7 esphome#9976 by @dependabot[bot]
Bump aioesphomeapi from 37.1.5 to 37.1.6 esphome#9988 by @dependabot[bot]
Bump aioesphomeapi from 37.1.6 to 37.2.0 esphome#9996 by @dependabot[bot]
Bump aioesphomeapi from 37.2.0 to 37.2.1 esphome#9998 by @dependabot[bot]
Bump aioesphomeapi from 37.2.1 to 37.2.2 esphome#10009 by @dependabot[bot]
Bump esptool from 4.9.0 to 5.0.2 esphome#9983 by @dependabot[bot]
Bump aioesphomeapi from 37.2.2 to 37.2.3 esphome#10012 by @dependabot[bot]
Bump aioesphomeapi from 37.2.3 to 37.2.4 esphome#10050 by @dependabot[bot]
Bump aioesphomeapi from 37.2.4 to 37.2.5 esphome#10080 by @dependabot[bot]
Bump docker/login-action from 3.4.0 to 3.5.0 in the docker-actions group esphome#10081 by @dependabot[bot]
Bump aioesphomeapi from 37.2.5 to 38.0.0 esphome#10109 by @dependabot[bot]
Bump actions/download-artifact from 4.3.0 to 5.0.0 esphome#10106 by @dependabot[bot]
Bump actions/cache from 4.2.3 to 4.2.4 in /.github/actions/restore-python esphome#10125 by @dependabot[bot]
Bump actions/cache from 4.2.3 to 4.2.4 esphome#10128 by @dependabot[bot]
Bump ruff from 0.12.7 to 0.12.8 esphome#10126 by @dependabot[bot]
Bump tornado from 6.5.1 to 6.5.2 esphome#10142 by @dependabot[bot]
Bump aioesphomeapi from 38.0.0 to 38.1.0 esphome#10176 by @dependabot[bot]
Bump pylint from 3.3.7 to 3.3.8 esphome#10177 by @dependabot[bot]
Bump aioesphomeapi from 38.1.0 to 38.2.1 esphome#10197 by @dependabot[bot]
Bump actions/checkout from 4 to 5 esphome#10198 by @dependabot[bot]
Bump aioesphomeapi from 38.2.1 to 39.0.0 esphome#10222 by @dependabot[bot]
Bump esphome-dashboard from 20250514.0 to 20250814.0 esphome#10227 by @dependabot[bot]
Past Changelogs
Show
Collapse
- ESPHome 2025.7.0 - 16th July 2025
- ESPHome 2025.6.0 - 18th June 2025
- ESPHome 2025.5.0 - 21st May 2025
- ESPHome 2025.4.0 - 16th April 2025
- ESPHome 2025.3.0 - 19th March 2025
- ESPHome 2025.2.0 - 19th February 2025
- ESPHome 2024.12.0 - 18th December 2024
- ESPHome 2024.11.0 - 20th November 2024
- ESPHome 2024.10.0 - 16th October 2024
- ESPHome 2024.9.0 - 18th September 2024
- ESPHome 2024.8.0 - 21st August 2024
- ESPHome 2024.7.0 - 17th July 2024
- ESPHome 2024.6.0 - 19th June 2024
- ESPHome 2024.5.0 - 15th May 2024
- ESPHome 2024.4.0 - 17th April 2024
- ESPHome 2024.3.0 - 20th March 2024
- ESPHome 2024.2.0 - 21st February 2024
- ESPHome 2023.12.0 - 20th December 2023
- ESPHome 2023.11.0 - 15th November 2023
- ESPHome 2023.10.0 - 18th October 2023
- ESPHome 2023.9.0 - 27th September 2023
- ESPHome 2023.8.0 - 16th August 2023
- ESPHome 2023.7.0 - 19th July 2023
- ESPHome 2023.6.0 - 21st June 2023
- ESPHome 2023.5.0 - 17th May 2023
- ESPHome 2023.4.0 - 19th April 2023
- ESPHome 2023.3.0 - 15th March 2023
- ESPHome 2023.2.0 - 15th February 2023
- ESPHome 2022.12.0 - 14th December 2022
- ESPHome 2022.11.0 - 16th November 2022
- ESPHome 2022.10.0 - 19th October 2022
- ESPHome 2022.9.0 - 21st September 2022
- ESPHome 2022.8.0 - 17th August 2022
- ESPHome 2022.6.0 - 15th June 2022
- ESPHome 2022.5.0 - 18th May 2022
- ESPHome 2022.4.0 - 20th April 2022
- ESPHome 2022.3.0 - 16th March 2022
- ESPHome 2022.2.0 - 16th February 2022
- ESPHome 2022.1.0 - 19th January 2022
- ESPHome 2021.12.0 - 11th December 2021
- ESPHome 2021.11.0 - 17th November 2021
- ESPHome 2021.10.0 - 20th October 2021
- ESPHome 2021.9.0 - 15th September 2021
- ESPHome 2021.8.0 - 18th August 2021
- Changelog - Version 1.20.0 - 21st July 2021
- Changelog - Version 1.19.0 - 16th June 2021
- Changelog - Version 1.18.0 - 19th May 2021
- Changelog - Version 1.17.0 - 4th May 2021
- Changelog - Version 1.16.0 - February 3, 2021
- Changelog - Version 1.15.0 - September 13, 2020
- Changelog - Version 1.14.0 - November 1
- Changelog - Version 1.13.0 - May 30th 2019
- Changelog - Version 1.12.0
- Changelog - Version 1.11.0
- Changelog - Version 1.10.0
- Changelog - Version 1.9.0
- Version 1.8.0
- Version 1.7.0