V2 Hue API relatively slow vs. V1

So I recently enabled the “V2 Hue API” in the Hue integration settings, reading that V2 was recommended for most people. Unfortunately, I found that performance with the V2 API was unacceptably slow (vs. V1) and I restored from a backup from before I enabled V2.

Where this was most notable is in my bathroom where I have 5 Hue bulbs (two ceiling and 3 mirror) controlled by a Zooz Z-Wave switch with the Room Lighting App. I generally had no issues before trying V2. But after switching to V2, pressing the switch would noticeably result in bulbs responding in an obvious sequence.

V1 API: bulbs turn on/off together, over roughly 0.5 seconds.

V2 API: bulbs sequentially start turning on/off, taking around 2 seconds to finish the room transition.

I captured debug logs to see if I could note anything significant causing the delays, but all I see is timestamps showing the delay between steps.

V1 API

app:246 2026-06-24 2:33:12.252 pm debug Event: Bathroom Mirror 3 switch off
app:246 2026-06-24 2:33:12.177 pm debug Event: Bathroom Mirror 2 switch off
app:246 2026-06-24 2:33:12.094 pm debug Event: Bathroom Mirror 1 switch off
app:246 2026-06-24 2:33:12.034 pm debug Event: Bathroom Ceiling 2 switch off
app:129 2026-06-24 2:33:11.980 pm debug  Setting Bridge status to Online...
app:246 2026-06-24 2:33:11.957 pm debug Event: Bathroom Ceiling 1 switch off
app:129 2026-06-24 2:33:11.939 pm debug  Setting Bridge status to Online...
app:129 2026-06-24 2:33:11.927 pm debug  Setting Bridge status to Online...
app:246 2026-06-24 2:33:11.857 pm info off: Bathroom Mirror 3
app:129 2026-06-24 2:33:11.851 pm debug getBridgeData()
app:129 2026-06-24 2:33:11.840 pm debug  Setting Bridge status to Online...
app:129 2026-06-24 2:33:11.800 pm debug  Setting Bridge status to Online...
app:246 2026-06-24 2:33:11.791 pm info off: Bathroom Mirror 2
app:129 2026-06-24 2:33:11.785 pm debug getBridgeData()
app:246 2026-06-24 2:33:11.779 pm info off: Bathroom Mirror 1
app:129 2026-06-24 2:33:11.773 pm debug getBridgeData()
app:246 2026-06-24 2:33:11.766 pm info off: Bathroom Ceiling 2
app:129 2026-06-24 2:33:11.759 pm debug getBridgeData()
app:246 2026-06-24 2:33:11.752 pm info off: Bathroom Ceiling 1
app:129 2026-06-24 2:33:11.745 pm debug getBridgeData()
app:246 2026-06-24 2:33:11.735 pm info Turn Off Event: 'Master Bathroom Dimmer' pushed 2

V2 API

app:246 2026-06-22 11:18:11.373 am debug Event: Bathroom Mirror 2 switch off
app:246 2026-06-22 11:18:11.305 am debug Event: Bathroom Mirror 1 switch off
app:246 2026-06-22 11:18:11.250 am debug Event: Bathroom Ceiling 2 switch off
app:246 2026-06-22 11:18:11.192 am debug Event: Bathroom Ceiling 1 switch off
app:129 2026-06-22 11:18:11.184 am debug bridgeAsyncPutV2Callback()
app:246 2026-06-22 11:18:11.092 am info  off: Bathroom Mirror 3
app:129 2026-06-22 11:18:11.088 am debug Command sent to Bridge: [on:[on:false]] at /resource/light/f4cb9d5e-f182-4023-b777-f83fc40b02d6
app:129 2026-06-22 11:18:10.973 am debug  Setting Bridge status to Online...
app:129 2026-06-22 11:18:10.885 am debug getBridgeData()
app:129 2026-06-22 11:18:10.884 am debug getBridgeData()
app:129 2026-06-22 11:18:10.755 am debug  Setting Bridge status to Online...
app:129 2026-06-22 11:18:10.715 am debug bridgeAsyncPutV2Callback()
app:246 2026-06-22 11:18:10.626 am info  off: Bathroom Mirror 2
app:129 2026-06-22 11:18:10.622 am debug Command sent to Bridge: [on:[on:false]] at /resource/light/3a141137-d21d-4e45-bd42-da0e0d1f8705
app:129 2026-06-22 11:18:10.497 am debug bridgeAsyncPutV2Callback()
app:129 2026-06-22 11:18:10.419 am debug getBridgeData()
app:129 2026-06-22 11:18:10.418 am debug getBridgeData()
app:246 2026-06-22 11:18:10.411 am info  off: Bathroom Mirror 1
app:129 2026-06-22 11:18:10.407 am debug Command sent to Bridge: [on:[on:false]] at /resource/light/912c6f65-d09f-4d5e-b644-2bf83e7379a2
app:129 2026-06-22 11:18:10.295 am debug  Setting Bridge status to Online...
app:129 2026-06-22 11:18:10.204 am debug getBridgeData()
app:129 2026-06-22 11:18:10.203 am debug getBridgeData()
app:129 2026-06-22 11:18:10.086 am debug  Setting Bridge status to Online...
app:129 2026-06-22 11:18:10.036 am debug bridgeAsyncPutV2Callback()
app:246 2026-06-22 11:18:09.945 am info  off: Bathroom Ceiling 2
app:129 2026-06-22 11:18:09.940 am debug Command sent to Bridge: [on:[on:false]] at /resource/light/34acd80e-6947-493f-bd6b-b77471a09566
app:129 2026-06-22 11:18:09.825 am debug bridgeAsyncPutV2Callback()
app:129 2026-06-22 11:18:09.737 am debug getBridgeData()
app:129 2026-06-22 11:18:09.736 am debug getBridgeData()
app:246 2026-06-22 11:18:09.729 am info  off: Bathroom Ceiling 1
app:129 2026-06-22 11:18:09.723 am debug Command sent to Bridge: [on:[on:false]] at /resource/light/1e30d3de-3349-4d6c-a792-e80ceda206e9
app:129 2026-06-22 11:18:09.520 am debug getBridgeData()
app:129 2026-06-22 11:18:09.518 am debug getBridgeData()
app:246 2026-06-22 11:18:09.508 am info  Turn Off Event: 'Master Bathroom Dimmer' pushed 2

Is this a known issue? I was surprised at just how much slower the V2 API is at controlling Hue lights, especially since it’s “recommended” for most users. Can this be improved? Thanks in advance.

EDIT: forgot to mention this is on a C-8 Pro.

The main other logs that might help you narrow this down is debug logs for the devices themselves, which will log the timestamp for commands like on() or setLevel() or whatever you're using to turn them on. But this is probably happening because the V2 API imposes a rate-limit, and you'll run into that error if you do too many commands too fast (and the integration didn't throttle things like it's doing), which is quite likely to happen with 5 devices if you're doing much with them.

A better solution is to either:

  • Use a group device (a "Room" or "Zone" in the Hue app) if you are setting all devices to the same setting; or
  • Use a scene (in the Hue app) if you are setting each/some device(s) to a different setting.

Either one can be integrated into Hubitat like a device and will cut down on traffic on both Hubitat and Hue and will also result in essentially simultaneous execution on the devices themselves since as a result of Hue's internal use of Zigbee group broadcasting. Even if you don't re-enable the V2 API (which you don't need to do until/unless Hue follows through with the threat of eliminating it), this is a good idea for V1 and would work there, too.

Thank you @bertabcd1234! This does indeed work much better with both API versions. I had previously really disliked those group devices because I saw them as “device clutter”, but now I understand their value a lot better.