ESPHome 2026.4.1 released on 20-04-2026

ESPHome 2026.4.1 is out now. It delivers a set of stability and timing fixes in the core — repairing clobbered app_state_ status bits for non-looping components, inlining and unconditionally feeding the watchdog to avoid empty-config panics, coercing 0ms intervals to 1ms, and adding a runtime_stats feature to report main-loop active time and overhead.
Visit the ESPHome GitHub release page for the full changelog, individual pull requests and upgrade instructions.
What’s in this release
- Core runtime, watchdog and timing fixes: app_state_ status bit repairs, inline watchdog hot path and unconditional WDT feed, set_interval(0) / update_interval: 0ms coerced to 1ms, default PollingComponent() to 1ms when codegen is bypassed, and a new runtime_stats feature to track main-loop time.
- Display, LVGL and image pipeline fixes: corrected st7789v preset offsets, guards for ili9xxx null buffers, MIPI‑SPI drawing fixes, runtime_image RGB order and image byte-order handling corrections, plus multiple LVGL stability fixes.
- Codegen, includes, substitutions and packaging robustness: diagnostics for missing cg.templatable on TEMPLATABLE_VALUE fields, forced resolution of nested IncludeFile during bundle discovery, a fix for substitutions: !include regressions, and improved package error messages with include-stack paths.
Upgrade notes
- No breaking changes are reported, but set_interval(0) / update_interval: 0ms is now coerced to 1ms — review any configs that relied on 0ms behaviour and adjust timings if necessary.
- If you encounter issues after upgrading, revert to the previous release tag from the ESPHome GitHub and follow the project’s upgrade guidance for a clean rollback.
Share comments on your experience upgrading — any regressions or improvements you see will help others and the maintainers.

