Adding an OptionsCollection to an existing AppShortcut hides all other parameterless App Shortcuts from the Shortcuts app UI

Hi all,

I’m seeing what looks like a bug with AppShortcutParameterPresentation and the Shortcuts app. Any time I provide an OptionsCollection to a shortcut so I can give it a nice category name and symbol in Shortcuts, it hides all other existing app shortcuts that my app has from the UI.

I have created a sample that illustrates the problem.

My app provides two App Shortcuts:

  1. A simple shortcut with no parameters.
  2. A shortcut with two parameters. Its Destination parameter uses AppShortcutParameterPresentation to generate “Home” and “Office” options in a separate section.

When the second shortcut is present, the first parameterless shortcut disappears from the Shortcuts app. If I comment out the shortcut containing parameterPresentation, the parameterless shortcut appears again.

Before commenting out:

After commenting out the second shortcut:

Here's the code:

import AppIntents

struct ParameterlessIntent: AppIntent {
    static let title: LocalizedStringResource = "Parameterless Intent"
    static let description = IntentDescription("Runs without asking for any parameters.")

    func perform() async throws -> some IntentResult {
        .result()
    }
}

struct ParameterizedIntent: AppIntent {
    static let title: LocalizedStringResource = "Parameterized Intent"
    static let description = IntentDescription("Runs with a destination and a copy count.")

    // The same provider is used by this parameter and by ParameterPresentation below.
    @Parameter(
        title: "Destination",
        optionsProvider: DestinationOptionsProvider()
    )
    var destination: String

    @Parameter(title: "Copy Count", default: 1)
    var copyCount: Int

    static var parameterSummary: some ParameterSummary {
        Summary("Send \(\.$copyCount) copies to \(\.$destination)")
    }

    func perform() async throws -> some IntentResult {
        .result()
    }
}

nonisolated struct DestinationOptionsProvider: DynamicOptionsProvider {
    func results() async throws -> [String] {
        // Each generated App Shortcut option is a value for the Destination parameter.
        ["Home", "Office"]
    }
}

struct BugReproductionShortcuts: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        // This parameterless shortcut should always appear in the Shortcuts app.
        AppShortcut(
            intent: ParameterlessIntent(),
            phrases: [
                "Run the parameterless shortcut with \(.applicationName)"
            ],
            shortTitle: "Do I exist?",
            systemImageName: "1.circle"
        )

        #warning("The presence of this shortcut causes the top one no longer appear in Shortcuts.app")
        AppShortcut(
            intent: ParameterizedIntent(),
            phrases: [
                "Run the parameterized shortcut with \(.applicationName)"
            ],
            shortTitle: "Parameterized Shortcut",
            systemImageName: "2.circle",
            parameterPresentation: ParameterPresentation(
                for: \.$destination,
                summary: Summary("Send to \(\.$destination)")
            ) {
                // This title and symbol create a separate section in Shortcuts.
                OptionsCollection(
                    DestinationOptionsProvider(),
                    title: "Destination Shortcuts",
                    systemImageName: "mappin.and.ellipse"
                )
            }
        )
    }
}

This code and reproduction is as of Xcode 27 Beta 6 and happens on older versions as well.

Is there a known limitation with this or is this somehow expected behavior? If so, how can I mitigate this issue and provide a nice title for another shortcut, while keeping the old parameterless shortcuts present?

Thanks!

Adding an OptionsCollection to an existing AppShortcut hides all other parameterless App Shortcuts from the Shortcuts app UI
 
 
Q