Home Assistant 2026.7 went stable on July 1, 2026, and it touches three separate parts of the platform at once: how you build automations, how Matter devices talk to Home Assistant, and how the Activity page shows you what happened in your home. The plain-language trigger builder graduates out of Labs and becomes the default automation editor. The Matter server has been rewritten from Python to a TypeScript engine called matter.js. The old logbook is now a real timeline. None of this forces a rebuild of your existing setup, but a short, specific list of trigger and condition names changed, and that list is worth checking before you update.
What’s Actually New in Home Assistant 2026.7?
Three changes carry this release. Purpose-specific triggers and conditions, an opt-in Labs feature since Home Assistant 2025.12, are now the default automation experience for everyone. Instead of picking an entity, a state, and a trigger type, you describe the moment you care about: motion in the living room, a door open for ten minutes, a battery running low. The Matter server that handles every Matter device in your home has been rebuilt on matter.js, a TypeScript implementation of the Matter standard, replacing the previous Python server built on the official C++ SDK. And the Activity page, still labeled the logbook in older versions, has been redesigned from a flat list of sentences into a timeline grouped by day.
Smaller but genuinely useful additions round out the release: a new Update all button that groups pending updates into cards you can approve at once instead of one at a time, an overhauled full-page device view for ZHA Zigbee management, and an update entity for Raspberry Pi bootloader firmware, so you no longer need a second SD card just to patch it.
The ZHA Zigbee overhaul is worth a mention on its own if you manage more than a handful of Zigbee devices. Clusters, bindings, the device signature, and the neighbor table used to live in a cramped popup dialog. They now sit on a dedicated full-page view with tabbed navigation and a device summary card at the top, so tracking down a flaky repeater or checking a device’s route back to the coordinator takes fewer clicks than it used to. The Raspberry Pi firmware update entity is smaller in scope but solves a real annoyance: keeping the bootloader (EEPROM) current on a Pi 4 or Pi 5 used to mean flashing a separate SD card or connecting a keyboard and running a command by hand. It now shows up as a normal update entity on the same Settings > Updates page as everything else, provided you are running Home Assistant Operating System 18 or newer.
Will This Break Your Existing Automations?
Not from the trigger change itself. Home Assistant’s own release notes are direct about this: existing automations built on generic triggers, raw entity states, templates, and YAML keep working without changes. The new purpose-specific triggers are a better starting point for the next automation you build, not a required migration.
What can break something is narrower and worth five minutes of checking. As part of this graduation, ten specific trigger and condition names were renamed so their keys stay consistent across every domain. If an automation or script references one of the old names, it stops working until you update it.
| Old key | New key |
|---|---|
| battery.low (trigger) | battery.became_low |
| battery.not_low (trigger) | battery.no_longer_low |
| lawn_mower.docked (trigger) | lawn_mower.returned_to_dock |
| schedule.turned_off (trigger) | schedule.block_ended |
| schedule.turned_on (trigger) | schedule.block_started |
| timer.time_remaining (trigger) | timer.remaining_time_reached |
| update.update_became_available (trigger) | update.became_available |
| vacuum.docked (trigger) | vacuum.returned_to_dock |
| climate.target_humidity (condition) | climate.is_target_humidity |
| climate.target_temperature (condition) | climate.is_target_temperature |
To fix an affected automation, open it in the editor, re-select the trigger or condition (it now shows up under its new name), and save. If you write automations in YAML, swap the old key for the new one directly.
A handful of other backward-incompatible changes are narrower still and only matter if you use the affected integration: the battery_level attribute was removed from iCloud, StarLine, and Tractive device trackers in favor of a dedicated battery sensor, Reolink Duo dual-lens cameras now expose each lens as its own sub-device, Rabbit Air preset values changed from title case to lowercase, and zone person-counting now uses the in_zones attribute instead of a single zone match. If you self-host Z-Wave JS, this release also requires zwave-js-server 3.9.0 or newer (schema 49), so update that before you update Home Assistant Core.
What Does the Matter Backend Overhaul Change for You?
The bigger structural change is under the hood. Home Assistant’s Matter server, the piece that handles every Matter device connection, now runs on matter.js instead of the previous Python server built on the official C++ Matter SDK. It ships as Matter Server app 9.0, and the switch is a drop-in replacement: your existing device data migrates automatically on the first start, and you do not need to recommission anything.
What you get from the switch shows up over time rather than all at once. Devices reconnect faster after a server restart, over-the-air firmware updates are more reliable, and commissioning is tighter: uncertified devices carrying only a test or development certificate can no longer join your network without your explicit confirmation, and the server now checks certificate revocation data during commissioning. The upgrade to Matter 1.5.1 compliance, with 1.6 already in development, brings support for newer device categories, including cameras, doorbells, closures, and the Matter soil moisture sensor type.
The most visible addition is a network visualization tool inside the Matter Server’s web interface. It maps your commissioned devices as nodes, color-codes connection quality between them, and marks each device’s role, whether it is a Thread border router, a router, or a sleepy end device. For a Thread mesh with several hops between a device and its border router, that is the difference between guessing and seeing. New diagnostic entities, including reboot count, uptime, boot reason, and fault sensors for hardware, radio, and network, are also available per device, though they are disabled by default so they do not clutter a dashboard for devices that already work fine. If you are still deciding which smart home hub ecosystem to build on, Home Assistant vs SmartThings vs Hubitat covers how Matter support factors into that choice.
What Does the New Activity Timeline Look Like?
The feature many longtime users still call the logbook answers one question: what happened, and when? The previous version answered it as a flat list of full sentences, repeating the device name on every line and using its own wording that did not quite match the rest of Home Assistant. Reading back a busy day meant reading every row.
2026.7 rebuilds it as a vertical timeline. Entries sit on a rail with the time on the left and a colored dot matching the entity’s state, grouped under Today, Yesterday, and dated headers, so you never lose your place. The timeline also trims redundant context: on an entity page you see just the value, on a device page the device name drops out, and on an area page the area is left off, since the page you are already on tells you that. The more useful addition is causal attribution: a person’s avatar shows up next to a manual action, an automation shows the trigger that fired it, and an integration shows its own icon, so a door that opened at 3 a.m. tells you immediately whether a person, an automation, or an integration caused it.
What Should You Check Before and After Updating?
- Back up your configuration first, from Settings > System > Backups, so you have a clean rollback point if anything looks off after the update.
- Search your automations and scripts for the ten renamed trigger and condition keys above. This is the one change in 2026.7 that can silently stop an automation from firing.
- If you self-host Z-Wave JS, update zwave-js-server to at least version 3.9.0 (schema 49) first, or update the Z-Wave JS app or Z-Wave JS UI container to the versions listed in the release notes, before you touch Home Assistant Core.
- Update Home Assistant Core, the Operating System, and the Supervisor yourself from the top of the redesigned Updates page. These are kept separate from the new Update all button on purpose, so you apply them deliberately.
- Use Update all on the grouped integration and app cards once Core is current, instead of approving updates one at a time.
- After the update, open Settings > Devices & Services > Matter and confirm your devices reconnected. The migration to matter.js runs automatically on first start, and recommissioning should not be necessary.
- Visit the Activity page to see the new timeline, and enable Matter diagnostic entities per device if you want the added visibility into reboot counts and connection faults.
- If you use iCloud, StarLine, Tractive, Reolink dual-lens cameras, Rabbit Air, Tesla Fleet, Teslemetry, or automations that count people by zone, check the full backward-incompatible changes list in the release notes linked above. Those changes are narrower than the trigger renames but can still affect specific automations.
2026.7 is a genuine platform update rather than a routine patch, but the actual risk to your setup is narrow: the ten renamed trigger and condition keys, and the Z-Wave JS server version if you self-host it. Everything else, including the Matter migration, is designed to happen without you doing anything extra. If you are still setting up your first automations rather than auditing existing ones, 20 Home Assistant Automations Worth Setting Up First is the better place to start.