I'm looking to migrate my users ClockKit complications to WidgetKit in my next app update. I can only do this for WatchOS 10 users because the APIs are too limited for WatchOS 9 (eg. Widget corner round text not available). But I do need to do this for WatchOS 10 users in order to get in the Smart Stack.
When I tried to mark my getWidgetConfiguration method in my ComplicationController.swift with:
@available(watchOS 10.0, *)
it complains and says: Protocol 'CLKComplicationWidgetMigrator' requires 'getWidgetConfiguration(from:completionHandler:)' to be available in watchOS 9.0 and newer
I then tried modifying my WidgetKit extension to only support WatchOS 10. This seems to work for a while but at some point WatchOS 9 devices still try the migration and crash with symbolNotFound DYLD issues for the WidgetKit extension which shouldn't even be embedded in the WatchOS 9 builds! (all visible in iPhone Analytics data crashes)
So I'm not sure what else to try. I've researched a lot in docs etc... but can find no official way to achieve this.
The circumstances around what you're seeing with these crash reports uncovered multiple issues present in builds of watchOS 9, and also early versions of watchOS 10, and the source of the issue was likely triggered when watchOS updated between watchOS versions with your app already installed.
The complete set of issues is resolved with the watchOS 10.2 beta that is now available. Upgrading to watchOS 10.2 is the best path so you no longer encounter these issues.
If you remain on watchOS 9 as part of testing your app, you can remove and reinstall your app as a workaround. For any of your customers using your app on watchOS 9, you can provide an update to your app, as the process of installing the update will also correct the issue.