An all-native app cannot register home-screen quick actions. There is no Shortcuts module on either side of the bridge, so the three surfaces an App Shortcut is supposed to have are two.
What is missing
CraftNativeActions.swift(0.0.293) has no"Shortcuts"case — nothing callsUIApplication.shared.shortcutItems.- stx's native bridge exposes no
craft.shortcuts, so a screen or app script has nothing to call. - Craft generates App Intents from
appShortcutsin the mobile config, and those work: Spotlight and Siri both surface them, andMetadata.appintentsships in the bundle. It is only the long-press menu on the icon that has no path.
The app script does receive craftShortcut and craftSiriShortcut events and routes them correctly, so the listening half is in place — #127 covered that. What has no implementation is the registering half.
How this shows up
Our shortcut list lives in one module and is fed to three surfaces, with a composable that registers the home-screen items:
const api = craftBridge()?.shortcuts
if (!api?.set)
return 'unsupported'
return await settled(api.set(craftShortcutItems())) === null ? 'failed' : 'registered'The guard is correct and the answer is honest — unsupported, every time, in an all-native build. craftShortcutItems() is dead code on that path, and the comment above it describing the home-screen menu as one of three surfaces is wrong in a way nothing can catch.
There is no UIApplicationShortcutItems in the generated Info.plist either, so the static route is not an alternative.
Why we care
The quick actions are a real entry point, and the one most likely to be reached by somebody who is not already in the app. We found a gate leak through the equivalent deep link — a signed-out viewer taking "Trails Near Me" landed on a trail list they should not have seen — and could not write a device test for the menu itself, because the menu does not exist. That check is now a hole in our iOS UI suite with a comment explaining why.
What would help
Either a Shortcuts module (set / clear, mapping to UIApplication.shared.shortcutItems) exposed as craft.shortcuts, or generating UIApplicationShortcutItems into Info.plist from the same appShortcuts config that already produces the App Intents. The second is less flexible — no badge counts, no runtime changes — but it would close the gap with no new bridge surface.
Versions
craft-native 0.0.293, stx 0.2.663, iOS 26.5 simulator and device.