Skip to content

Question: ESPHome update 2025.11.0 #22

@hansw1204

Description

@hansw1204

Does the update to ESPHome 2025.11.0 break anything for this particular application? They list quite a bit of potentially breaking changes.
Many thanks for any insights.

User-Facing Breaking Changes

WiFi & Network

WiFi: WiFi and Ethernet components no longer block other components’ setup until connected. Components with setup priority > WIFI (802.3) now initialize immediately, even if network is disconnected. #9823

WiFi min_auth_mode: ESP8266 default will change from WPA to WPA2 in 2026.6.0. Users with WPA-only routers must explicitly set min_auth_mode: WPA before then. #11814

WiFi priority: The priority configuration option now only accepts integers (-128 to 127) instead of floats. Change priority: 5.5 to priority: 5. #11830

.local addresses: .local addresses now require mDNS to be enabled for DNS resolution. Previously attempted DNS resolution could add 10+ second delays. #11508

Network high performance: Speaker media player now always enables high performance networking mode (previously only with codec support). Users can override with enable_high_performance under the network component if needed. #11812

ESP32 Platform

ESP32 brownout protection: ESP-IDF now reduces PHY TX power during brownout to prevent boot loops. Can be disabled with sdkconfig_options: CONFIG_ESP_PHY_REDUCE_TX_POWER: n if needed. #11306

ESP32-S3 PSRAM: PSRAM mode is now required when multiple PSRAM modes are available (ESP32-S3 only). Users must explicitly choose PSRAM mode in configuration. #11470

Component Behavior Changes

Script max_runs: Queued scripts now default to max_runs: 5 (allowing 1 running + 4 queued instances) instead of unlimited to prevent crashes from unbounded memory growth. Set max_runs explicitly if you need more capacity. #11308

Remote transmitter: Remote transmitter now defaults to non-blocking mode to prevent long blocking operations (>30ms). #11524

Fan preset modes: Fan preset modes now preserve the order defined in YAML instead of being sorted alphabetically. The order in Home Assistant will match your YAML configuration order. #11483

Select state: The public state member has been deprecated and will be removed in 2026.5.0. Use current_option() method instead. Deprecation warnings will be shown during compilation. #11623

Component-Specific Changes

HM3301: AQI calculation updated to EPA 2024 standard. Values will change compared to the old 2012 formula. #9442

GDK101: Firmware version is now reported as a string instead of a float division result. #11029

Uponor Smatrix: The address property of the uponor_smatrix component was removed. Device addresses are now 32-bit instead of separate 16-bit system and device addresses. Update configurations by prepending the previous system address to individual device addresses. #11066

Pipsolar: Fixed typo warnung_low_pv_energy renamed to warning_low_pv_energy. Update YAML configurations. #10291

E-Paper SPI: Busy pin logic corrected to match datasheet (active low). Some e-paper displays may behave differently. #11349

nRF52 bootloader: Default bootloader changed for xiao_ble and adafruit_itsybitsy_nrf52840 boards. Warning shown if generic Adafruit bootloader is used. #10698

HTTP request triggers: Changed from multiple on_response/on_error triggers to a single trigger that receives variables. Update automation configurations to use the new variable-based trigger format. #11464

YAML Lambda Changes

Users who access component members directly in YAML lambdas may need updates:

Select: Change id(my_select).state to id(my_select).current_option() (deprecated, will be removed in 2026.5.0). #11623

Fan: Change id(my_fan).preset_mode to id(my_fan).get_preset_mode(). #11632

Event: Change id(my_event).last_event_type to id(my_event).get_last_event_type(). #11767

Breaking Changes for Developers

The following changes affect external component developers. Standard YAML configurations are generally not affected.

Core Framework Changes

Action/Trigger Framework: All action/trigger/condition method signatures changed to use const references (const Ts&... x) instead of pass-by-value (Ts... x). See the Action Framework Performance Optimization blog post for migration details. #11704

Controller API: Controllers now use global registry pattern. Method signatures changed to remove unused state parameters (e.g., on_sensor_update(sensor::Sensor *obj) instead of on_sensor_update(sensor::Sensor *obj, float state)). External controller implementations extremely rare. #11772

EntityBase::hash_base(): Removed deprecated virtual method (deprecated since June 2022). Remove hash_base() overrides from external components. #11783

hexencode(): Removed function deprecated since 2022.1. Use alternative encoding methods. #11383

Schema constants: Removed deprecated schema constants from core. Update external components to use current schema helpers. #11591

Component-Specific API Changes

Climate

See the Climate Entity Class: FiniteSetMask and Flash Storage Optimizations blog post for migration details.

Custom modes storage: Changed from std::setstd::string to FiniteSetMask for supported modes, and from std::vectorstd::string to std::vector<const char *> for custom fan modes and presets. #11466, #11621

Member access: Climate device members (custom_fan_mode_, custom_preset_) are now private. Use protected setter methods (set_custom_fan_mode_(), set_custom_preset_()) in derived classes. #11621

Deprecated methods: Removed methods deprecated in 1.20 (July 2021). #11388

Light

See the Light Entity Class: Memory Optimizations blog post for migration details.

Color modes: Replaced std::set with ColorModeMask bitmask class. #11348

Effect names: Changed from std::string to const char * for effect names. #11487

Deprecated methods: Removed methods deprecated in 2021.8.0. #11389

Fan

See the Fan Entity Class: Preset Mode Flash Storage and Order Preservation blog post for migration details.

Preset modes: Changed from std::setstd::string to std::vector<const char *>. The .preset_mode public member has been removed - use get_preset_mode() for reading and set_preset_mode_() for writing in derived classes. #11483, #11632

Deprecated code: Removed code deprecated in 2022.2. #11392

Select

See the Select Entity Class: Index-Based Operations and Flash Storage blog post for migration details.

Options storage: Changed from std::vectorstd::string to FixedVector<const char *>. #11514

State member: Public state member deprecated (will be removed in 2026.5.0). Use current_option() method instead. #11623

Index-based operations: Added optional control(size_t index) override for more efficient implementations. #11623

Event

See the Event Entity Class: Memory Optimizations blog post for migration details.

Event types storage: Changed from FixedVectorstd::string to FixedVector<const char *>. The last_event_type field is now private - use get_last_event_type() getter instead. #11463, #11767
Network Components

WiFi scan results: External components that access WiFi scan results after connection must call wifi.request_wifi_scan_results() in their to_code() function to prevent cleanup. #11205

use_address: Changed from const std::string & to const char * in WiFi, Ethernet, and OpenThread components. Update external components calling get_use_address() or set_use_address(). #11707

Other Components

Cover: Removed methods deprecated in 2021.9. Update to current cover API. #11391

Nextion: Removed methods deprecated in 1.20 (July 2021). Update to current nextion API. #11393

ESP32-Specific Changes

ESP-IDF advanced options: New options to disable libc locks in IRAM and VFS features. External components using these features must call helper functions to register needs. #10930, #11441
Migration Resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions