AppIntent returned through result(opensIntent:) is not performed starting with iOS 27 Beta 3

I’m seeing a regression in the App Intents framework starting with iOS 27 Beta 3.

An AppIntent returns another AppIntent using result(opensIntent:). On earlier iOS versions, the second intent’s perform() method is invoked as expected. Starting with iOS 27 Beta 3, the first intent completes, but the second intent’s perform() method is never called.

Minimal example:

import AppIntents
import OSLog

private let logger = Logger(
    subsystem: "com.example.AppIntentTest",
    category: "AppIntents"
)

struct AAAIntent: AppIntent {
    static let title: LocalizedStringResource = "Run AAA"
    static let description = IntentDescription(
        "Runs AAA and returns BBB as the intent to open."
    )

    func perform() async throws -> some IntentResult & OpensIntent {
        logger.notice("AAAIntent.perform() called")

        return .result(opensIntent: BBBIntent())
    }
}

struct BBBIntent: AppIntent {
    static let title: LocalizedStringResource = "Run BBB"

    func perform() async throws -> some IntentResult {
        logger.notice("BBBIntent.perform() called")

        // The actual action would be performed here.
        return .result()
    }
}

Observed behavior on iOS 27 Beta 3:

  1. AAAIntent.perform() is called.
  2. AAAIntent.perform() returns .result(opensIntent: BBBIntent()).
  3. BBBIntent.perform() is never called.
  4. No error is presented to the user.

Expected behavior:

After AAAIntent returns BBBIntent through result(opensIntent:), the system should invoke BBBIntent.perform(), as it did on previous iOS versions.

The same implementation works correctly on:

  • before iOS 27 beta3

The issue reproduces on:

  • Device: All iOS Device
  • iOS: 27 Beta 3

I have also tested the following without resolving the problem:

  • Reinstalling the app
  • Recreating the shortcut
  • Restarting the device
  • Confirming through unified logging that BBBIntent.perform() is not entered

This appears to be a system regression because the API remains available and the same application code works on earlier iOS versions.

For required business logic, I can work around the problem by moving the shared operation out of BBBIntent.perform() and invoking it directly from AAAIntent. However, that changes the intended OpensIntent flow and does not restore the documented behavior of result(opensIntent:).

I submitted this issue through Feedback Assistant two weeks ago:

Feedback ID: FB23616137

Current Feedback Assistant status: Open

Has anyone else encountered this behavior on iOS 27 Beta 3 or later? Is this a known App Intents regression, or has the expected behavior of result(opensIntent:) changed in iOS 27?

If this behavior has intentionally changed, what is the recommended replacement for chaining or handing off to a second AppIntent?

AppIntent returned through result(opensIntent:) is not performed starting with iOS 27 Beta 3
 
 
Q