Skip to content

2026

ESP32: Unused Built-in IDF Components Excluded by Default

ESP32 builds now exclude unused built-in IDF components by default to reduce compile time. This applies to both ESP-IDF and Arduino framework builds, since both use the ESP-IDF build system underneath. External components that use excluded IDF APIs (e.g., esp_vfs_fat.h, esp_http_client.h, esp_eth.h) must explicitly re-enable them via include_builtin_idf_component().

This is a breaking change for external components in ESPHome 2026.2.0 and later.

ESP32 Arduino Selective Compilation: Libraries Disabled by Default

ESP32 Arduino builds now disable all Arduino libraries by default. ESPHome uses ESP-IDF APIs directly for WiFi, networking, and BLE, so most Arduino libraries were compiled and linked but never called. External components that use Arduino libraries must explicitly enable them via cg.add_library().

This is a breaking change for external components in ESPHome 2026.2.0 and later.

Listener StaticVector Migration: WiFi and Logger

WiFi and Logger components now use StaticVector for listener storage, eliminating heap allocation and STL overhead. External components that register listeners must now call request functions during code generation.

This is a breaking change for external components in ESPHome 2026.1.0 and later.

Scheduler String-Based API Deprecation

The scheduler's std::string-based APIs (set_timeout, set_interval, set_retry, defer, and their cancel counterparts) are now deprecated. Use const char* string literals or uint32_t numeric IDs instead.

This deprecation affects ESPHome 2026.1.0 and later, with removal planned for 2026.7.0.

Build Info and compilation_time API Changes

The App.get_compilation_time() method is deprecated in favor of new constexpr methods. The compilation_time field in the native API now updates on every compile.

This is a breaking change for external components in ESPHome 2026.1.0 and later.

GPIOPin::dump_summary() Now Uses Buffer-Based API

The GPIOPin::dump_summary() virtual method now writes to a caller-provided buffer instead of returning std::string. This eliminates heap allocations during configuration dumps.

This is a breaking change for external components that implement custom GPIO pins in ESPHome 2026.1.0 and later.