I'm developing a keyboard extension that opens my containing app for voice dictation (similar to Wispr Flow and Whisper). The flow is:
- User is in a host app (Messages, WhatsApp, etc.)
- User taps mic button in my keyboard extension
- My app opens via deep link (
myapp://dictation) - After dictation completes, I need to return the user to the host app
Preview: https://www.youtube.com/shorts/Vc836AyeEw0
I cannot find any supported way to programmatically return to the previous app. I've researched:
_hostBundleID- Private API, blocked in iOS 18+suspend()on UIApplication - Goes to home screen, not previous app- x-callback-url - Requires host app cooperation
- LSApplicationWorkspace - Private API, requires knowing the bundle ID
Apps like Wispr Flow or Whisper achieve this automatically. When you tap their mic button:
- Wispr app opens briefly
- User is automatically returned to the host app
- This works even when Wispr Flow or Whisper was force-closed
Their FAQ says "Not all apps allow the app to reopen" suggesting it's selective, but it works for major apps like Messages, Maps, etc.
- Is there a supported API for keyboard extensions to return to the previous app?
- How do apps like Wispr Flow achieve this? Are they using private APIs that Apple permits?
- Should I file a Feedback request for this functionality?
I've seen thread 126107 and thread 52300 which confirm no public API exists, but those are from 2019-2020. Has anything changed?
Environment:
- iOS 18.4 / iOS 26
- Xcode 16
- Swift 5
Any guidance appreciated!