Configurable Watch Widgets "Unable to Load" watchOS 26 Issue

I updated my IntentWidgetProvider recommendations() to return an empty array instead of all my previous static IntentRecommendation to allow my widgets to finally be configurable.

When I go to the watch widget chooser I see samples of my widgets OK:

But when I touch the sample would should bring up my configurations, I get "Unable to Load":

Anybody see this or have any ideas? Thanks.

I am assuming there is a bug in handling .intentdefinition files on watchOS vs iOS/iPadOS. I am going to migrate all my widget configuration to code-based WidgetConfigurationIntent.

May not be super helpful but for a reference point, I am not seeing this on WatchOS 26 beta 3.

Although there's been the some glitches loading the intent configuration UI and it's also unreliable in the Apple Watch app Face Gallery, I just wanted to say this might be something in your setup. Maybe creating a new intent with a single BOOL parameter might be a good test, although that will also need a new IntentTimelineProvider.

Are you planning on moving from StaticConfiguration to AppIntentConfiguration for your Apple Watch widget/complications?

Hey Simon. I did try pairing my .intentdefintion file down to the bone and removing just a ton of other code to maybe create an Apple bug report. No help. I will add that my watch and iOS widget code is identical save some conditionalization on widgets to include. I never had any issues with old style recommendations I created and even a sample is still shown. Just the screen to configure gives the "unable to load."

Yes, I started migrating to WidgetConfigurationIntent and AppEnum. I was looking for samples to verify configurability on Apple Watch and found a good Medium artcie, but the source code was not directly downloadable.

So I created at:

https://github.com/t9mike/SimpleStatsWidgetConfigExample

But I changed the Water Reminder example to use AppEnum to simplify how the frequency parameter is defined.

This does work on Apple Watch no problem.

Ok interesting. My intent code is unique for WatchOS and iOS because I have different parameters for the widget depending on platform. This also means having unique timeline code, one timeline provider per intent.

My intent which is only targeted to my Watch app widget extension looks like this:

struct WatchTrendWidgetIntent: WidgetConfigurationIntent {
    static var title: LocalizedStringResource = "Trend Widget Configuration"
    static var description = IntentDescription("Configure trend Health type Watch Widgets.")
    static var isDiscoverable: Bool { return false}
    init() {}
    func perform() async throws -> some IntentResult {
        return .result()
    }
    @Parameter(title: "Chart Health Type", default: TrendHealthTypeOption.restHR)
    var healthType: TrendHealthTypeOption?
    
    @Parameter(title: "Show Day's Date", default: false)
    var showDaysDate: Bool

}

I still need to test this on WatchOS 26 beta 4 but on beta 3 it worked.... In the timeline I do this:

func recommendations() -> [AppIntentRecommendation<WatchTrendWidgetIntent>] { // Only used in WatchOS
        if #available(watchOS 26, *) { return []}
else ........
}

So hopefully this helps.

One of the reasons I asked about if you have existing widgets was because of this problem here: https://developer.apple.com/forums/thread/788784

Was just wondering if this issue applied to you if you had existing Watch complication/widget users?

Configurable Watch Widgets "Unable to Load" watchOS 26 Issue
 
 
Q