I'm distributing a Safari Web Extension iOS app via TestFlight (built from a Chrome MV3 extension via xcrun safari-web-extension-converter on Xcode 26.0.1). The extension installs and registers correctly, but its popup never opens when the toolbar item is tapped. The behavior is silent — no error, no flash of UI, no console output. The Safari "ᴀA" menu just closes and the user is back at the article.
WHAT WORKS:
Extension appears in Settings → Safari → Extensions, can be enabled
Permissions can be granted ("Always Allow on Every Website")
Extension appears as expected in Safari's "ᴀA" address-bar menu
WHAT DOESN'T WORK:
Tapping the extension item in the AA menu produces no popup, no error, no visible response of any kind. Same on iPhone and iPad, both on iOS 26.
WHAT I'VE VERIFIED VIA IPA INSPECTION:
Extension .appex contains: manifest.json, popup.html, popup.js, background.js, content.js, and images/ with all icons
_CodeSignature/CodeResources files2 lists 11 entries — every web extension resource is signed
manifest declares: "action": { "default_popup": "popup.html", "default_icon": {...} }
Extension Info.plist has standard NSExtension dict:
NSExtensionPointIdentifier = com.apple.Safari.web-extension
NSExtensionPrincipalClass = (My)_Extension.SafariWebExtensionHandler
ISOLATION TEST:
To rule out my popup code, I replaced popup.html with a 506-byte file containing only a static green box and "Hello World" text — no scripts, no images, no external references. This minimal popup ALSO fails to open with the same silent behavior. So this is not a script error or content issue.
MANIFEST DETAILS (relevant excerpts):
{
"manifest_version": 3,
"action": { "default_popup": "popup.html", "default_icon": {...} },
"background": { "scripts": ["background.js"], "persistent": false },
"content_scripts": [{ "matches": ["<all_urls>"], "js": ["content.js"] }],
"permissions": ["activeTab", "storage", "scripting"],
"host_permissions": ["<all_urls>"]
}
I previously had "background": { "service_worker": "background.js", "type": "module" } and switched to scripts/non-persistent based on prior forum advice about iOS Safari incompatibility with module-type service workers. No change in behavior either way.
ENVIRONMENT:
iOS 26 (iPhone and iPad — both affected)
Built on macos-15 GitHub Actions runner with Xcode 26.0.1
Distribution via TestFlight
Manifest version 3
Extension target produced by xcrun safari-web-extension-converter
I cannot easily provide a focused Xcode test project as my entire build pipeline runs on GitHub Actions (no local Mac access at this time). I can share the IPA, build pipeline configuration, and source repository.
Has anyone else seen silent popup failures on iOS 26 from converter-built Safari Web Extensions? Is there an Info.plist key, build setting, or NSExtension attribute the converter is missing that's needed for popups to render on iOS 26?
Thanks for any insight.
0
0
11