iOS

iOS

iOS 13 and up. Items are written to UIApplication.shared.shortcutItems on the main thread.

Delivery

Nothing to wire. When the binary loads, the library adds scene(_:willConnectTo:options:) and windowScene(_:performActionFor:completionHandler:) to whatever scene delegate class the app uses, and application(_:performActionFor:completionHandler:) to the app delegate, before UIKit inspects them. Methods you already implement are wrapped and still called. That covers SwiftUI-lifecycle apps (SwiftUI’s own delegates), UIKit apps with their own delegates, and apps without a scene manifest, where the launch item is read from the launch options.

The tap that launched the app arrives with createdScreen = true; a tap on a running app arrives with createdScreen = false. The launching item reaches more than one UIKit callback and is delivered once. A tap that arrives before your first manager exists is held and delivered when rememberQuickActionsManager() or QuickActions.manager runs.

QuickActions.isDeliveryInstalled reports whether the hooks are in place. It is false only when the library is not linked into the process, such as a unit-test host.

Icons and limits

icon is an SF Symbol name (UIApplicationShortcutIcon(systemImageName:)). The Home Screen shows four items in total, static UIApplicationShortcutItems from Info.plist first, so maxActions is four minus the static count and a fifth dynamic item fails with TooManyActions.

Static items

A static item carries no library payload, so its launch is synthesised: id = type, the localized title and subtitle, and the string entries of its userInfo as data.