Can you cache characteristic handles?

I found that service discovery is the slowest part when I send a command to Nuki. I’d like to know if it’s safe to cache the (16 bit) handle value of the pairing service GDIO characteristic as well as the keyturner service USDIO characteristic. Or are can the handles change with different options (e.g. HomeKit enabled) or are they subject to change in future updates?

You can cache them. Ideally you have a failover mechanism in place that tries to scan & discover them again if something goes wrong.