Homebridge 2.5.0, published on 1 November, is dominated by its Matter side. The release notes carry 44 changes, and most of the Matter ones are small corrections to how an accessory registers, reports and survives a restart, with plugins supplying the accessories and bridges presenting them. Two dependency bumps set the frame: @matter/main to v0.18.0, and @homebridge/hap-nodejs to v2.3.0.

This is a selection from that list.

New device types

The largest feature item is “add solar, battery, ev charger, meter and tariff device types (#4034)”, which is five new types in one change. Water heaters get their own, “with mode and boost handlers”. The RVC direct mode change capability is exposed as well (#4001).

Read those as the bridge learning new vocabulary rather than as promises about any particular device. Whether a given accessory shows up with the right controls still depends on the plugin presenting it, which is what the rest of the release is about.

Reporting that used to be coarse

An air quality sensor can now report “every level”, rather than the good and poor the note contrasts it with, which matters if your readings have looked coarser than the room.

Two comfort devices get their automatic modes wired up: fan auto mode is turned on when a fan declares a sequence that offers it, and a room air conditioner gets auto mode when it starts in auto or declares a deadband. A thermostat’s temperature now shows when it registers after the bridge is already online, which is the late-arrival case that used to leave a blank reading.

Lights get two smaller repairs. The UI’s light commands no longer fail when they are sent together or without options (#4029), and a missing ColorControl handler falls back to matter.js instead of failing (#4028).

Identity, cache and the restore path

The cluster of fixes that matters most to anyone who has restored a backup or rebooted a bridge more than once: a restored accessory keeps its uniqueId when it is re-registered (#4020), and it keeps its owner, so “the cache stops losing it on alternate restarts”. A restored accessory now also comes back with the cluster features the plugin composed, rather than whatever the cache thought they were.

The cache itself is harder to break. It is preserved on read errors (#4023), malformed entries are skipped (#4024), and a failed save is reported without blocking shutdown (#4025). Newly registered accessories appear in the UI without a restart (#4013), and state monitoring is re-armed when a child bridge starts, so the UI keeps showing changes (#3993).

One documentation change is worth knowing before you go looking for a missing accessory: the release notes now say a restored accessory “needs registering again, and keeps its cached state” (#4015). That is a note about what to expect, not a bug fix.

The unglamorous repairs

config.json now loads when it starts with a UTF-8 BOM (#4039), which is the sort of thing that produces an unhelpful parse error. Child bridge port requests are coalesced (#4008), external accessory ports stay off the ports bridges are configured to use (#4035), and child bridge shutdown is guarded before bridgeService is assigned (#3999).

There are four perf: items: fewer plugin discovery filesystem calls (#4000), indexed accessory operations (#4003), no shell in the npm prefix lookup (#4004), and cached Homebridge package metadata (#4007). The notes describe them as performance work and give no measurements, so there are none here either.

On the API side, bridge HAP enablement is exposed to plugins (#4037), and isMatterExternalsOnly joins isHapExternalsOnly.

What is not here

No pairing steps, no migration walkthrough, and no compatibility list: the release record is all that was collected, so none of that is written here. The dependency bumps are the reason to expect this release to change Matter behaviour even for accessories you did not touch, and the cache and identity fixes are the reason to take it if restored accessories have ever looked wrong after a restart.