Z-Wave JS UI 11.25.0 came out on 21 October 2026. Most of the changes concern its MQTT gateway with Home Assistant discovery, the setup where Z-Wave JS UI publishes entities to a broker instead of talking to the Z-Wave JS integration over WebSocket. If you use the WebSocket route, the release still brings a Node 24 Docker image and a handful of interface fixes.
Removing devices over MQTT now actually removes them
To clear a retained topic, a client has to publish a zero-length payload. Z-Wave JS UI JSON-encoded everything it sent, so its "empty" message was really the two characters "". Home Assistant did not read that as a removal, and with retained discovery switched on the broker kept "" as the retained config. The same happened to node value topics that were meant to be deleted: each one kept a "" instead of disappearing.
Version 11.25.0 sends a real empty payload both when it removes a device from discovery and when it clears a node's retained values. The fix covers removals from now on. The release notes say nothing about cleaning up "" configs left on the broker by earlier removals, so those may need deleting by hand.
Configuration parameters as entities
Configuration CC values, the device parameters, have always been discovered with enabled_by_default: false. Until now the only way to change that was a per-value flag, one parameter at a time. A new switch in Settings > Home Assistant, "Enable Configuration CC entities" (gateway.ccConfigEnabledByDefault), turns them on for all devices. It is off by default, and a per-value setting still overrides it in either direction.
There is a catch the developers spell out: Home Assistant reads enabled_by_default only when it first registers an entity. For entities it already knows, you have to remove them in Home Assistant and rediscover the node.
Discovery fixes
- Electric meters reporting kVAh or a pulse count were published with
device_class: power, which Home Assistant rejects for those units. They are now plaintotal_increasingcounters without a device class. - Warm/cold white lights get a valid
color_temp_value_template. - The fourth circuit of the PE653 controller (
circuit_4) uses its correct state topic.
Everything else
The Docker image moves from Node 22.20.0 to Node 24. Node.js dropped 32-bit ARM binaries in version 24, so the arm/v6 and arm/v7 images now take Node from Alpine's packages, while amd64 and arm64 keep the official Node image.
On broadcast and multicast nodes, the virtual nodes used to command several devices at once, a Binary Switch could only be sent ON. It now shows an On/Off toggle. External driver presets no longer wipe other driver options, a bug that was also reported against Home Assistant core. In the interface, column filters only offer values that exist in the filtered rows, value hints show the minimum, maximum and step, the network graph keeps its filters when you click the background, and a note explains that SmartStart names and locations are shared with integrations.