A four-gang wall switch or a six-outlet power strip is one product, but in Home Assistant it has always been hard to show that. Integrations either piled every channel onto one device or created a separate device per channel and linked it back with via_device, a field meant to say "reached through this hub". On 22 October the developer blog published a full guide to child devices, the model that replaces that workaround, and a day later the Tuya integration started using it for switches and sockets.

What a child device is

A child device belongs to exactly one parent device and has no hardware identity of its own: no manufacturer, model, firmware version or serial number. Those stay on the physical product. The blog post lists the rules:

  • A child takes its parent's area unless you give it its own. A strip in the garage puts every outlet in the garage, but you can move the one feeding the garden lamp to the garden.
  • Deleting the parent deletes its children, and disabling the parent disables them.
  • Labels are not inherited.
  • There is only one level: a child cannot have children of its own.
  • Targeting the parent in an action also targets the entities of all its children. Targeting a child acts only on that child.

The registry support landed in Core 2026.9, so this is not new code. What is new is the migration advice: integrations that use via_device to describe parts of one product should move to child devices, while real hub relationships, such as a Zigbee bulb behind its coordinator, stay as they are. Existing per-channel devices are converted in place and keep their device IDs, so automations that point at them keep working. The post also suggests dropping the parent name baked into a part's name, turning "Power strip Outlet 3" into "Outlet 3".

Tuya goes first

Tuya already used child devices for multi-channel valve controllers (merged 27 September). Four pull requests merged on 23 October extend this to switches: the kg switch category (switch_1 to switch_22), cjkg scene switches, and pc power strips and cz sockets (switch_1 to switch_6 each). On a device with more than one channel, each channel gets its own "Channel N" child device.

Entity IDs and history do not change, but entity names do. "Switch 3" becomes "Channel 3 Switch" and "Socket 2" becomes "Channel 2 Socket". A single-channel device shows just "Switch" or "Socket". For strips and sockets, the pull requests note that newly added devices get entity IDs based on the new names. If a dashboard card or notification shows the friendly name, expect it to change after the update to 2026.11.