Questions about using App Extension communication with host apps on iOS 26 (Xcode 26)

Hello,

I have a few questions regarding the documentation here:

  1. Can this method described in the article be built with Xcode 26 and run on iOS 26? Or is it restricted to run only on iOS 26, since AppExtensionPoint appears to be available starting from iOS 26?

  2. Does this approach allow two apps under the same Team ID to communicate with each other?

  3. Does this approach also allow two apps under different Team IDs to communicate with each other?

  4. Is it mandatory to implement EXAppExtensionBrowserViewController and obtain user consent before using this method to exchange information?

In our implementation, we followed the documentation. Inside EXAppExtensionBrowserViewController, we were able to see the Generic Extension from another app and enabled the permission.

However, we still get the following error:

Failed to connect: Error Domain=NABUExtensionConnector Code=1 

"No matching extension found" 

UserInfo={NSLocalizedDescription=No matching extension found}

Could someone clarify whether this is expected behavior, or if we are missing an additional configuration step?

Thanks in advance!

Answered by DTS Engineer in 861061022
I’m still researching the exact details of those limitations

Hey hey, that went quicker than I expected.

As things currently stand on iOS 26, an app can only host extensions that it contains.

Needless to say, this significantly undermines the utility of the ExtensionKit. While it’s possible that you might find a creative use for it, there’s one specific situation where it’s super useful, namely, using an extension to host code that is either unreliable or deals with untrusted data. For more on that last point, see Creating enhanced security helper extensions.

There’s obviously a lot of demand from third-party developers to broaden the scope of ExtensionKit on iOS. If you have a specific use case in mind, feel free to file an enhancement request with the details. That’s particularly important if your use case is limited in some way. As I mentioned above, we already have an ER for the sort of general support we have on macOS (FB18784426).

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I’m gonna start with your first question, for reasons that I hope will be obvious. You wrote:

Can this method described in the article be built with Xcode 26 and run on iOS 26?

And then:

Or is it restricted to run only on iOS 26

Huh? I think one of those 26’s is meant to be a different number. That or I’ve completely misunderstood your point. Please clarify.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi Quinn, thanks for pointing that out.

To clarify, what I actually meant to ask is:

Is this feature limited to the combination of Xcode 26 + iOS 26 (since AppExtensionPoint is documented as available starting from iOS 26)?

Or can an app built with Xcode 26 also run this feature on earlier iOS versions?

Thanks again for your help!

Accepted Answer
Or can an app built with Xcode 26 also run this feature on earlier iOS versions?

No. This is a new facility in iOS 26.

With that out of the way, let’s talk terminology. In app extension parlance:

  • The container app is the one in which the appex is embedded.
  • The host app is the one using the appex.

In general, ExtensionKit lets you create a host app that invokes app extensions provided by other developers. Indeed, that’s how it works on macOS. On iOS, however, there are limitations. I’m still researching the exact details of those limitations, but it’s certainly true that iOS apps cannot host extensions created by other third-party developers (FB18784426).

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I’m still researching the exact details of those limitations

Hey hey, that went quicker than I expected.

As things currently stand on iOS 26, an app can only host extensions that it contains.

Needless to say, this significantly undermines the utility of the ExtensionKit. While it’s possible that you might find a creative use for it, there’s one specific situation where it’s super useful, namely, using an extension to host code that is either unreliable or deals with untrusted data. For more on that last point, see Creating enhanced security helper extensions.

There’s obviously a lot of demand from third-party developers to broaden the scope of ExtensionKit on iOS. If you have a specific use case in mind, feel free to file an enhancement request with the details. That’s particularly important if your use case is limited in some way. As I mentioned above, we already have an ER for the sort of general support we have on macOS (FB18784426).

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi Quinn, Thank you for your quick response. Your explanation has clarified the limitations of ExtensionKit on iOS 26.

I had previously tested it successfully within the same app, but when attempting it across apps, I encountered issues. Your response has resolved my confusion and helped me understand the current constraints of iOS 26.

We are indeed considering filing a Feedback request to ask for an expansion of ExtensionKit’s capabilities, particularly regarding cross-app support.

Thanks again for your help!

Questions about using App Extension communication with host apps on iOS 26 (Xcode 26)
 
 
Q