ESPHome 2025.11.0: WiFi overhaul and ultra-low latency events

Release Overview
Section titled “Release Overview”ESPHome 2025.11.0 is a performance and reliability-focused release that makes your devices faster, more reliable, and more capable than ever before. WiFi connectivity gets a complete overhaul with intelligent mesh network handling, dramatically faster connection times, and enhanced security controls. Memory optimizations free up 2-31KB of RAM and 10KB+ of flash, giving even resource-constrained devices room to grow. A new infrastructure change slashes event processing latency by 600-1,300x—making BLE Proxy GATT operations rival local Bluetooth adapters, even over the network.
WiFi improvements address the most common connectivity pain points: devices no longer get stuck on failed access points in mesh networks, hidden network connections are 2-6 seconds faster, and the new min_auth_mode option provides security controls with WPA2 defaults. The redesigned connection strategy with intelligent AP selection and reliable reconnection logic delivers the rock-solid WiFi performance users expect.
Ultra-low latency event processing transforms responsiveness across BLE, USB, MQTT, ESP-NOW, and wake word detection—reducing latency from 0-16ms to just ~12 microseconds. Voice assistants respond faster to wake words, BLE devices pair quicker, and MQTT automations trigger with sub-millisecond precision. This zero-configuration optimization automatically benefits all affected components on ESP32 platforms.
Memory optimizations touch nearly every core component—WiFi scan management, select options, lights, climate controls, sensors, and the action framework. Sensor filter optimizations deliver the most dramatic gains, with sliding window filters saving up to 25KB of RAM on configurations that previously struggled with memory constraints. These improvements enable more complex configurations on the same hardware.
New hardware support expands ESPHome’s reach with 7 new components including the HDC2010 sensor, MCP3221 ADC, HLK-FM22X face recognition module, BH1900NUX sensor, RX8130 RTC, and TinyUSB foundation support for ESP32-S2/S3. Platform enhancements bring I2C and BLE logging to nRF52, while ESP32 gains hosted BLE for chips without native Bluetooth and ESP-NOW transport capabilities.
Enhanced WiFi Security and Reliability
Section titled “Enhanced WiFi Security and Reliability”Dramatically Improved WiFi Reliability and Connection Times (esphome#11805)
A major step forward in WiFi reliability addresses critical connectivity issues in mesh networks and multi-AP environments. Previously, devices would get stuck repeatedly trying the strongest signal even when that access point was rejecting connections—a bug introduced in 2025.8.2 that made the priority-based failover system ineffective.
The redesigned connection strategy delivers measurable improvements:
- Intelligent AP selection: Connection failure history now takes precedence over signal strength, enabling automatic failover to working access points instead of getting stuck on failed BSSIDs
- Faster initial connections: Explicit hidden network probing phase with smart skipping of visible networks reduces connection time by 2-6 seconds
- Reliable reconnections: Two-attempt BSSID filtering eliminates false positives from normal WiFi stack transitions
- Natural mesh handling: Simplified architecture removes 150+ lines of complex BSSID cycling logic—the priority degradation system now naturally handles mesh networks through scan-based retry cycles
- Clearer diagnostics: State machine-based retry phases with improved logging make connection issues easier to troubleshoot
- Memory efficiency: Automatic priority reset when all BSSIDs fail equally (saves up to 96 bytes)
This release restores and improves upon the reliable failover behavior users expect in multi-AP deployments, while reducing connection latency and memory overhead.
Configurable Minimum Authentication Mode (esphome#11814)
Added min_auth_mode configuration option to control WiFi authentication security:
- Secure default: WPA2 minimum authentication mode protects against downgrade attacks
- Explicit security control: Choose between WPA, WPA2, or WPA3 (ESP32 only)
- Backward compatibility: Can be lowered to WPA for legacy routers
wifi: ssid: "MyNetwork" password: "password123" min_auth_mode: WPA2 # Recommended for securityMemory Optimizations for Resource-Constrained Devices
Section titled “Memory Optimizations for Resource-Constrained Devices”ESPHome 2025.11.0 delivers substantial memory improvements across the entire framework, with measured savings ranging from 2-7KB of RAM on typical devices and up to 31KB of RAM on sensor-heavy configurations. Flash savings reach 10KB+ on ESP32/ESP8266 platforms.
Sensor Filter Optimizations:
- Sliding window filters (esphome#11282) - Saves 22-25KB RAM on large batch windows, 90% on sliding windows, 1,748 bytes flash on ESP8266. Prevents OOM crashes on ESP32 devices with multiple sensors
- Filter value lists (esphome#11407) - Saves 444 bytes flash on ESP8266, 18-52% faster execution
- Calibration/OR filters (esphome#11437) - Saves 464 bytes flash, 48 bytes RAM on ESP8266
Component Optimizations:
- WiFi component (esphome#11205) - Saves 440-1,192 bytes RAM depending on network density
- Select component (esphome#11514) - Saves 270-2,800 bytes per select depending on option count
- Light component (esphome#11348) - Saves 1,756 bytes flash on ESP8266, ~108 bytes RAM per 6 lights
- Climate component (esphome#11466, esphome#11621) - Saves ~440 bytes RAM per climate entity
- Fan component (esphome#11483, esphome#11632) - Saves ~24 bytes per fan
- Event component (esphome#11463, esphome#11767) - Saves 1,248 bytes flash
- Global Controller Registry (esphome#11772) - Saves 388-6,148 bytes RAM depending on entity count
- Action framework (esphome#11704) - Saves 356 bytes flash, eliminates RAM allocations in automations
- Script component (esphome#11308) - Saves 1,592 bytes flash on ESP32
- ESP32-IDF (esphome#10930, esphome#11441) - Saves ~10KB combined (1.3KB + 8.7KB)
- Network component (esphome#11707) - Saves 32-72 bytes per network component
- Light effects (esphome#11487) - Saves 24-32 bytes per effect
- WiFi priority (esphome#11830) - Saves 3 bytes per network entry plus up to 96 bytes from auto-recovery
Note on Breaking Changes: These optimizations required API changes for external component developers. See Breaking Changes section for migration details. Standard YAML configurations remain fully compatible but custom code in lambdas may require updates.
Ultra-Low Latency Event Processing
Section titled “Ultra-Low Latency Event Processing”Thread-Safe Loop Wake Mechanism (esphome#11681)
A new infrastructure change eliminates event processing delays across multiple components. Previously, events from background tasks (BLE, USB, MQTT, ESP-NOW, wake word detection) would queue and wait up to 16ms for the next select() timeout before processing. The new wake_loop_threadsafe() mechanism uses a UDP loopback socket to immediately wake the main event loop when events arrive.
Latency Improvements:
- Before: 0-16ms average ~8ms
- After: ~12 microseconds
- Speedup: 600-1,300x faster event processing
Components with Ultra-Low Latency:
- BLE operations (esphome#11663) - Bluetooth Proxy, BLE Client GATT operations, HomeKit pairing
- USB Host (esphome#11683) - USB event processing over 1000x faster
- MQTT (esphome#11695) - ESP32 only (ESP8266 already runs in main loop)
- ESP-NOW (esphome#11696) - Packet reception and transmission completion
- Micro Wake Word (esphome#11698) - Near-instant automation responses, all triggers fire within same millisecond
Real-World Impact:
- BLE Proxy GATT operations now rival or exceed BlueZ local adapters in Home Assistant, even when operating over the network
- Faster wake word detection response for voice assistants
- Improved BLE connection and pairing times
- Reduced MQTT automation trigger latency
- Faster USB event handling (e.g., Z-Wave PoE proxies)
This optimization requires no configuration changes and automatically benefits all affected components on ESP32 platforms.
High-Performance Networking for Media Streaming
Section titled “High-Performance Networking for Media Streaming”Automatic Network Performance Tuning (esphome#11812)
Introduced centralized high-performance networking system where components request optimized settings through network.require_high_performance_networking():
- PSRAM-aware configuration: Aggressive settings (512KB TCP windows) when PSRAM guaranteed, conservative (65KB windows) otherwise
- WiFi optimization: Automatically applies optimized WiFi driver settings when high-performance mode enabled
- Automatic enablement: Speaker media player automatically enables high-performance networking (fixes streaming stuttering issues)
- User control: New
network.enable_high_performanceoption to explicitly enable/disable
This optimization is critical for ESP32-S3 devices running voice assistants and media streaming, eliminating audio stuttering caused by insufficient WiFi buffer sizes.
PSRAM Configuration Options (esphome#11411)
Added ignore_not_found option (default true) to allow disabling CONFIG_SPIRAM_IGNORE_NOTFOUND. When set to false on devices with guaranteed PSRAM, enables WiFi driver to configure larger buffers for optimal streaming performance. Also improves boot reliability by managing heap allocations before PSRAM initialization.
New Hardware Support
Section titled “New Hardware Support”7 New Sensor/Device Components:
- HDC2010 (esphome#6674) - Texas Instruments temperature and humidity sensor
- MCP3221 (esphome#7764) - I2C A-D converter with configurable reference voltage
- HLK-FM22X (esphome#8059) - Face recognition module family
- BH1900NUX (esphome#8631) - Rohm Semiconductor temperature sensor
- RX8130 (esphome#10511) - Epson RTC chip (used in M5Stack devices)
- BLE NUS Logger (esphome#9846) - Logging over BLE for nRF52 platform
- TinyUSB (esphome#11678) - USB device functionality foundation for ESP32-S2/S3
Extended Hardware Support:
- GP8403 DAC now supports GP8413 (15-bit) model (esphome#7726) with higher precision
- Toshiba climate supports RAS-2819T air conditioner (esphome#9490) with two-packet IR protocol
- Dallas temperature sensors support index-based addressing (esphome#11346) for devices without programmable addresses
- SX126x LoRa module pins now support GPIO port expanders (esphome#11782) for SeeedStudio SenseCAP Indicator
- Mopeka Standard Check sensors support alternate ID 0x44 (esphome#10907)
Platform & Feature Expansions:
- nRF52 platform - I2C support (esphome#8150), BLE NUS logging (esphome#9846, esphome#9861), GPIO voltage control (esphome#9858), GPIO input by switching to polling mode (esphome#11664), and Seeed XIAO BLE board improvements (esphome#10698)
- ESP-NOW transport - Added ESP-NOW as a transport platform for packet_transport component (esphome#11025)
- IR Remote protocols - Dyson AM07 fan support (esphome#10163), Symphony protocol (esphome#10777), Toshiba RAS-2819T AC (esphome#9490)
ESP32 Platform Enhancements
Section titled “ESP32 Platform Enhancements”ESP-IDF 5.5.1 and Arduino 3.3.2 (esphome#9839)
Major framework updates bring the latest ESP-IDF 5.5.1 and Arduino 3.3.2 to ESPHome:
- ESP-IDF 5.5.1: Latest features and bug fixes from Espressif
- Arduino 3.3.2: Updated Arduino framework with improved stability
- Memory improvements: Significant RAM gains (+3.1-3.3MB free RAM)
- Platform version: Updated to 55.03.31-2
These updates are automatically applied when using the default framework versions.
Hosted BLE Support (esphome#11167)
ESP32 P4 and other chips without integrated Bluetooth now support BLE through external controllers using ESP-Hosted API. Enables Bluetooth Proxy functionality on previously unsupported ESP32 variants.
Hosted OTA Support (esphome#11562)
Firmware updates for ESP32 co-processors are now supported via ESP-Hosted API, enabling OTA functionality for hosted configurations.
Brownout Protection (esphome#11306)
ESP-IDF builds now automatically reduce PHY TX power during brownout conditions to prevent boot loops. This feature was previously only available in Arduino framework builds. Can be disabled if needed through sdkconfig options.
Configurable Main Loop Stack Size (esphome#10564)
ESP32 ESP-IDF configurations can now tune the main loop stack size for complex setups:
esp32: framework: type: esp-idf advanced: main_loop_stack_size: 16384 # Increase for deeply nested componentsFramework Source Options (esphome#11125)
ESP32 framework configuration now accepts additional PlatformIO source schemes beyond HTTP, including symlink://, git://, and other repository protocols for local development.
OpenThread Improvements
Section titled “OpenThread Improvements”Over-The-Air Updates (esphome#11095)
OpenThread devices (ESP32-H2) now support OTA updates via esphome run. The mDNS address is automatically populated as the device’s default address, eliminating the need to manually specify --device <address>.
Sleepy End Device Support (esphome#11374)
Added poll_period configuration for MTD (Minimal Thread Device) mode, enabling Sleep End Device (SED) behavior for battery-powered Thread devices:
openthread: device_type: MTD poll_period: 40s # Radio turns off between pollsnRF52 Platform Expansion
Section titled “nRF52 Platform Expansion”The nRF52 (Zephyr) platform received extensive new functionality:
- I2C Support (esphome#8150) - Full I2C bus support for sensors and peripherals
- BLE Logging (esphome#9846, esphome#9861) - Log viewing via
esphome logs --device BLEor MAC address - GPIO High Voltage Mode (esphome#9858) - Adjustable voltage levels for USB-powered operation
- Xiao BLE Bootloader Fix (esphome#10698) - Corrected default bootloader, fixed upload, added runtime mismatch detection
LVGL Display Enhancements
Section titled “LVGL Display Enhancements”Simplified Layout System (esphome#10149)
LVGL widgets now support shorthand layout methods for easier configuration:
lvgl: widgets: - container: layout: vertical # Simple flex layout widgets: - label: text: "Item 1" - label: text: "Item 2"
- container: layout: 3x2 # Simple grid layoutNew container widget provides styling-free base with 100% default dimensions. Added stretch option for flex layouts and substantial speedup of config validation.
Rendering Triggers and NaN Substitution (esphome#11628, esphome#11712)
Added on_draw_start and on_draw_end triggers for coordinating e-paper display updates. Text formatting now supports NaN substitution for graceful handling of unavailable sensor values:
lvgl: widgets: - label: text: format: "%.1f°C" args: [id(temp_sensor)] if_nan: "--.-°C" # Show when sensor unavailableDisplay Component Improvements
Section titled “Display Component Improvements”E-Paper SPI Refactoring (esphome#11540)
Major improvements to e-paper displays:
- Faster transfers: Larger data blocks for Spectra displays
- Optimized state machine: Code-based sequence instead of linear queue saves memory
- Board-specific configs: Pre-configured pin mappings (Seeed-reTerminal-E1002)
- Improved timing: Internal delay handling instead of loop disabling
- Fixed busy pin logic (esphome#11349): Corrected active-low detection
Component Idle Detection (esphome#11651)
New component.is_idle condition and is_idle() method for automations that need to wait for displays to finish updating before proceeding:
lvgl: on_draw_end: - component.update: epaper_display - wait_until: component.is_idle: epaper_display # Wait for display ready - lvgl.resume:Configuration and Developer Tools
Section titled “Configuration and Developer Tools”Advanced Substitution Features (esphome#11203)
The !extend and !remove tags now support substitutions and Jinja templates:
substitutions: COMPONENT_TO_REMOVE: component3
packages: base: - id: !remove ${COMPONENT_TO_REMOVE} # Conditional removalMemory Analysis Command (esphome#11395)
New esphome analyze-memory <config.yaml> command provides detailed memory usage breakdown by component:
- Compiles configuration (fast relink if cached)
- Analyzes memory usage by component and external components
- Displays comprehensive memory report
- Helps identify optimization opportunities
Component-Specific Enhancements
Section titled “Component-Specific Enhancements”Sensors
Section titled “Sensors”- Dallas temperature sensors support index-based addressing (esphome#11346) for devices without programmable addresses
- INA2xx reset control (esphome#10787): Preserve counters through ESP resets with
reset_on_boot: false - XGZP68xx oversampling (esphome#10306): Configurable oversampling up to 32768x for improved accuracy
Improved Improv WiFi Provisioning (esphome#10757)
ESP32 Improv now supports next_url with template substitutions for post-provisioning redirection:
esp32_improv: next_url: "https://example.com/setup?device={{device_name}}&ip={{ip_address}}"Sensor Heartbeat Filter Options (esphome#10993)
Heartbeat filter adds optimistic mode to forward new values immediately while still repeating periodically:
sensor: - platform: template filters: - heartbeat: period: 100ms optimistic: true # Forward immediately + repeatESP-NOW Packet Transport (esphome#11025)
ESP-NOW now available as transport platform for packet_transport component, enabling direct ESP32-to-ESP32 wireless sensor data transmission.
Remote Transmitter Non-Blocking Mode (esphome#11524)
Remote transmitter operations no longer block the main loop by default, preventing “took a long time for an operation” warnings during long IR transmissions.
HTTP Request Trigger Variables (esphome#11464)
HTTP request actions now pass trigger variables correctly into on_response and on_error triggers.
Breaking Changes
Section titled “Breaking Changes”User-Facing Breaking Changes
Section titled “User-Facing Breaking Changes”WiFi & Network
Section titled “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. esphome#9823
-
WiFi min_auth_mode: ESP8266 default will change from
WPAtoWPA2in 2026.6.0. Users with WPA-only routers must explicitly setmin_auth_mode: WPAbefore then. esphome#11814 -
WiFi priority: The
priorityconfiguration option now only accepts integers (-128 to 127) instead of floats. Changepriority: 5.5topriority: 5. esphome#11830 -
.local addresses: .local addresses now require mDNS to be enabled for DNS resolution. Previously attempted DNS resolution could add 10+ second delays. esphome#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_performanceunder the network component if needed. esphome#11812
ESP32 Platform
Section titled “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: nif needed. esphome#11306 -
ESP32 PSRAM: PSRAM is no longer auto-loaded by components that depend on it (such as
esp32_camera,speaker, andmedia_player). Users must now explicitly add apsram:configuration block to their YAML. Additionally, for ESP32-S3, themodeoption is now required since S3 supports both quad and octal modes. Typically, 2MB PSRAM usesquadmode while 8 or 16MB usesoctalmode—check your module’s datasheet. Example configuration:psram:mode: octal # Required for ESP32-S3, use 'quad' or 'octal'speed: 80MHz
Component Behavior Changes
Section titled “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. Setmax_runsexplicitly if you need more capacity. esphome#11308 -
Remote transmitter: Remote transmitter now defaults to non-blocking mode to prevent long blocking operations (>30ms). esphome#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. esphome#11483
-
Select state: The public
statemember has been deprecated and will be removed in 2026.5.0. Usecurrent_option()method instead. Deprecation warnings will be shown during compilation. esphome#11623
Component-Specific Changes
Section titled “Component-Specific Changes”-
HM3301: AQI calculation updated to EPA 2024 standard. Values will change compared to the old 2012 formula. esphome#9442
-
GDK101: Firmware version is now reported as a string instead of a float division result. esphome#11029
-
Uponor Smatrix: The
addressproperty of theuponor_smatrixcomponent 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. esphome#11066 -
Pipsolar: Fixed typo
warnung_low_pv_energyrenamed towarning_low_pv_energy. Update YAML configurations. esphome#10291 -
E-Paper SPI: Busy pin logic corrected to match datasheet (active low). Some e-paper displays may behave differently. esphome#11349
-
nRF52 bootloader: Default bootloader changed for
xiao_bleandadafruit_itsybitsy_nrf52840boards. Warning shown if generic Adafruit bootloader is used. esphome#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. esphome#11464
YAML Lambda Changes
Section titled “YAML Lambda Changes”Users who access component members directly in YAML lambdas may need updates:
-
Select: Change
id(my_select).statetoid(my_select).current_option()(deprecated, will be removed in 2026.5.0). esphome#11623 -
Fan: Change
id(my_fan).preset_modetoid(my_fan).get_preset_mode(). esphome#11632 -
Event: Change
id(my_event).last_event_typetoid(my_event).get_last_event_type(). esphome#11767 -
Climate: Custom mode members are now private. Change direct access to public accessor methods:
- Check if active:
id(my_climate).custom_fan_mode.has_value()→id(my_climate).has_custom_fan_mode(),id(my_climate).custom_preset.has_value()→id(my_climate).has_custom_preset() - Get value:
id(my_climate).custom_fan_mode.value()→id(my_climate).get_custom_fan_mode(),id(my_climate).custom_preset.value()→id(my_climate).get_custom_preset()
- Check if active:
Breaking Changes for Developers
Section titled “Breaking Changes for Developers”The following changes affect external component developers. Standard YAML configurations are generally not affected.
Core Framework Changes
Section titled “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. esphome#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 ofon_sensor_update(sensor::Sensor *obj, float state)). External controller implementations extremely rare. esphome#11772 -
EntityBase::hash_base(): Removed deprecated virtual method (deprecated since June 2022). Remove
hash_base()overrides from external components. esphome#11783 -
hexencode(): Removed function deprecated since 2022.1. Use alternative encoding methods. esphome#11383
-
Schema constants: Removed deprecated schema constants from core. Update external components to use current schema helpers. esphome#11591
Component-Specific API Changes
Section titled “Component-Specific API Changes”Climate
Section titled “Climate”See the Climate Entity Class: FiniteSetMask and Flash Storage Optimizations blog post for migration details.
-
Custom modes storage: Changed from
std::set<std::string>toFiniteSetMaskfor supported modes, and fromstd::vector<std::string>tostd::vector<const char *>for custom fan modes and presets. esphome#11466, esphome#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. Use public accessor methods to read values:has_custom_fan_mode(),get_custom_fan_mode(),has_custom_preset(),get_custom_preset(). esphome#11621 -
Deprecated methods: Removed methods deprecated in 1.20 (July 2021). esphome#11388
See the Light Entity Class: Memory Optimizations blog post for migration details.
-
Color modes: Replaced
std::set<ColorMode>withColorModeMaskbitmask class. esphome#11348 -
Effect names: Changed from
std::stringtoconst char *for effect names. esphome#11487 -
Deprecated methods: Removed methods deprecated in 2021.8.0. esphome#11389
See the Fan Entity Class: Preset Mode Flash Storage and Order Preservation blog post for migration details.
-
Preset modes: Changed from
std::set<std::string>tostd::vector<const char *>. The.preset_modepublic member has been removed - useget_preset_mode()for reading andset_preset_mode_()for writing in derived classes. esphome#11483, esphome#11632 -
Deprecated code: Removed code deprecated in 2022.2. esphome#11392
Select
Section titled “Select”See the Select Entity Class: Index-Based Operations and Flash Storage blog post for migration details.
-
Options storage: Changed from
std::vector<std::string>toFixedVector<const char *>. esphome#11514 -
State member: Public
statemember deprecated (will be removed in 2026.5.0). Usecurrent_option()method instead. esphome#11623 -
Index-based operations: Added optional
control(size_t index)override for more efficient implementations. esphome#11623
See the Event Entity Class: Memory Optimizations blog post for migration details.
- Event types storage: Changed from
FixedVector<std::string>toFixedVector<const char *>. Thelast_event_typefield is now private - useget_last_event_type()getter instead. esphome#11463, esphome#11767
Network Components
Section titled “Network Components”See the Network get_use_address() Optimization blog post for migration details.
-
WiFi scan results: External components that access WiFi scan results after connection must call
wifi.request_wifi_scan_results()in theirto_code()function to prevent cleanup. esphome#11205 -
use_address: Changed from
const std::string &toconst char *in WiFi, Ethernet, and OpenThread components. Remove.c_str()calls when usingget_use_address(). esphome#11707
Other Components
Section titled “Other Components”-
Cover: Removed methods deprecated in 2021.9. Update to current cover API. esphome#11391
-
Nextion: Removed methods deprecated in 1.20 (July 2021). Update to current nextion API. esphome#11393
ESP32-Specific Changes
Section titled “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. esphome#10930, esphome#11441
Migration Resources
Section titled “Migration Resources”For detailed migration guides and examples, see the ESPHome developer documentation.
The 2025.11 release blog posts include comprehensive migration examples for common use cases.
Release 2025.11.1 - November 24
Section titled “Release 2025.11.1 - November 24”- [graph] Fix legend border esphome#12000 by @swoboda1337
- [network] Fix IPAddress constructor causing comparison failures and garbage output esphome#12005 by @bdraco
- [ltr501][ltr_als_ps] Rename enum to avoid collision with lwip defines esphome#12017 by @swoboda1337
- [cst816][packet_transport][udp][wake_on_lan] Fix error messages esphome#12019 by @swoboda1337
- [jsn_sr04t] Fix model AJ_SR04M esphome#11992 by @swoboda1337
- [cst816][http_request] Fix status_set_error() dangling pointer bugs esphome#12033 by @bdraco
- [esp32] Fix C2 builds esphome#12050 by @swoboda1337
- [core] Add support for passing yaml files to clean-all esphome#12039 by @swoboda1337
- [script][wait_until] Fix FIFO ordering and reentrancy bugs esphome#12049 by @bdraco
- [esp_ldo,mipi_dsi,mipi_rgb] Fix dangling pointer bugs in mark_failed() esphome#12077 by @bdraco
- [online_image] Fix some large PNGs causing watchdog timeout esphome#12025 by @jesserockz
Release 2025.11.2 - November 27
Section titled “Release 2025.11.2 - November 27”- [nextion] Do not set alternative baud rate when not specified or
<= 0esphome#12097 by @edwardtfn - [esp32] Fix platformio flash size print esphome#12099 by @swoboda1337
- [script] Fix script.wait hanging when triggered from on_boot esphome#12102 by @bdraco
- [lvgl] Allow multiple widgets per grid cell esphome#12091 by @clydebarrow (new-feature)
- [lvgl] Fix position of errors in widget config esphome#12111 by @clydebarrow
- [esp32] Fix hosted update when there is no wifi esphome#12123 by @swoboda1337
- [wifi] Restore blocking setup until connected for RP2040 esphome#12142 by @clydebarrow
- [scheduler] Fix use-after-move crash in heap operations esphome#12124 by @bdraco
Release 2025.11.3 - December 3
Section titled “Release 2025.11.3 - December 3”- [build] Don’t clear pio cache unless requested esphome#11966 by @clydebarrow
- [usb_uart] Wake main loop immediately when USB data arrives esphome#12148 by @bdraco
- [espnow] Initialize LwIP stack when running without WiFi component esphome#12169 by @bdraco
- [helpers] Add conversion from FixedVector to std::vector esphome#12179 by @clydebarrow
- [hlk_fm22x] Fix Action::play method signatures esphome#12192 by @bdraco
- [mopeka_pro_check] Fix negative temperatures esphome#12198 by @swoboda1337
- [ade7953] Apply voltage_gain setting to both channels esphome#12180 by @dlitz
- [core] Fix clean all on windows esphome#12217 by @swoboda1337
- [rtl87xx] Fix AsyncTCP compilation by upgrading FreeRTOS to 8.2.3 esphome#12230 by @swoboda1337
- [analog_threshold] Fix oscillation when using invert filter esphome#12251 by @swoboda1337
- [rtl87xx] Fix FreeRTOS version for RTL8720C boards esphome#12261 by @swoboda1337
Release 2025.11.4 - December 4
Section titled “Release 2025.11.4 - December 4”- [esp32] Add build flag to suppress noexecstack message esphome#12272 by @clydebarrow
- [ld2420] Add missing USE_SELECT ifdefs esphome#12275 by @swoboda1337
- [config] Provide path for
has_at_most_one_ofmessages esphome#12277 by @clydebarrow - [es8311] Remove MIN and MAX from mic_gain enum options esphome#12281 by @swoboda1337
- [esp32_hosted] Fix build and bump IDF component version to 2.7.0 esphome#12282 by @swoboda1337
- [CI] Trigger generic version notifier job on release esphome#12292 by @jesserockz
- [scheduler] Fix use-after-free when cancelling timeouts from non-main-loop threads esphome#12288 by @bdraco
Release 2025.11.5 - December 9
Section titled “Release 2025.11.5 - December 9”- [binary_sensor] Fix reporting of ‘unknown’ esphome#12296 by @clydebarrow
- [lvgl] Number saves value on interactive change esphome#12315 by @clydebarrow
- [scheduler] Fix missing lock when recycling items in defer queue processing esphome#12343 by @bdraco
- [wifi] Fix scan timeout loop when scan returns zero networks esphome#12354 by @bdraco
- [libretiny] Fix WiFi scan timeout loop when scan fails esphome#12356 by @bdraco
- [mqtt] Fix logger method case sensitivity error esphome#12379 by @swoboda1337
Full List of Changes
Section titled “Full List of Changes”For the complete list of every merged pull request in this release, see the full 2025.11.0 changelog.



Comments