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.