There is a solution. It comes from ClockKit framework. It’s not mentioned in new APIs, but it works.
In your watchOS target create file ComplicationController.swift with the following content:
import ClockKit
class ComplicationController: NSObject, CLKComplicationDataSource {
func complicationDescriptors() async -> [CLKComplicationDescriptor] {
[CLKComplicationDescriptor(
identifier: "yourBundleID”,
displayName: "Your app name",
supportedFamilies: CLKComplicationFamily.allCases)]
}
func currentTimelineEntry(for complication: CLKComplication) async -> CLKComplicationTimelineEntry? { nil }
}
Then add this field in the Info.plist of watchOS target:
key: ClockKit Complication - Principal Class, value: $(PRODUCT_MODULE_NAME).ComplicationController (String type)
I hope there will be a better solution later on.