ExtensionFoundation/ExtensionKit across app boundary

Hi there,

I'm trying to work on an architecture where one app exposes an API (Extension Host) that other apps can plugin to. I've been reading all I can from the docs and whatever I can find online. It seemed like iOS26 added the ability to do such a thing (at least in early builds).

Is that the case?

Has the functionality been walked back such that extensions can only be loaded in iOS from within the single app bundle?

My use case is the following:

I'm working on an agent app that desires to have 3rd party developers add functionality (think how MCP servers add functionality to LLMs). The 3rd party plugins would be provided in their own app bundles vetted by the AppStore review team, of course, and would only provide hooks, basically, the main app can use to execute functions or get state.

This is the best thread I found on the topic, and the subtext is that it needs to be in the same bundle. https://developer.apple.com/forums/thread/803896?answerId=865314022#865314022

Let's say for the moment that this isn't possible using ExtensionKit. What's the best way to achieve this? Our current best alternative idea is a hidded WebKit window that runs JS/WASM but that's so hackish.

Please let me know, thanks!

Answered by DTS Engineer in 868783022
Has the functionality been walked back such that extensions can only be loaded in iOS from within the single app bundle?

I wouldn’t say “walked back” because full ExtensionKit support was never a feature of iOS. Well, I guess you could considered it to be walked back relative to macOS…

Anyway, see my replies on this thread for the current state of affairs.

What's the best way to achieve this?

There’s no way to achieve that goal for native code.

If you’re willing to entertain the idea of non-native code then you have various options, the most obvious being:

  • Support JavaScript via JavaScriptCore.
  • Support Wasm with your own runtime [1].

Keep in mind, however, that this is only the technical side of this coin. On the business side, I want to be clear that I don’t work for App Review and thus can’t give definitive answers about this policy. I recommend that you review their published App Review Guidelines.

Share and Enjoy

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

[1] Wasm runtimes are sufficient lightweight that I don’t think it makes sense to try to involve a web view.

Accepted Answer
Has the functionality been walked back such that extensions can only be loaded in iOS from within the single app bundle?

I wouldn’t say “walked back” because full ExtensionKit support was never a feature of iOS. Well, I guess you could considered it to be walked back relative to macOS…

Anyway, see my replies on this thread for the current state of affairs.

What's the best way to achieve this?

There’s no way to achieve that goal for native code.

If you’re willing to entertain the idea of non-native code then you have various options, the most obvious being:

  • Support JavaScript via JavaScriptCore.
  • Support Wasm with your own runtime [1].

Keep in mind, however, that this is only the technical side of this coin. On the business side, I want to be clear that I don’t work for App Review and thus can’t give definitive answers about this policy. I recommend that you review their published App Review Guidelines.

Share and Enjoy

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

[1] Wasm runtimes are sufficient lightweight that I don’t think it makes sense to try to involve a web view.

It looks like a reference link didn't get copied over for:

Support Wasm with your own runtime [1].

What did that link go to?

Thanks for the complete and helpful answer!

What did that link go to?

It’s not a link but a footnote. Look at the bottom of my previous post.

However, if you want links, I’ve got links (-:

The obvious way to run Wasm code on Apple platforms is with the open source WasmKit runtime. But that’s not your only choice. There are lots of different Wasm runtimes out there.

Oh, and I’d be remiss if I didn’t mention that there’s a standard way to compile Swift code to Wasm. See Getting Started with Swift SDKs for WebAssembly.

Share and Enjoy

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

ExtensionFoundation/ExtensionKit across app boundary
 
 
Q