The method I’ve used, which seems to work most of the time, is create a Text layer, set it to [HR], then add a new layer (empty image file) over it, and set a tap Action for this layer to measure heart rate.
You could avoid the empty image part by just adding tap action to the text layer, but with an image there’s more control over the exact tap area.
I’ve done this on few designs so far and it works well, most of the time. HR even “saves” and transfers to the next watch face, once it’s registered a number.
I say “most of the time” because it seems that, for the “Tap to measure” shortcut to work properly, user needs to stay still and/or not move the watch at all for 10-20 seconds after tapping it. Only then the heart rate measurement will register properly and update the HR indicator. If this fails (which sometimes it does, regardless) then the HR just stays 0 or doesn’t update.
I haven’t had issues when the screen went to AOD during the measurement, as the HR still refreshed after about 5-10 secs if the reading was successful.
Still, with this method of tap and wait, even if everything works perfectly, it’s not a great user experience.
It’s hard to explain to users they need to stay perfectly still while measuring, without a reliable visual indicator, especially when many other watches feature HR readings without such conditions (connected directly to a health app).