Is UISceneAppIntent supported in Designed for iPad apps on macOS?

I'm seeing what appears to be different UISceneAppIntent behavior between iOS and Designed for iPad on macOS, and I'd like to confirm whether this is expected.

I'm working on an iOS app that defines an AppIntent conforming to UISceneAppIntent from the AppIntents framework. The intent is handled by a scene delegate conforming to both UIWindowSceneDelegate and AppIntentSceneDelegate.

On iOS, everything works as expected:

  • If the app is launched for the first time from Shortcuts, the intent is available via connectionOptions.appIntent in scene(_:willConnectTo:options:).
  • If the app is already running, scene(_:willPerformAppIntent:) is called.

However, when running the same iOS app on macOS in Designed for iPad mode, the behavior is different:

  • If the app is launched from Shortcuts, connectionOptions.appIntent is always nil in scene(_:willConnectTo:options:).
  • If the app is already running, scene(_:willPerformAppIntent:) is never called, even though the application is successfully activated.

Is this expected behavior?

I noticed that the AppIntents framework explicitly marks both AppIntentSceneDelegate and UISceneAppIntent as unavailable on macOS:

@available(iOS 26.0, tvOS 26.0, *)
@available(macOS, unavailable)
@available(watchOS, unavailable)
public protocol AppIntentSceneDelegate : UISceneDelegate

Since the app is running on macOS in Designed for iPad mode and still uses the iOS binary, I wasn't sure whether these scene-based APIs are expected to work in this environment or whether they are intentionally unsupported.

Has anyone from Apple or the community been able to confirm whether this behavior is by design, or whether it should be considered a bug? I'd appreciate any clarification.

Thanks for this extremely interesting post.

The UISceneAppIntent protocol, a component of the App Intents framework, facilitates navigation and interaction within a scene-based life cycle. While the documentation for UISceneAppIntent and related APIs, such as performNavigation(forScene:), indicates their availability for managing scene-based interactions, there is no explicit mention of support for the “Designed for iPad” on macOS that I can see.

https://developer.apple.com/documentation/appintents/uisceneappintent

https://developer.apple.com/documentation/uikit/choosing-a-user-interface-idiom-for-your-mac-app

I’m not very familiar with that protocol but based on the documentation and details you provided and the underlying architecture of "Designed for iPad" apps, this should expected behavior rather than a bug.

When you run an iOS app on macOS via "Designed for iPad," the app itself is running the unmodified iOS binary and using the iOS SDK.

Because AppIntentSceneDelegate and UISceneAppIntent are explicitly marked as @available(macOS, unavailable) Instead of conforming to UISceneAppIntent, use a standard AppIntent. In your perform() method?

Looking forward to other engineers commenting on your great post. Thanks again.

Albert  WWDR

Is UISceneAppIntent supported in Designed for iPad apps on macOS?
 
 
Q