Are old (CLKComplicationDataSource-based) complications still supported in new extensionless Watch targets?

Hello, I am migrating a watch app from older dual watch-app/watch-extension targets to a new extensionless target, but my complications seem to have lost the ability to update.

I have set the CLKComplicationPrincipalClass key in Info.plist to my ComplicationController class (class ComplicationController: NSObject, CLKComplicationDataSource), but while the previews inside the complication picker show up correctly, the complications themselves stopped working on the watchface. Namely, they don't redraw anymore, when I refresh them like this:

let complicationServer = CLKComplicationServer.sharedInstance()
if let activeComplications = complicationServer.activeComplications {
	for complication in activeComplications {
		complicationServer.reloadTimeline(for: complication)
	}
}

Is there something I am missing? Some way of registering the CLKComplicationDataSource instance in SwiftUI watch app definition?

Or is this not supported, and the only way forward is to rewrite all ClockKit complications to WidgetKit ones?

This is supported. We'd like to take a look at why this isn't working for you.

Can you please install the profile listed under "sysdiagnose" at https://developer.apple.com/bug-reporting/profiles-and-logs/?platform=watchos on your watch, reproduce the issue, then file feedback (making sure to include a sysdiagnose from the watch) via Feedback Assistant? Thanks!

Thank you, I installed the profile, and holding the side buttons caused the watch to lock up for a few seconds (UI stopped responding) and then it restarted - no idea if that is what should happen (latest GM WatchOS 9.1). However, even after an hour on charger, no logs appeared in iPhone analytics settings.

I found out though, that the only way of getting the complications to refresh again, was to:

  1. Delete all complications of my app from all the watchfaces (!!!)
  2. And only then setting them up again.

I verified this on two different watches with WatchOS 9.1 (by installing the previous app store version, and then a TestFlight update over that). Without a moment when none of my app's complications aren't active on any of the watchfaces, the new (extensionless) watchfaces won't refresh. Only replacing a single complication for another app's one, and then back, won't help, until I remove all of them at once.

You can imagine how thrilled I am to tell this to my users. This is not how a migration should work. Feel free to reproduce this and file a radar, I am not wasting any more of my time with this.

I will try tomorrow deleting the whole CLKComplicationDataSource, and trying WidgetKit only. I really hope there is a better migration story there.

Update: From a quick test it seems that ClockKit widgets can't be updated to WidgetKit widgets at all. Even if they share the same kind, the old widget just disappears when updating from a clockkit version to the widgetkit version of the app.

I am now making a 'Sorry, you will need to redo all your watchfaces because that's how Apple wants it' update screen.

I'm having lots of problems with my published app which I think are similar. Since merging my watch extension and watch app to one target it's wreaked havoc on my complications (I've not even started on WidgetKit yet and using that in my complications). My users are generally finding that complications templates all work find but they often get dashes "--" after updating my app. The only solution has been to change the complication in the slot to a different one, and then move it back again, al then works fine. I think it must be because of some bundle or id change in the complication but it's an absolute nightmare and I'd roll back if I didn't think I'd just get the same grief from all the users who it now works for.

I'm targeting WatchOS 8 or later and the main app function is reading HealthKit data and displaying it on complications.

On a separate but possible related note to this, since moving to one watch app target I've also gained duplicate HealthKit permissions in the iPhone Privacy Settings. I have a feedback in for this FB11704560 but it's been completely silent for over a month....

Are old (CLKComplicationDataSource-based) complications still supported in new extensionless Watch targets?
 
 
Q