Extensions

RSS for tag

Give users access to your app's functionality and content throughout iOS and macOS using extensions.

Posts under Extensions tag

200 Posts

Post

Replies

Boosts

Views

Activity

NSFileProviderReplicatedExtension triggering wrong fileproviderd behaviour?
TL;DR: looking for FileProvider Extension debugging suggestions... I am attempting to develop NSFileProviderReplicatedExtension. Against a real backing repository (~4TB), I've seen fileproviderd become heavily loaded, non-responsive (i.e. fileproviderctl dump has failed to complete within 60s on 8 tries) and (maybe?) re-enumerate the contents of the repository. The profiler says that it's spending most of its time doing sqlite work against the table for the domain from my extension. I hypothesize that my extension has telling fileproviderd occasionally inconsistent things and it is now making sure that the world is the way that it should be. So: is there a way to get it to log when it has received invalid info? (I did read its (terse 😊) man page. I'm running out of ideas of what more to check with responses from the extension.
1
0
120
7h
Apple Developer Program team invitation keeps redirecting to the sign-in page
We are experiencing an issue when inviting a user to join our Apple Developer Program team through App Store Connect Users and Access. The purpose of adding this user is to include them as an internal TestFlight tester after the invitation is accepted. The invited user received the Apple Developer invitation email and clicked the "Accept invitation" link. The invitation link opens the following page: https://appstoreconnect.apple.com/activation_ds?key=... The page displays "Sign in to accept your invitation" and asks the user to sign in with an Apple Account. After the user signs in successfully, the page redirects back to the same sign-in page and asks the user to sign in again. The invitation cannot be accepted, and the user cannot join the Apple Developer Program team. Steps to reproduce: Go to Users and Access in App Store Connect. Add a new user and send an invitation to join the Apple Developer Program team. The invited user receives the Apple Developer invitation email. The invited user clicks the "Accept invitation" link. The page opens appstoreconnect.apple.com/activation_ds. The user signs in with an Apple Account. After signing in, the page redirects back to the same sign-in page. Repeating the sign-in process results in the same redirect loop. Expected result: The invitation should be accepted after the user signs in, and the user should be added to the Apple Developer Program team. Actual result: The page keeps redirecting back to the sign-in page, and the user cannot accept the invitation. Troubleshooting already tried: Safari and Chrome Private browsing mode Clearing browser cookies Signing out of Apple ID before opening the invitation link again Opening the link directly in the browser instead of an email app embedded browser The issue still occurs.
11
6
982
18h
Quick Look no longer invokes third-party Markdown preview extensions on iOS 27
Hi all! I am seeing the following problem while developing a Quick Look extension to preview Markdown files on iOS and macOS: On iOS 26, Quick Look invokes an installed data-based Quick Look preview extension for .md files resolved as net.daringfireball.markdown, and the extension renders the Markdown correctly. On iOS 27, the same document and the same installed extension no longer work. Quick Look still resolves the file as net.daringfireball.markdown, but it does not invoke the extension and instead displays the raw Markdown source using the generic plain-text preview. Also the same extension runs perfectly on macOS 26 and macOS 27. The extension subclasses QLPreviewProvider, has QLIsDataBasedPreview enabled, and includes net.daringfireball.markdown in QLSupportedContentTypes. As a control, the same installed extension correctly launches and renders equivalent document content when it is presented through a custom Uniform Type Identifier. This confirms that the extension is embedded, installed, and otherwise invocable; the failure is specific to Quick Look's provider selection for Markdown on iOS 27. Reproduction: Install an app containing the data-based preview extension described above. On iOS 26, open an .md document in Quick Look and observe that the extension is launched and renders the Markdown. On iOS 27, open the same document with the same extension installed. I reproduced this through Files, although the issue concerns Quick Look provider selection rather than Files-specific behavior. Observe that the extension is not launched and the raw Markdown source is shown. Open an equivalent document registered with a custom content type supported by the same extension. Observe that Quick Look launches the extension and displays the rendered preview. The attached screenshots show the same Markdown case rendered by QuickMark on iOS 26 and falling back to plain text on iOS 27. Is there a supported way for a third-party preview extension to handle net.daringfireball.markdown on iOS 27, or is this an unintended provider-selection regression? Tested with iOS 27.0 (24A5408d) on an iPhone 17 Pro Max Simulator using Xcode 27.0 (27A5237l). Feedback filed as FB24481377.
1
0
47
1d
Live Caller ID Lookup Extension - No option in phone settings
iOS 18 (22A3354) will not offer a option in settings (> Apps > Phone) after calling openSettings to enable live caller id lookup extension. iPhone and MacBook are in the same network. The PIRService runs on MacBook and is reachable via iPhone Safari (via http://MacBookPro:8080/). Hummingbird print log: hb_method=GET hb_uri=/ [Hummingbird] Request. After deploying the application via Xcode to the iPhone no requests are printed in the terminal. The extension was added like documented and bundle id is also checked multiple times. issuerRequestUri in service-config.json is http://MacBookPro:8080/issue. As far as I can tell, everything has been set up in accordance with the Testing Live Caller ID instructions. Is there something missing?
10
0
1.7k
2d
Third-party keyboards get an extra 17pt gap at the top after switching apps on iOS 27 beta.
Feedback submitted: FB24460699 The sample projects are attached to the feedback report. Environment:iOS27 Beta6; iPhone 17Pro Problem:I have encountered a consistently reproducible third-party custom keyboard layout issue in iOS 27.0 beta 1 through beta 6. The custom keyboard initially appears correctly. If I switch apps while the text input remains focused and the keyboard remains visible, and then return to the host app, the system adds a 17-point area above the custom keyboard extension. Steps to reproduce Install and enable a third-party custom keyboard. Switch to the sample custom keyboard and open the host app so that the text editor in the center receives focus. Do not dismiss the keyboard or remove focus from the editor. Return to the Home Screen or switch to another app. Return to the host app. A new blank area now appears above the custom keyboard content. I tested both a system-determined extension view height and an extension view explicitly constrained to 180 points. Both configurations produce exactly the same change. After the foreground transition, the following extension-side values remain unchanged: view.bounds inputView.bounds extension.window.bounds view.safeAreaInsets, which remains {0, 0, 0, 0} The requested 180-point extension height Only the system keyboard frame received by the host app increases by 17 points. I also drew a rounded pink boundary inside the transparent extension root view. When the issue occurs, the new area appears outside that boundary. I tested several third-party keyboards and reproduced the issue with all of them. This suggests that the behavior is caused by iOS rather than by my app. Questions On iOS 27, is it expected behavior for a custom keyboard to gain a 17pt top area after its host app returns from the background? If this is a system issue, is there any workaround that can be used until it is fixed?
1
1
283
2d
Custom keyboard: public API to activate containing app for user-initiated dictation (Guideline 4.4.1)
Product: Vozzy — custom keyboard + containing app for user-initiated dictation. Bundle: br.com.buddyapps.FlowType App Group: group.br.com.buddyapps.FlowType Flow: User selects our keyboard in a host app (Notes/Messages). Without Full Access, QWERTY input works locally. With Full Access, user taps Microphone to dictate. Containing app owns mic permission, AVAudioSession, capture, SpeechAnalyzer, Foundation Models. Keyboard never captures audio; it reflects shared state and inserts via textDocumentProxy. Already settled (do not re-ask): No public API to identify the host app. No public API to return to the host app. Feedback: FB22247647. Question (single issue): App Review Guideline 4.4.1 says keyboard extensions must not launch apps other than Settings. Is there any public, App-Review-compliant mechanism for a custom keyboard to request its containing app to activate audio capture for this user-initiated dictation flow? If yes: Which public API / App Intent surface? Is a visible switch to the containing app required? May the audio session continue while the user returns to the host app? May Stop/Cancel commands travel through an App Group while the containing app is backgrounded? Our current policy: Launch uses public NSExtensionContext.open (Debug only). Release has no keyboard path that opens the containing app. Release does allow in-place signaling when the app is already resident (App Group command + Darwin notification; launches nothing). We will not enable Release launch without a written answer naming an allowed public mechanism. App Group payload inventory + retention, Full Access-off QWERTY behavior, onboarding privacy copy. I do not have a focused Xcode sample because this is an API / App Review policy question, not a crash or incorrect return value. The keyboard extension never captures audio. Debug uses public NSExtensionContext.open; Release compiles that path out. I can attach flow diagrams and a device screen recording. Related: FB22247647 (return to host — already answered No; not re-asking).
0
0
240
3d
Is there a supported public API to create a macOS desktop display?
I am evaluating a macOS app for Apple-silicon Macs. I would like to know whether a third-party macOS app can create a new desktop display that ordinary existing macOS apps can use as a normal display. The intended use is an external landscape display used as a logical portrait workspace. The logical top half would be shown on the physical right half, and the logical bottom half on the physical left half. I have reviewed Quartz Display Services and ScreenCaptureKit. My understanding is that they support configuration or capture of existing displays, but not creation of a new host desktop display. Is there a supported public API for this on the current macOS release or the immediately previous release? If yes, please point me to the API and documentation. I am looking only for a supported public API path. I do not want to use private APIs, root privileges, kernel extensions, or bypass system security controls. Thank you.
1
0
69
4d
NetworkExtension URL Filter stops during startup only in TestFlight (NEAgentURLFilterErrorDomain Code=3, NEMembershipCheckerErrorDomain Code=3)
Hi Apple Developer Support / community, I am seeing a URL filter startup failure only in TestFlight builds. The same code path works in development and Ad Hoc builds. App setup: Host app bundle id: com.expleo.protectus.filter.main URL filter control extension bundle id: com.expleo.protectus.filter.main.buf Extension point: com.apple.networkextension.url-filter-control Using NEURLFilterManager / NEURLFilterControlProvider on iOS 26.x App Group and network extension entitlements are configured on host + extension Observed behavior: Extension process starts successfully (pid created) Status changes to starting Then updatePrefilterWithCompletionHandler runs Immediately after, plugin transitions to stopping with error 3 System retries in a loop Key logs: Error Domain=NEAgentURLFilterErrorDomain Code=3 Failed to startFilter NEPIRChecker start block reports: Error Domain=com.apple.CipherML Code=1100 Underlying Error Domain=com.apple.CipherML Code=1800 Message says details are redacted Example sequence: NEURLFilterPlugin ... started with pid ... status changed to starting updatePrefilterWithCompletionHandler enter acceptAgentClients enter setStatus:error ... NEAgentURLFilterErrorDomain Code=3 status changed to stopping with error 3 extension disposed / teardown repeats Important detail: This failure is reproducible in TestFlight only. Same code and configuration works in development and Ad Hoc builds. What we already checked: Extension launches and is discovered correctly by neagent App/extension bundle identifiers are correct App group and network extension entitlements are present in source and archive checks We tested startup gating around local bloom/prefilter readiness We still get NEMembershipCheckerErrorDomain Code=3 with CipherML 1100/1800 in TestFlight Questions: Is NEMembershipCheckerErrorDomain Code=3 in this startup path known to indicate PIR membership/status validation failure in distribution context? Are there TestFlight-specific prerequisites or server-side requirements for PIR/CipherML path that differ from development/Ad Hoc? Is there any supported way to get non-redacted diagnostic details for CipherML 1100/1800 (beyond sysdiagnose submission)? Are there recommended fail-open/fail-closed startup patterns when PIR status is temporarily unavailable? If needed, I can provide: Full sysdiagnose timestamped bundle Exact iOS version and device model Repro steps from clean install Full log stream around NEPIRChecker and NEURLFilterPlugin transitions Thanks in advance.
15
0
1.1k
4d
AlarmKit Bug: Dismissing the alarm by touching the bottom notch area.
This is about AlarmKit, and this problem is also happening with the native phone alarm. I’m working on some alarm apps, and some users have been complaining that when they get their phone, the alarm is being dismissed. We were never able to simulate this until today. We noticed that when touching the bottom notch of the phone, below the stop swipe area, sometimes the alarm is simply dismissed. In some cases, you can see the same UI repeated behind the screen; other times, you can’t drag, but it also dismisses the alarm. This seems to have been happening for quite a while with our users. They grab their phones, unintentionally touch that area, and dismiss the alarm. It’s very critical for us because we present other buttons on AlarmKit for the user to click on (guess which bird is singing, for example). Feedback Ticket Created: FB24407814
1
0
282
6d
NSE Filtering Entitlement not carried over after App Store app transfer
We completed an App Store app transfer and the Notification Service Extension Filtering Entitlement (com.apple.developer.usernotifications.filtering) did not transfer with the app. App Apple ID: 6760007376 NSE Bundle ID: io.nolink.ios.nse New Team ID: M85WA8W78C Previous Team ID: V2E3A94DC9 The app, bundle IDs, and App Store presence all moved normally, but the entitlement is not available on the new team, so we cannot sign the NSE with the configuration the app previously shipped with. Our app is an encrypted messenger and this breaks incoming call handling for live users. Two questions: Is there an official process for re-associating a previously approved entitlement with the receiving team after a transfer, or does the new team always have to submit a fresh request? Could entitlements tied to a specific App ID move with the app during a transfer, the same way bundle IDs do? We have an open support case, but wanted to raise the general question here too.
1
0
597
1w
Location Push Service Extension Entitlement – Request Process
Hi team, Earlier, Apple’s documentation clearly mentioned that we needed to submit a request to Apple to obtain the Location Push Service Extension (com.apple.developer.location.push) entitlement. However, when I checked the Apple Developer Portal now, I don’t see an option to request this entitlement for my App ID. Could you please confirm whether this entitlement is still required to be requested from Apple, or if the process has changed and the request is no longer required? Thanks
6
0
854
1w
iOS 26 Message Filter Extension not invoked after conversation is moved to Spam
We're seeing a behavior change with ILMessageFilterExtension on iOS 26 and would like to confirm whether this is expected or a regression. Environment iOS: 26.x Framework: IdentityLookup Extension type: ILMessageFilterExtension Behavior For a new sender: An incoming SMS arrives. handle(_:context:completion:) is invoked. The extension returns a classification. The conversation is moved to the Spam folder. Subsequent SMS messages in the same conversation are delivered to the Spam folder, but handle(_:context:completion:) is no longer invoked for any new messages. Expected behavior We expected the message filter extension to be invoked for every incoming SMS, regardless of the current conversation folder, allowing the extension to evaluate each message independently. Actual behavior Once the conversation is in the Spam folder, all subsequent messages bypass the extension completely. The extension receives no callback, making it impossible to: Re-evaluate new messages using updated filtering logic. Change the classification if sender reputation changes. Apply cloud-based or dynamic filtering policies on subsequent messages. Questions Is this behavior expected in iOS 26? Has the message filtering pipeline changed so that conversations already classified as Spam no longer invoke ILMessageFilterExtension? Is there any documented API or recommended approach to have the extension evaluate every incoming message for an existing Spam conversation? If this is not expected, is this a known issue? If anyone from Apple or other developers can confirm whether this is by design, it would be greatly appreciated.
1
0
291
2w
How to collect statistics for Message Filter Extension and Call Blocking Extension?
Hi everyone, I'm developing an iOS app that includes both a Message Filter Extension and a Call Blocking Extension. I'd like to understand whether there is any supported way to collect or access statistics for these extensions, such as: Number of messages filtered (allowed vs. junk) Number of blocked calls Number of identified calls Extension invocation count Filtering success/failure metrics Any analytics or usage data exposed by the system I understand that these extensions are privacy-sensitive, so I'm not expecting access to user content. I'm specifically looking for aggregate statistics or system-provided metrics that an app can legally and technically access. My questions are: Does iOS expose any APIs or callbacks for collecting usage statistics from a Message Filter Extension? Is there any way to determine how many calls were blocked or identified by a Call Blocking Extension? Are there any recommended Apple-supported approaches for tracking extension usage without violating user privacy? If no APIs are available, is this limitation intentional due to the privacy model of these extensions? I'd appreciate any guidance or best practices from Apple engineers or developers who have worked with these extensions. Thank you!
4
0
697
3w
Share Extension stops silently on iOS 26 — app never opens after user taps it in share sheet
Summary Our Share Extension works correctly on iOS 18 but silently fails on iOS 26. The app appears in the share sheet, the user taps it, the sheet dismisses — and nothing else happens. The containing app never opens. Environment App: com.yourcompany.app Extension: com.yourcompany.app.shareaudio (com.apple.share-services) Source app: Voice Memos Deployment target: iOS 17.0 iOS 18.x (TestFlight): ✅ works — extension runs, app opens, file imports iOS 26.x (same build): ❌ fails — share sheet closes, extension appears to terminate immediately What we've tried Activation rule — NSExtensionActivationRule with UTI-CONFORMS-TO covering com.apple.quicktime-audio, public.audio, public.mpeg-4-audio, com.apple.m4a-audio, public.file-url. Loading the file — tried loadFileRepresentation(forTypeIdentifier:), loadInPlaceFileRepresentation, and loadItem, with fallbacks prioritizing public.file-url and com.apple.quicktime-audio. Logged registeredTypeIdentifiers to confirm what the provider exposes. Opening the containing app — calling extensionContext?.open(url) before completeRequest. Also tested a secondary URL scheme. App Group is configured; we write a pending flag and check it in sceneDidBecomeActive. Voice Memos export modes — tested both Rendered (.m4a) and Editable (.qta). None of this changed the behavior on iOS 26. Specific questions What does NSItemProvider.registeredTypeIdentifiers return on iOS 26 for Voice Memos recordings, especially .qta files? Is com.apple.quicktime-audio still the correct UTI for .qta on iOS 26, or has it changed? Has the recommended API for loading shared audio changed in iOS 26 — loadFileRepresentation, loadInPlaceFileRepresentation, or loadItem? Is NSExtensionContext.open(_:completionHandler:) still the supported way to open the containing app from a Share Extension on iOS 26? Are there new entitlements or restrictions? Is there any WWDC25 session or updated documentation covering Share Extensions receiving Voice Memos exports (including AVFileType.qta)? Is this a known regression in iOS 26? Happy to share logs, a TestFlight build, or a minimal reproducible project if that helps.
0
0
306
3w
Programmatic / Background Trigger for ReplayKit Broadcast (Without User Intervention)
Hi everyone, I am working on an iOS application that utilizes a Broadcast Upload Extension (ReplayKit) to perform local, on-device screen analysis. Currently, we are using RPSystemBroadcastPickerView to allow the user to initiate the broadcast session. However, for our specific tracking use case, requiring the user to manually tap the "Start Broadcast" button every time creates a significant friction point in the user experience. My questions are: Is there any private API, entitlement, or MDM (Mobile Device Management) configuration that allows an app to programmatically start a ReplayKit screen recording session completely in the background without explicit human intervention (e.g., without tapping a button in the UI)? If this is strictly prohibited for consumer apps on the App Store due to privacy guidelines, are there any exceptions or enterprise-level profiles available for supervised devices that bypass the mandatory RPSystemBroadcastPickerView user interaction? My understanding is that Apple enforces this manual trigger and the red status bar indicator for strict security and privacy reasons, but I am looking for an official confirmation on whether any programmatic workaround exists for this in modern iOS versions (iOS 15+). Thank you in advance for your time and clarification!
1
0
417
3w
App not showing in "Share with App" action of shortcuts
I have created a share extension for my app which supports accepting an image. However the app do not appear in the "Share with App" action of shortcuts. It only shows "Health" and "Reminders" which are default apple apps. What I found though is that if I open some other app like Photos and share an image from it, then go to end of app's list and click more. And in the list if I toggle my app off and on again. And then come back to shourtcuts app, the app then appears. Step 1: Open share sheet, click more Step 2: Toggle the app off and on again and save. And then it switching to shortcuts app, it appear now. I am unable to find a way on how to make this app's share extension support the "Share with app" action of shortcuts by default. This looks like a bug. I did not find any proper documentation as well for this. Can anyone point me to correct way / resource to add my app as supported app here out of the box. Minimal reproducible example: ZIP file of xcode project
0
0
550
Jul ’26
How to implement background asset downloading feature?
I want to use features described in the background assets WWDC22 session (https://developer.apple.com/videos/play/wwdc2022/110403/). In earlier versions of Xcode 14 beta there used to be a background asset extension target type, however this got removed in beta 5 and has still not been put back even though Xcode 14 RC is released. With Xcode 14 beta 4, if the background asset target was chosen then a bunch of template code was created, same as happens with any extension type. But if the background asset extension target type isn't even present in the Xcode 14 RC, how is one supposed to create an extension and use this new feature?
5
0
2.1k
Jul ’26
subscription stuck in "Prepare for submission" state
I have an app update that is completely ready for submission. This update incorporates a subscription for new functionality. I'm unable to submit as the subscription is stuck in the "Prepare for submission" state instead of going to "Ready to submit" and I'm unable to include it with my app. After doing some research, I found that the banking information on my developer account is broken. I tried to update and fix this information. However, I get an error saying that it is unable to find "Bank of America". I suspect this is causing everything else to be stuck in the "Prepare for submission" state. Does anyone know how to work around this issue or can someone at Apple give me an ETA as to when things will be fixed. This issue is delaying my release. - Ken
0
0
359
Jul ’26
Bug (?) in Share Extension activation with max count
I have been implementing a share extension for my app and have added the activation rule NSExtensionActivationSupportsImageWithMaxCount. While testing I've noticed that my app will appear in the Share Sheet as a viable target when the max count is exceeded by up to 2 additional photos. For example if I set max to 4 then my app will appear in the share sheet when the user is sharing 1-6 images. On its own this wouldn't be too problematic, I figured I could put some validation in the extension that specifies the user has exceeded the allowed number. But while debugging the extension under this scenario I noticed that the inputItems array on the NSExtensionContext will only contain the number of items I've defined as the max, and silently drop the extra items. I'm sure users will see this as a bug with my app "losing" the extra images since the OS/Share Sheet provides my app as a valid target. My entire Info.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSExtensionAttributes</key> <dict> <key>NSExtensionActivationRule</key> <dict> <key>NSExtensionActivationSupportsWebURLWithMaxCount</key> <integer>1</integer> <key>NSExtensionActivationSupportsImageWithMaxCount</key> <integer>4</integer> </dict> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.share-services</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).ShareViewController</string> </dict> </plist> Entire code implementation of the extension class ShareViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() if let extensionContext { debugPrint(extensionContext) } } } Edit: I've been testing on iOS 26.5 with a minimum deployment of iOS 26.0
0
0
408
Jul ’26
FSKit and CI Automation for Filesystem Development
Hi everyone, First, I'd like to say that I'm really excited about the direction FSKit is taking. Having a modern, user-space filesystem framework on macOS is a huge improvement, and I'm currently working on porting an existing cross-platform FUSE-based filesystem to use it. One challenge I've run into is automated testing. Our project has Linux, Windows, and macOS CI. On Linux, we can perform real mount/unmount integration tests on every commit. On Windows, we can do the same using WinFsp. However, on GitHub-hosted macOS runners, it appears that filesystem extensions still require interactive approval or registration before they can be mounted. This makes it difficult to validate the actual mount lifecycle in ephemeral CI environments. We can still compile and unit test our filesystem logic, but we can't exercise the final "mount a filesystem and verify it behaves correctly" integration tests without a self-hosted Mac. I'm curious whether this is the expected long-term workflow, or whether Apple has plans to make this easier for developers. Some questions I have are: Is unattended registration of an FSKit filesystem extension in CI something that's being considered? Are there plans to support ephemeral CI environments such as GitHub Actions without requiring manual interaction? Is there a recommended approach for automated integration testing of FSKit filesystems today that I'm overlooking? More generally, what does Apple envision as the best practice for projects that want to continuously test real filesystem mounts? I completely understand the security motivations for requiring user approval on end-user systems. My question is specifically about trusted development and CI environments where the machine is temporary and exists solely for automated testing. Thanks for any guidance, and thanks to the FSKit team for the work that's gone into making user-space filesystems a first-class experience on macOS.
0
1
379
Jul ’26
NSFileProviderReplicatedExtension triggering wrong fileproviderd behaviour?
TL;DR: looking for FileProvider Extension debugging suggestions... I am attempting to develop NSFileProviderReplicatedExtension. Against a real backing repository (~4TB), I've seen fileproviderd become heavily loaded, non-responsive (i.e. fileproviderctl dump has failed to complete within 60s on 8 tries) and (maybe?) re-enumerate the contents of the repository. The profiler says that it's spending most of its time doing sqlite work against the table for the domain from my extension. I hypothesize that my extension has telling fileproviderd occasionally inconsistent things and it is now making sure that the world is the way that it should be. So: is there a way to get it to log when it has received invalid info? (I did read its (terse 😊) man page. I'm running out of ideas of what more to check with responses from the extension.
Replies
1
Boosts
0
Views
120
Activity
7h
Apple Developer Program team invitation keeps redirecting to the sign-in page
We are experiencing an issue when inviting a user to join our Apple Developer Program team through App Store Connect Users and Access. The purpose of adding this user is to include them as an internal TestFlight tester after the invitation is accepted. The invited user received the Apple Developer invitation email and clicked the "Accept invitation" link. The invitation link opens the following page: https://appstoreconnect.apple.com/activation_ds?key=... The page displays "Sign in to accept your invitation" and asks the user to sign in with an Apple Account. After the user signs in successfully, the page redirects back to the same sign-in page and asks the user to sign in again. The invitation cannot be accepted, and the user cannot join the Apple Developer Program team. Steps to reproduce: Go to Users and Access in App Store Connect. Add a new user and send an invitation to join the Apple Developer Program team. The invited user receives the Apple Developer invitation email. The invited user clicks the "Accept invitation" link. The page opens appstoreconnect.apple.com/activation_ds. The user signs in with an Apple Account. After signing in, the page redirects back to the same sign-in page. Repeating the sign-in process results in the same redirect loop. Expected result: The invitation should be accepted after the user signs in, and the user should be added to the Apple Developer Program team. Actual result: The page keeps redirecting back to the sign-in page, and the user cannot accept the invitation. Troubleshooting already tried: Safari and Chrome Private browsing mode Clearing browser cookies Signing out of Apple ID before opening the invitation link again Opening the link directly in the browser instead of an email app embedded browser The issue still occurs.
Replies
11
Boosts
6
Views
982
Activity
18h
Quick Look no longer invokes third-party Markdown preview extensions on iOS 27
Hi all! I am seeing the following problem while developing a Quick Look extension to preview Markdown files on iOS and macOS: On iOS 26, Quick Look invokes an installed data-based Quick Look preview extension for .md files resolved as net.daringfireball.markdown, and the extension renders the Markdown correctly. On iOS 27, the same document and the same installed extension no longer work. Quick Look still resolves the file as net.daringfireball.markdown, but it does not invoke the extension and instead displays the raw Markdown source using the generic plain-text preview. Also the same extension runs perfectly on macOS 26 and macOS 27. The extension subclasses QLPreviewProvider, has QLIsDataBasedPreview enabled, and includes net.daringfireball.markdown in QLSupportedContentTypes. As a control, the same installed extension correctly launches and renders equivalent document content when it is presented through a custom Uniform Type Identifier. This confirms that the extension is embedded, installed, and otherwise invocable; the failure is specific to Quick Look's provider selection for Markdown on iOS 27. Reproduction: Install an app containing the data-based preview extension described above. On iOS 26, open an .md document in Quick Look and observe that the extension is launched and renders the Markdown. On iOS 27, open the same document with the same extension installed. I reproduced this through Files, although the issue concerns Quick Look provider selection rather than Files-specific behavior. Observe that the extension is not launched and the raw Markdown source is shown. Open an equivalent document registered with a custom content type supported by the same extension. Observe that Quick Look launches the extension and displays the rendered preview. The attached screenshots show the same Markdown case rendered by QuickMark on iOS 26 and falling back to plain text on iOS 27. Is there a supported way for a third-party preview extension to handle net.daringfireball.markdown on iOS 27, or is this an unintended provider-selection regression? Tested with iOS 27.0 (24A5408d) on an iPhone 17 Pro Max Simulator using Xcode 27.0 (27A5237l). Feedback filed as FB24481377.
Replies
1
Boosts
0
Views
47
Activity
1d
Live Caller ID Lookup Extension - No option in phone settings
iOS 18 (22A3354) will not offer a option in settings (> Apps > Phone) after calling openSettings to enable live caller id lookup extension. iPhone and MacBook are in the same network. The PIRService runs on MacBook and is reachable via iPhone Safari (via http://MacBookPro:8080/). Hummingbird print log: hb_method=GET hb_uri=/ [Hummingbird] Request. After deploying the application via Xcode to the iPhone no requests are printed in the terminal. The extension was added like documented and bundle id is also checked multiple times. issuerRequestUri in service-config.json is http://MacBookPro:8080/issue. As far as I can tell, everything has been set up in accordance with the Testing Live Caller ID instructions. Is there something missing?
Replies
10
Boosts
0
Views
1.7k
Activity
2d
Third-party keyboards get an extra 17pt gap at the top after switching apps on iOS 27 beta.
Feedback submitted: FB24460699 The sample projects are attached to the feedback report. Environment:iOS27 Beta6; iPhone 17Pro Problem:I have encountered a consistently reproducible third-party custom keyboard layout issue in iOS 27.0 beta 1 through beta 6. The custom keyboard initially appears correctly. If I switch apps while the text input remains focused and the keyboard remains visible, and then return to the host app, the system adds a 17-point area above the custom keyboard extension. Steps to reproduce Install and enable a third-party custom keyboard. Switch to the sample custom keyboard and open the host app so that the text editor in the center receives focus. Do not dismiss the keyboard or remove focus from the editor. Return to the Home Screen or switch to another app. Return to the host app. A new blank area now appears above the custom keyboard content. I tested both a system-determined extension view height and an extension view explicitly constrained to 180 points. Both configurations produce exactly the same change. After the foreground transition, the following extension-side values remain unchanged: view.bounds inputView.bounds extension.window.bounds view.safeAreaInsets, which remains {0, 0, 0, 0} The requested 180-point extension height Only the system keyboard frame received by the host app increases by 17 points. I also drew a rounded pink boundary inside the transparent extension root view. When the issue occurs, the new area appears outside that boundary. I tested several third-party keyboards and reproduced the issue with all of them. This suggests that the behavior is caused by iOS rather than by my app. Questions On iOS 27, is it expected behavior for a custom keyboard to gain a 17pt top area after its host app returns from the background? If this is a system issue, is there any workaround that can be used until it is fixed?
Replies
1
Boosts
1
Views
283
Activity
2d
Custom keyboard: public API to activate containing app for user-initiated dictation (Guideline 4.4.1)
Product: Vozzy — custom keyboard + containing app for user-initiated dictation. Bundle: br.com.buddyapps.FlowType App Group: group.br.com.buddyapps.FlowType Flow: User selects our keyboard in a host app (Notes/Messages). Without Full Access, QWERTY input works locally. With Full Access, user taps Microphone to dictate. Containing app owns mic permission, AVAudioSession, capture, SpeechAnalyzer, Foundation Models. Keyboard never captures audio; it reflects shared state and inserts via textDocumentProxy. Already settled (do not re-ask): No public API to identify the host app. No public API to return to the host app. Feedback: FB22247647. Question (single issue): App Review Guideline 4.4.1 says keyboard extensions must not launch apps other than Settings. Is there any public, App-Review-compliant mechanism for a custom keyboard to request its containing app to activate audio capture for this user-initiated dictation flow? If yes: Which public API / App Intent surface? Is a visible switch to the containing app required? May the audio session continue while the user returns to the host app? May Stop/Cancel commands travel through an App Group while the containing app is backgrounded? Our current policy: Launch uses public NSExtensionContext.open (Debug only). Release has no keyboard path that opens the containing app. Release does allow in-place signaling when the app is already resident (App Group command + Darwin notification; launches nothing). We will not enable Release launch without a written answer naming an allowed public mechanism. App Group payload inventory + retention, Full Access-off QWERTY behavior, onboarding privacy copy. I do not have a focused Xcode sample because this is an API / App Review policy question, not a crash or incorrect return value. The keyboard extension never captures audio. Debug uses public NSExtensionContext.open; Release compiles that path out. I can attach flow diagrams and a device screen recording. Related: FB22247647 (return to host — already answered No; not re-asking).
Replies
0
Boosts
0
Views
240
Activity
3d
Is there a supported public API to create a macOS desktop display?
I am evaluating a macOS app for Apple-silicon Macs. I would like to know whether a third-party macOS app can create a new desktop display that ordinary existing macOS apps can use as a normal display. The intended use is an external landscape display used as a logical portrait workspace. The logical top half would be shown on the physical right half, and the logical bottom half on the physical left half. I have reviewed Quartz Display Services and ScreenCaptureKit. My understanding is that they support configuration or capture of existing displays, but not creation of a new host desktop display. Is there a supported public API for this on the current macOS release or the immediately previous release? If yes, please point me to the API and documentation. I am looking only for a supported public API path. I do not want to use private APIs, root privileges, kernel extensions, or bypass system security controls. Thank you.
Replies
1
Boosts
0
Views
69
Activity
4d
NetworkExtension URL Filter stops during startup only in TestFlight (NEAgentURLFilterErrorDomain Code=3, NEMembershipCheckerErrorDomain Code=3)
Hi Apple Developer Support / community, I am seeing a URL filter startup failure only in TestFlight builds. The same code path works in development and Ad Hoc builds. App setup: Host app bundle id: com.expleo.protectus.filter.main URL filter control extension bundle id: com.expleo.protectus.filter.main.buf Extension point: com.apple.networkextension.url-filter-control Using NEURLFilterManager / NEURLFilterControlProvider on iOS 26.x App Group and network extension entitlements are configured on host + extension Observed behavior: Extension process starts successfully (pid created) Status changes to starting Then updatePrefilterWithCompletionHandler runs Immediately after, plugin transitions to stopping with error 3 System retries in a loop Key logs: Error Domain=NEAgentURLFilterErrorDomain Code=3 Failed to startFilter NEPIRChecker start block reports: Error Domain=com.apple.CipherML Code=1100 Underlying Error Domain=com.apple.CipherML Code=1800 Message says details are redacted Example sequence: NEURLFilterPlugin ... started with pid ... status changed to starting updatePrefilterWithCompletionHandler enter acceptAgentClients enter setStatus:error ... NEAgentURLFilterErrorDomain Code=3 status changed to stopping with error 3 extension disposed / teardown repeats Important detail: This failure is reproducible in TestFlight only. Same code and configuration works in development and Ad Hoc builds. What we already checked: Extension launches and is discovered correctly by neagent App/extension bundle identifiers are correct App group and network extension entitlements are present in source and archive checks We tested startup gating around local bloom/prefilter readiness We still get NEMembershipCheckerErrorDomain Code=3 with CipherML 1100/1800 in TestFlight Questions: Is NEMembershipCheckerErrorDomain Code=3 in this startup path known to indicate PIR membership/status validation failure in distribution context? Are there TestFlight-specific prerequisites or server-side requirements for PIR/CipherML path that differ from development/Ad Hoc? Is there any supported way to get non-redacted diagnostic details for CipherML 1100/1800 (beyond sysdiagnose submission)? Are there recommended fail-open/fail-closed startup patterns when PIR status is temporarily unavailable? If needed, I can provide: Full sysdiagnose timestamped bundle Exact iOS version and device model Repro steps from clean install Full log stream around NEPIRChecker and NEURLFilterPlugin transitions Thanks in advance.
Replies
15
Boosts
0
Views
1.1k
Activity
4d
AlarmKit Bug: Dismissing the alarm by touching the bottom notch area.
This is about AlarmKit, and this problem is also happening with the native phone alarm. I’m working on some alarm apps, and some users have been complaining that when they get their phone, the alarm is being dismissed. We were never able to simulate this until today. We noticed that when touching the bottom notch of the phone, below the stop swipe area, sometimes the alarm is simply dismissed. In some cases, you can see the same UI repeated behind the screen; other times, you can’t drag, but it also dismisses the alarm. This seems to have been happening for quite a while with our users. They grab their phones, unintentionally touch that area, and dismiss the alarm. It’s very critical for us because we present other buttons on AlarmKit for the user to click on (guess which bird is singing, for example). Feedback Ticket Created: FB24407814
Replies
1
Boosts
0
Views
282
Activity
6d
NSE Filtering Entitlement not carried over after App Store app transfer
We completed an App Store app transfer and the Notification Service Extension Filtering Entitlement (com.apple.developer.usernotifications.filtering) did not transfer with the app. App Apple ID: 6760007376 NSE Bundle ID: io.nolink.ios.nse New Team ID: M85WA8W78C Previous Team ID: V2E3A94DC9 The app, bundle IDs, and App Store presence all moved normally, but the entitlement is not available on the new team, so we cannot sign the NSE with the configuration the app previously shipped with. Our app is an encrypted messenger and this breaks incoming call handling for live users. Two questions: Is there an official process for re-associating a previously approved entitlement with the receiving team after a transfer, or does the new team always have to submit a fresh request? Could entitlements tied to a specific App ID move with the app during a transfer, the same way bundle IDs do? We have an open support case, but wanted to raise the general question here too.
Replies
1
Boosts
0
Views
597
Activity
1w
Location Push Service Extension Entitlement – Request Process
Hi team, Earlier, Apple’s documentation clearly mentioned that we needed to submit a request to Apple to obtain the Location Push Service Extension (com.apple.developer.location.push) entitlement. However, when I checked the Apple Developer Portal now, I don’t see an option to request this entitlement for my App ID. Could you please confirm whether this entitlement is still required to be requested from Apple, or if the process has changed and the request is no longer required? Thanks
Replies
6
Boosts
0
Views
854
Activity
1w
iOS 26 Message Filter Extension not invoked after conversation is moved to Spam
We're seeing a behavior change with ILMessageFilterExtension on iOS 26 and would like to confirm whether this is expected or a regression. Environment iOS: 26.x Framework: IdentityLookup Extension type: ILMessageFilterExtension Behavior For a new sender: An incoming SMS arrives. handle(_:context:completion:) is invoked. The extension returns a classification. The conversation is moved to the Spam folder. Subsequent SMS messages in the same conversation are delivered to the Spam folder, but handle(_:context:completion:) is no longer invoked for any new messages. Expected behavior We expected the message filter extension to be invoked for every incoming SMS, regardless of the current conversation folder, allowing the extension to evaluate each message independently. Actual behavior Once the conversation is in the Spam folder, all subsequent messages bypass the extension completely. The extension receives no callback, making it impossible to: Re-evaluate new messages using updated filtering logic. Change the classification if sender reputation changes. Apply cloud-based or dynamic filtering policies on subsequent messages. Questions Is this behavior expected in iOS 26? Has the message filtering pipeline changed so that conversations already classified as Spam no longer invoke ILMessageFilterExtension? Is there any documented API or recommended approach to have the extension evaluate every incoming message for an existing Spam conversation? If this is not expected, is this a known issue? If anyone from Apple or other developers can confirm whether this is by design, it would be greatly appreciated.
Replies
1
Boosts
0
Views
291
Activity
2w
How to collect statistics for Message Filter Extension and Call Blocking Extension?
Hi everyone, I'm developing an iOS app that includes both a Message Filter Extension and a Call Blocking Extension. I'd like to understand whether there is any supported way to collect or access statistics for these extensions, such as: Number of messages filtered (allowed vs. junk) Number of blocked calls Number of identified calls Extension invocation count Filtering success/failure metrics Any analytics or usage data exposed by the system I understand that these extensions are privacy-sensitive, so I'm not expecting access to user content. I'm specifically looking for aggregate statistics or system-provided metrics that an app can legally and technically access. My questions are: Does iOS expose any APIs or callbacks for collecting usage statistics from a Message Filter Extension? Is there any way to determine how many calls were blocked or identified by a Call Blocking Extension? Are there any recommended Apple-supported approaches for tracking extension usage without violating user privacy? If no APIs are available, is this limitation intentional due to the privacy model of these extensions? I'd appreciate any guidance or best practices from Apple engineers or developers who have worked with these extensions. Thank you!
Replies
4
Boosts
0
Views
697
Activity
3w
Share Extension stops silently on iOS 26 — app never opens after user taps it in share sheet
Summary Our Share Extension works correctly on iOS 18 but silently fails on iOS 26. The app appears in the share sheet, the user taps it, the sheet dismisses — and nothing else happens. The containing app never opens. Environment App: com.yourcompany.app Extension: com.yourcompany.app.shareaudio (com.apple.share-services) Source app: Voice Memos Deployment target: iOS 17.0 iOS 18.x (TestFlight): ✅ works — extension runs, app opens, file imports iOS 26.x (same build): ❌ fails — share sheet closes, extension appears to terminate immediately What we've tried Activation rule — NSExtensionActivationRule with UTI-CONFORMS-TO covering com.apple.quicktime-audio, public.audio, public.mpeg-4-audio, com.apple.m4a-audio, public.file-url. Loading the file — tried loadFileRepresentation(forTypeIdentifier:), loadInPlaceFileRepresentation, and loadItem, with fallbacks prioritizing public.file-url and com.apple.quicktime-audio. Logged registeredTypeIdentifiers to confirm what the provider exposes. Opening the containing app — calling extensionContext?.open(url) before completeRequest. Also tested a secondary URL scheme. App Group is configured; we write a pending flag and check it in sceneDidBecomeActive. Voice Memos export modes — tested both Rendered (.m4a) and Editable (.qta). None of this changed the behavior on iOS 26. Specific questions What does NSItemProvider.registeredTypeIdentifiers return on iOS 26 for Voice Memos recordings, especially .qta files? Is com.apple.quicktime-audio still the correct UTI for .qta on iOS 26, or has it changed? Has the recommended API for loading shared audio changed in iOS 26 — loadFileRepresentation, loadInPlaceFileRepresentation, or loadItem? Is NSExtensionContext.open(_:completionHandler:) still the supported way to open the containing app from a Share Extension on iOS 26? Are there new entitlements or restrictions? Is there any WWDC25 session or updated documentation covering Share Extensions receiving Voice Memos exports (including AVFileType.qta)? Is this a known regression in iOS 26? Happy to share logs, a TestFlight build, or a minimal reproducible project if that helps.
Replies
0
Boosts
0
Views
306
Activity
3w
Programmatic / Background Trigger for ReplayKit Broadcast (Without User Intervention)
Hi everyone, I am working on an iOS application that utilizes a Broadcast Upload Extension (ReplayKit) to perform local, on-device screen analysis. Currently, we are using RPSystemBroadcastPickerView to allow the user to initiate the broadcast session. However, for our specific tracking use case, requiring the user to manually tap the "Start Broadcast" button every time creates a significant friction point in the user experience. My questions are: Is there any private API, entitlement, or MDM (Mobile Device Management) configuration that allows an app to programmatically start a ReplayKit screen recording session completely in the background without explicit human intervention (e.g., without tapping a button in the UI)? If this is strictly prohibited for consumer apps on the App Store due to privacy guidelines, are there any exceptions or enterprise-level profiles available for supervised devices that bypass the mandatory RPSystemBroadcastPickerView user interaction? My understanding is that Apple enforces this manual trigger and the red status bar indicator for strict security and privacy reasons, but I am looking for an official confirmation on whether any programmatic workaround exists for this in modern iOS versions (iOS 15+). Thank you in advance for your time and clarification!
Replies
1
Boosts
0
Views
417
Activity
3w
App not showing in "Share with App" action of shortcuts
I have created a share extension for my app which supports accepting an image. However the app do not appear in the "Share with App" action of shortcuts. It only shows "Health" and "Reminders" which are default apple apps. What I found though is that if I open some other app like Photos and share an image from it, then go to end of app's list and click more. And in the list if I toggle my app off and on again. And then come back to shourtcuts app, the app then appears. Step 1: Open share sheet, click more Step 2: Toggle the app off and on again and save. And then it switching to shortcuts app, it appear now. I am unable to find a way on how to make this app's share extension support the "Share with app" action of shortcuts by default. This looks like a bug. I did not find any proper documentation as well for this. Can anyone point me to correct way / resource to add my app as supported app here out of the box. Minimal reproducible example: ZIP file of xcode project
Replies
0
Boosts
0
Views
550
Activity
Jul ’26
How to implement background asset downloading feature?
I want to use features described in the background assets WWDC22 session (https://developer.apple.com/videos/play/wwdc2022/110403/). In earlier versions of Xcode 14 beta there used to be a background asset extension target type, however this got removed in beta 5 and has still not been put back even though Xcode 14 RC is released. With Xcode 14 beta 4, if the background asset target was chosen then a bunch of template code was created, same as happens with any extension type. But if the background asset extension target type isn't even present in the Xcode 14 RC, how is one supposed to create an extension and use this new feature?
Replies
5
Boosts
0
Views
2.1k
Activity
Jul ’26
subscription stuck in "Prepare for submission" state
I have an app update that is completely ready for submission. This update incorporates a subscription for new functionality. I'm unable to submit as the subscription is stuck in the "Prepare for submission" state instead of going to "Ready to submit" and I'm unable to include it with my app. After doing some research, I found that the banking information on my developer account is broken. I tried to update and fix this information. However, I get an error saying that it is unable to find "Bank of America". I suspect this is causing everything else to be stuck in the "Prepare for submission" state. Does anyone know how to work around this issue or can someone at Apple give me an ETA as to when things will be fixed. This issue is delaying my release. - Ken
Replies
0
Boosts
0
Views
359
Activity
Jul ’26
Bug (?) in Share Extension activation with max count
I have been implementing a share extension for my app and have added the activation rule NSExtensionActivationSupportsImageWithMaxCount. While testing I've noticed that my app will appear in the Share Sheet as a viable target when the max count is exceeded by up to 2 additional photos. For example if I set max to 4 then my app will appear in the share sheet when the user is sharing 1-6 images. On its own this wouldn't be too problematic, I figured I could put some validation in the extension that specifies the user has exceeded the allowed number. But while debugging the extension under this scenario I noticed that the inputItems array on the NSExtensionContext will only contain the number of items I've defined as the max, and silently drop the extra items. I'm sure users will see this as a bug with my app "losing" the extra images since the OS/Share Sheet provides my app as a valid target. My entire Info.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSExtensionAttributes</key> <dict> <key>NSExtensionActivationRule</key> <dict> <key>NSExtensionActivationSupportsWebURLWithMaxCount</key> <integer>1</integer> <key>NSExtensionActivationSupportsImageWithMaxCount</key> <integer>4</integer> </dict> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.share-services</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).ShareViewController</string> </dict> </plist> Entire code implementation of the extension class ShareViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() if let extensionContext { debugPrint(extensionContext) } } } Edit: I've been testing on iOS 26.5 with a minimum deployment of iOS 26.0
Replies
0
Boosts
0
Views
408
Activity
Jul ’26
FSKit and CI Automation for Filesystem Development
Hi everyone, First, I'd like to say that I'm really excited about the direction FSKit is taking. Having a modern, user-space filesystem framework on macOS is a huge improvement, and I'm currently working on porting an existing cross-platform FUSE-based filesystem to use it. One challenge I've run into is automated testing. Our project has Linux, Windows, and macOS CI. On Linux, we can perform real mount/unmount integration tests on every commit. On Windows, we can do the same using WinFsp. However, on GitHub-hosted macOS runners, it appears that filesystem extensions still require interactive approval or registration before they can be mounted. This makes it difficult to validate the actual mount lifecycle in ephemeral CI environments. We can still compile and unit test our filesystem logic, but we can't exercise the final "mount a filesystem and verify it behaves correctly" integration tests without a self-hosted Mac. I'm curious whether this is the expected long-term workflow, or whether Apple has plans to make this easier for developers. Some questions I have are: Is unattended registration of an FSKit filesystem extension in CI something that's being considered? Are there plans to support ephemeral CI environments such as GitHub Actions without requiring manual interaction? Is there a recommended approach for automated integration testing of FSKit filesystems today that I'm overlooking? More generally, what does Apple envision as the best practice for projects that want to continuously test real filesystem mounts? I completely understand the security motivations for requiring user approval on end-user systems. My question is specifically about trusted development and CI environments where the machine is temporary and exists solely for automated testing. Thanks for any guidance, and thanks to the FSKit team for the work that's gone into making user-space filesystems a first-class experience on macOS.
Replies
0
Boosts
1
Views
379
Activity
Jul ’26