I've been struggling for a while with delayed buttons reaction when using my custom watchface. I narrowed it down to the performance of the onUpdate method. The delays I struggled with were up to 4 seconds while there were no problems with redrawing the screen 2 times per second.
I was trying to update screen only when any data actually changes. It worked great on simulator where I was not able to make corner case tests. On actual device there were artifacts when I switched the widget and when there were notifications. I couldn't find any reliable way to know the screen was drawn by other means than my watchface. I was forced to go back to the old model of redrawing the whole screen but IMO this doesn't make any sense from performance perspective.
What about adding an additional method to get the dirty rectangle to the dc. I think that a lot apps can benefit from this. Can this be done?