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

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
316
2d
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
61
3d
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
99
3d
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.
2
2
394
1w
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
198
1w
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
1.8k
1w
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
200
2w
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
206
2w
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
203
2w
Can I declare my Share Extension can activate with an infinite number of images?
I am writing a share extension for my app so users can share images from other apps. I have added the NSExtensionActivationSupportsImageWithMaxCount key to the NSExtensionActivationRule dictionary but I am wondering if there is a way to define the activation rule to say I will accept any number of images, and not have it constrained by a maximum value. Looking at the documentation I've noticed that attachments seem to be the only option that defines a minimum count (NSExtensionActivationSupportsAttachmentsWithMinCount). Is there an undocumented equivalent for images or some particular combination to use? I know I could set the max to be some very high number like 999, but I'm just wondering if there is an "official" supported way to achieve a min count defined on the extensions rules.
0
0
217
2w
Can LPLinkMetadata be accessed from NSExtensionContext for my share extension
In the WWDC19 session "Embedding and Sharing Visually Rich Links" it mentions how the Messages app is able to gain access to the LPLinkMetadata provided to the Share Sheet (direct time link) so that it does not have to load the metadata itself. Looking through the NSExtensionContext's inputItems in my share extension and I could not see anything obvious that would allow my own share extension to read the loaded metadata. Am I missing something or is the metadata not made available? To be clear, I am aware of how to use LPMetadataProvider to fetch the metadata. I just want to know if my share extension can make use of the metadata that the Share Sheet has already loaded.
0
0
234
2w
`LockedCameraCaptureManager` practically unusable since iOS 26
Somewhere since iOS 26, the LockedCameraCapture framework gets in an unpredictable state after opening the main app from the LockedCamera extension using LockedCameraCaptureSession.openApplication(for userActivity:). (Feedback with sample code to reproduce: FB21966835) Opening the extension from the lock screen again doesn’t open the extension but puts the lock screen in a state as if it has. Content updated from LockedCameraCaptureManager.shared.sessionContentUpdates comes in inconsistently, usually needs the app to be opened again or the extension to be opened. This makes using this extension impossible for me as I use it to record video files that manually need to be imported when the app is launched (so not through PhotoKit). Does anybody have a suggestion to circumvent this issue or how to get this fixed?
1
2
709
2w
Safari Extension Service Worker not working until page reload
Hello, I am developing a Safari extension that uses service workers and all works well. When the extension is updated, a new content script is injected into the current open tabs however the service worker connection with the new content script does not get established. I confirmed both the old content script and new one is on the page, but the new one just doesn't execute which means it will not connect to the service worker. In Chrome a newly injected content script does work and in FireFox it is handled by FireFox automatically. How can this be done in Safari? Any help would be appreciated.
1
0
543
3w
I want to measure the time my smartphone has been turned off.
These days, we live our lives completely surrounded by and immersed in smartphones. It seems there isn't a single person among us who isn't. This is because we can find all kinds of information, meet friends, and enjoy our leisure time on our smartphones. However, there is one thing we are overlooking. It is the emotion you will feel toward the people around you as you die on the day you come to pass away. What is that emotion? It is regret. That regret is likely the longing to enjoy physical intimacy, conversation, travel, and everyday life more. That is why I am developing an app with a special feature. I am developing an app that helps users self-regulate and maintain moderation in their smartphone usage—something we are addicted to and love so much, yet often fail to realize that it is poison. This app is designed to encourage mutual moderation and provide rewards. Ironically, this app is designed to operate on the smartphone itself. The reason is that if the smartphone is a tiger's den, then to catch the tiger, one must enter the tiger's den. While conceptualizing and proceeding with development, I encountered a completely insurmountable wall. This is because the iPhone cannot accurately measure the screen-off time. I earnestly hope that if there is a team or developer working on the iPhone framework, you can resolve this issue. If you can extend the extension or take measures to allow access to that data within the SDK, I believe I will be able to complete this app. I look forward to your help.
0
0
232
3w
Entitlement for extension to have read-only access to host's task?
Hi all, I'm building an iOS app extension using ExtensionKit that works exclusively with its containing host app, presenting UI via EXHostViewController. I'd like the extension to have read-only access to the host's task for process introspection purposes. I'm aware this would almost certainly require a special entitlement. I know get-task-allow and the debugger entitlement exist, but those aren't shippable to the App Store. I'm looking for something that could realistically be distributed to end users. My questions: Does an entitlement exist (or is one planned) that would grant an extension limited, read-only access to its host's task—given the extension is already tightly coupled to the host? If not, is this something Apple would consider adding? The use case is an extension that needs to inspect host process state without the ability to modify it. Is there a path to request such an entitlement through the provisioning profile process, or is this fundamentally off the table for App Store distribution? It seems like a reasonable trust boundary given the extension already lives inside the host's app bundle, but I understand the security implications. Any insight appreciated. Thanks!
11
0
1.4k
Jun ’26
Camera doesn't work inside the iOS Captive Network Assistant — by design?
I'm building a Wi-Fi captive portal (web page) that needs the camera to scan a boarding-pass barcode. Inside the iOS Captive Network Assistant (the sign-in pop-up that appears when you join Wi-Fi): getUserMedia() (live camera) doesn't work, and <input type="file" capture="environment"> opens only the photo library, not the camera. The same page works fine in full Safari on the same iPhone. Is camera access intentionally blocked in the CNA, or is there a supported way to use it? Has anyone gotten the camera working inside the captive portal on iOS? Thanks!
1
0
475
Jun ’26
Safari 17.6 (17618.3.11.11.7, 17618) Crashes on Attempt to Run Extension in Developer Mode
Hi, I'm trying to test out an extension I'm building in Xcode and every time I try to test it, Safari crashes immediately. On later versions of Mac OS, e.g. Sequoia, there's no problem. I'm building this extension as part of a Mac Catalyst app that is a hybrid iPad/Mac OS app. On Safari 26.3 (20623.2.7.18.1) I can just add the source tree as a temporary extension and it works fine. But the .appex file for the same thing is causing the older Safari 17.6 (17618.3.11.11.7, 17618) to throw a fit. Trying to get through this with LLMs has focused on whether the extension target is for iOS and Mac OS or just Mac OS alone, and futzing with UIDeviceFamily the Build Settings. But basically it just doesn't work no matter what I do, and Safari shouldn't crash. Here's the .appex's Info.plist after compilation: % defaults read /Users/[username]/Library/Developer/Xcode/DerivedData/PlainSite-[gibberish]/Build/Products/Debug-maccatalyst/PlainSite.app/Contents/PlugIns/PlainSiteRecycler.appex/Contents/Info.plist { BuildMachineOSBuild = 21H1320; CFBundleIdentifier = "com.thinkcomputer.[product].[extension]"; CFBundleShortVersionString = "1.0"; CFBundleSupportedPlatforms = ( MacOSX ); CFBundleVersion = 2; DTCompiler = "com.apple.compilers.llvm.clang.1_0"; DTPlatformBuild = 14C18; DTPlatformName = macosx; DTPlatformVersion = "13.1"; DTSDKBuild = 22C55; DTSDKName = "macosx13.1"; DTXcode = 1420; DTXcodeBuild = 14C18; LSMinimumSystemVersion = "12.0"; NSExtension = { NSExtensionAttributes = { SafariWebExtensionPath = src; }; NSExtensionPointIdentifier = "com.apple.Safari.web-extension"; NSExtensionPrincipalClass = "PlainSiteRecycler.SafariWebExtensionHandler"; }; UIDeviceFamily = ( 2, 6 ); } Crash log: Hardware Model: MacBookPro12,1 Process: Safari [44241] Path: /Applications/Safari.app/Contents/MacOS/Safari Identifier: com.apple.Safari Version: 17.6 (17618.3.11.11.7) Code Type: X86-64 (Native) Role: Background Parent Process: launchd [1] Coalition: com.apple.Safari [1098] Date/Time: 2026-06-12 13:29:10.8546 -0700 Launch Time: 2026-06-12 13:27:27.7047 -0700 OS Version: macOS 12.7.6 (21H1320) Release Type: User Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_PROTECTION_FAILURE at 0x00007ff7b77d1ff8 Exception Codes: 0x0000000000000002, 0x00007ff7b77d1ff8 VM Region Info: 0x7ff7b77d1ff8 is in 0x7ff7b3fd2000-0x7ff7b77d2000; bytes after start: 58720248 bytes before end: 7 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL MALLOC_SMALL 7fa313000000-7fa313800000 [ 8192K] rw-/rwx SM=PRV GAP OF 0x54a07d2000 BYTES ---> STACK GUARD 7ff7b3fd2000-7ff7b77d2000 [ 56.0M] ---/rwx SM=NUL ... for thread 0 Stack 7ff7b77d2000-7ff7b7fd2000 [ 8192K] rw-/rwx SM=PRV thread 0 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: SIGNAL 11 Segmentation fault: 11 Terminating Process: exc handler [44241] Highlighted by Thread: 0 Backtrace not available No thread state (register information) available Binary Images: 0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ??? Error Formulating Crash Report: dyld_process_info_create failed with 5 Failed to create CSSymbolicatorRef - corpse still valid ¯_(ツ)/¯ thread_get_state(PAGEIN) returned 0x10000003: (ipc/send) invalid destination port thread_get_state(EXCEPTION) returned 0x10000003: (ipc/send) invalid destination port thread_get_state(FLAVOR) returned 0x10000003: (ipc/send) invalid destination port EOF Full Report {"app_name":"Safari","timestamp":"2026-06-12 13:29:12.00 -0700","app_version":"17.6","slice_uuid":"af2262af-647d-3262-adc8-e52c3ef7579e","build_version":"17618.3.11.11.7","platform":0,"bundleID":"com.apple.Safari","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.7.6 (21H1320)","incident_id":"8F871759-8566-49DE-A6F9-EE73128BB836","name":"Safari"} { "uptime" : 100000, "procLaunch" : "2026-06-12 13:27:27.7047 -0700", "procRole" : "Background", "version" : 2, "userID" : 503, "deployVersion" : 210, "modelCode" : "MacBookPro12,1", "procStartAbsTime" : 102649791496150, "coalitionID" : 1098, "osVersion" : { "train" : "macOS 12.7.6", "build" : "21H1320", "releaseType" : "User" }, "captureTime" : "2026-06-12 13:29:10.8546 -0700", "incident" : "8F871759-8566-49DE-A6F9-EE73128BB836", "bug_type" : "309", "pid" : 44241, "procExitAbsTime" : 102752878214260, "cpuType" : "X86-64", "procName" : "Safari", "procPath" : "/Applications/Safari.app/Contents/MacOS/Safari", "bundleInfo" : {"CFBundleShortVersionString":"17.6","CFBundleVersion":"17618.3.11.11.7","CFBundleIdentifier":"com.apple.Safari"}, "buildInfo" : {"ProjectName":"Safari","SourceVersion":"7618003011011007","ProductBuildVersion":"618G22","BuildVersion":"12"}, "storeInfo" : {"deviceIdentifierForVendor":"28124F28-A4EB-556C-A50C-D710162ABDA6","thirdParty":true}, "parentProc" : "launchd", "parentPid" : 1, "coalitionName" : "com.apple.Safari", "crashReporterKey" : "134BE33B-9612-8725-73E0-95998174507F", "wakeTime" : 67008, "sleepWakeUUID" : "F942DC6A-04DF-4EE2-AA9F-DB3EDCB24AC3", "sip" : "enabled", "isCorpse" : 1, "exception" : {"codes":"0x0000000000000002, 0x00007ff7b77d1ff8","rawCodes":[2,140701912080376],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_PROTECTION_FAILURE at 0x00007ff7b77d1ff8"}, "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":44241}, "usedImages" : [ { "size" : 0, "source" : "A", "base" : 0, "uuid" : "00000000-0000-0000-0000-000000000000" } ], "sharedCache" : { "base" : 140703277129728, "size" : 19331678208, "uuid" : "246818c3-4b9f-3462-bcaf-fdf71975e5fe" }, "legacyInfo" : { "threadHighlighted" : 0 }, "trialInfo" : { "rollouts" : [ { "rolloutId" : "61301e3a61217b3110231469", "factorPackIds" : { "SIRI_FIND_MY_CONFIGURATION_FILES" : "652886aa2c02f032beae8316" }, "deploymentId" : 240000028 }, { "rolloutId" : "5ffde50ce2aacd000d47a95f", "factorPackIds" : { }, "deploymentId" : 240000550 } ], "experiments" : [ ] }, "reportNotes" : [ "dyld_process_info_create failed with 5", "Failed to create CSSymbolicatorRef - corpse still valid ¯\(ツ)_/¯", "thread_get_state(PAGEIN) returned 0x10000003: (ipc/send) invalid destination port", "thread_get_state(EXCEPTION) returned 0x10000003: (ipc/send) invalid destination port", "thread_get_state(FLAVOR) returned 0x10000003: (ipc/send) invalid destination port" ] } Any help would be greatly appreciated!
2
0
983
Jun ’26
Supported way for iOS Safari Web Extension to hand off captured data to containing app for processing?
In 2018, Apple staff noted that Safari App Extensions had no direct API to communicate with the containing app, and suggested app groups or opening a custom URL scheme as workarounds. On iOS Safari Web Extensions, app groups work for persistence, but opening the containing app from the native extension/background flow does not appear reliable. iOS launch policy seems to require a direct user gesture, and I have not found a documented way for the extension flow to reliably continue into the containing app. Is there a supported iOS architecture for completing an extension-initiated workflow in the containing app, or is the intended model to persist data and require the user to manually open the app? My current architecture is: JavaScript in the Safari Web Extension extracts article content from the page. The native Extension Handler receives that content via native messaging. The Extension Handler writes an encoded request into the App Group container. The containing app watches the App Group container using DispatchSource.makeFileSystemObjectSource and processes new requests. This works on macOS. It also works on iOS when the containing app is already running. The problem is that on iOS, if the containing app is not already running, there is no app process to observe the filesystem event or process the request. I have tried treating the Extension Handler as the place to do more work, but in practice it seems suited only for short-lived relay/persistence work. It is not a reliable place for my app’s main processing pipeline, which includes rendering article content and uploading it to a third-party service. My app is a Safari-native “read later” style tool that uploads simplified articles to the reMarkable Cloud. The containing app contains most of the functionality: SwiftUI UI, WebKit/WebPage rendering, account/cloud logic, and upload orchestration. The Safari extension captures the article, but the app needs to run to complete the user-visible workflow. From a user’s perspective, tapping the Safari extension toolbar button is the action that initiates the workflow. Is there any supported way for that user-initiated extension action to launch or wake the containing iOS app so it can process pending App Group requests? Or should Safari Web Extensions on iOS be designed only to persist work and then ask the user to manually open the containing app? If manual app launch is the intended model, it would be helpful for the documentation to state this explicitly. The current tripartite model strongly suggests that the JavaScript extension, native handler, and containing app can collaborate as parts of one workflow, but on iOS the containing app appears to be available only out-of-band unless already running.
0
0
402
Jun ’26
Is there a public API or entitlement for a user-controlled Apple Pencil annotation overlay across iPadOS apps?
Hello, I am exploring an iPadOS product idea for Apple Pencil users and would like to understand the current public API boundary. The user need is a temporary, user-controlled Apple Pencil annotation layer while the user is working in another app or workspace. For example, a student may be reading in Books, Safari, a PDF app, or another educational app and want to write quick Pencil notes directly over the visible material without taking a screenshot or exporting the content first. I understand that PencilKit works inside an app's own UI, and I also understand that iPadOS sandboxing prevents third-party apps from inspecting or modifying other apps. I am not trying to bypass that model. What I am trying to determine is: Is there any current public API, extension point, or entitlement that allows a user-initiated Apple Pencil overlay session across the current iPadOS workspace? If not, is Feedback Assistant the right place to request a new PencilKit / iPadOS entitlement for this use case? Are there existing Apple-recommended patterns for this workflow beyond Quick Note, Screenshot Markup, Split View, Stage Manager, or importing content into the developer's own app? The privacy model I have in mind would be strict: The overlay is user initiated only. A visible system indicator is shown while active. The developer app receives Pencil stroke data only by default. The app cannot inspect the underlying app's view hierarchy, documents, text, or private data. Screen pixels are not captured unless the user grants separate explicit permission. The user can close or clear the overlay at any time. The closest mental model is a system-mediated Pencil annotation layer, not a background screen recorder or a way to control another app. If this is not possible today with public APIs, I would appreciate confirmation so I can file a clear enhancement request through Feedback Assistant. I also filed this as Feedback Assistant report FB23067750. Thank you.
1
0
356
Jun ’26
Unable to Provision Payment pass to Apple Wallet via Wallet Extensions.
We are working with two types of wallet passes. Provisioning works successfully for one pass type via wallet extensions, but the same process is not functioning for the other. For the second pass type, we are able to generate the required data for pull provisioning and send it to Apple. Additionally, in-app push provisioning for this pass type completes without issue. We would appreciate guidance on how to further debug and resolve this provisioning problem.
1
0
594
Jun ’26
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
316
Activity
2d
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
61
Activity
3d
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
99
Activity
3d
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
2
Boosts
2
Views
394
Activity
1w
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
198
Activity
1w
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
1.8k
Activity
1w
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
200
Activity
2w
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
206
Activity
2w
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
203
Activity
2w
Can I declare my Share Extension can activate with an infinite number of images?
I am writing a share extension for my app so users can share images from other apps. I have added the NSExtensionActivationSupportsImageWithMaxCount key to the NSExtensionActivationRule dictionary but I am wondering if there is a way to define the activation rule to say I will accept any number of images, and not have it constrained by a maximum value. Looking at the documentation I've noticed that attachments seem to be the only option that defines a minimum count (NSExtensionActivationSupportsAttachmentsWithMinCount). Is there an undocumented equivalent for images or some particular combination to use? I know I could set the max to be some very high number like 999, but I'm just wondering if there is an "official" supported way to achieve a min count defined on the extensions rules.
Replies
0
Boosts
0
Views
217
Activity
2w
Can LPLinkMetadata be accessed from NSExtensionContext for my share extension
In the WWDC19 session "Embedding and Sharing Visually Rich Links" it mentions how the Messages app is able to gain access to the LPLinkMetadata provided to the Share Sheet (direct time link) so that it does not have to load the metadata itself. Looking through the NSExtensionContext's inputItems in my share extension and I could not see anything obvious that would allow my own share extension to read the loaded metadata. Am I missing something or is the metadata not made available? To be clear, I am aware of how to use LPMetadataProvider to fetch the metadata. I just want to know if my share extension can make use of the metadata that the Share Sheet has already loaded.
Replies
0
Boosts
0
Views
234
Activity
2w
`LockedCameraCaptureManager` practically unusable since iOS 26
Somewhere since iOS 26, the LockedCameraCapture framework gets in an unpredictable state after opening the main app from the LockedCamera extension using LockedCameraCaptureSession.openApplication(for userActivity:). (Feedback with sample code to reproduce: FB21966835) Opening the extension from the lock screen again doesn’t open the extension but puts the lock screen in a state as if it has. Content updated from LockedCameraCaptureManager.shared.sessionContentUpdates comes in inconsistently, usually needs the app to be opened again or the extension to be opened. This makes using this extension impossible for me as I use it to record video files that manually need to be imported when the app is launched (so not through PhotoKit). Does anybody have a suggestion to circumvent this issue or how to get this fixed?
Replies
1
Boosts
2
Views
709
Activity
2w
Safari Extension Service Worker not working until page reload
Hello, I am developing a Safari extension that uses service workers and all works well. When the extension is updated, a new content script is injected into the current open tabs however the service worker connection with the new content script does not get established. I confirmed both the old content script and new one is on the page, but the new one just doesn't execute which means it will not connect to the service worker. In Chrome a newly injected content script does work and in FireFox it is handled by FireFox automatically. How can this be done in Safari? Any help would be appreciated.
Replies
1
Boosts
0
Views
543
Activity
3w
I want to measure the time my smartphone has been turned off.
These days, we live our lives completely surrounded by and immersed in smartphones. It seems there isn't a single person among us who isn't. This is because we can find all kinds of information, meet friends, and enjoy our leisure time on our smartphones. However, there is one thing we are overlooking. It is the emotion you will feel toward the people around you as you die on the day you come to pass away. What is that emotion? It is regret. That regret is likely the longing to enjoy physical intimacy, conversation, travel, and everyday life more. That is why I am developing an app with a special feature. I am developing an app that helps users self-regulate and maintain moderation in their smartphone usage—something we are addicted to and love so much, yet often fail to realize that it is poison. This app is designed to encourage mutual moderation and provide rewards. Ironically, this app is designed to operate on the smartphone itself. The reason is that if the smartphone is a tiger's den, then to catch the tiger, one must enter the tiger's den. While conceptualizing and proceeding with development, I encountered a completely insurmountable wall. This is because the iPhone cannot accurately measure the screen-off time. I earnestly hope that if there is a team or developer working on the iPhone framework, you can resolve this issue. If you can extend the extension or take measures to allow access to that data within the SDK, I believe I will be able to complete this app. I look forward to your help.
Replies
0
Boosts
0
Views
232
Activity
3w
Entitlement for extension to have read-only access to host's task?
Hi all, I'm building an iOS app extension using ExtensionKit that works exclusively with its containing host app, presenting UI via EXHostViewController. I'd like the extension to have read-only access to the host's task for process introspection purposes. I'm aware this would almost certainly require a special entitlement. I know get-task-allow and the debugger entitlement exist, but those aren't shippable to the App Store. I'm looking for something that could realistically be distributed to end users. My questions: Does an entitlement exist (or is one planned) that would grant an extension limited, read-only access to its host's task—given the extension is already tightly coupled to the host? If not, is this something Apple would consider adding? The use case is an extension that needs to inspect host process state without the ability to modify it. Is there a path to request such an entitlement through the provisioning profile process, or is this fundamentally off the table for App Store distribution? It seems like a reasonable trust boundary given the extension already lives inside the host's app bundle, but I understand the security implications. Any insight appreciated. Thanks!
Replies
11
Boosts
0
Views
1.4k
Activity
Jun ’26
Camera doesn't work inside the iOS Captive Network Assistant — by design?
I'm building a Wi-Fi captive portal (web page) that needs the camera to scan a boarding-pass barcode. Inside the iOS Captive Network Assistant (the sign-in pop-up that appears when you join Wi-Fi): getUserMedia() (live camera) doesn't work, and <input type="file" capture="environment"> opens only the photo library, not the camera. The same page works fine in full Safari on the same iPhone. Is camera access intentionally blocked in the CNA, or is there a supported way to use it? Has anyone gotten the camera working inside the captive portal on iOS? Thanks!
Replies
1
Boosts
0
Views
475
Activity
Jun ’26
Safari 17.6 (17618.3.11.11.7, 17618) Crashes on Attempt to Run Extension in Developer Mode
Hi, I'm trying to test out an extension I'm building in Xcode and every time I try to test it, Safari crashes immediately. On later versions of Mac OS, e.g. Sequoia, there's no problem. I'm building this extension as part of a Mac Catalyst app that is a hybrid iPad/Mac OS app. On Safari 26.3 (20623.2.7.18.1) I can just add the source tree as a temporary extension and it works fine. But the .appex file for the same thing is causing the older Safari 17.6 (17618.3.11.11.7, 17618) to throw a fit. Trying to get through this with LLMs has focused on whether the extension target is for iOS and Mac OS or just Mac OS alone, and futzing with UIDeviceFamily the Build Settings. But basically it just doesn't work no matter what I do, and Safari shouldn't crash. Here's the .appex's Info.plist after compilation: % defaults read /Users/[username]/Library/Developer/Xcode/DerivedData/PlainSite-[gibberish]/Build/Products/Debug-maccatalyst/PlainSite.app/Contents/PlugIns/PlainSiteRecycler.appex/Contents/Info.plist { BuildMachineOSBuild = 21H1320; CFBundleIdentifier = "com.thinkcomputer.[product].[extension]"; CFBundleShortVersionString = "1.0"; CFBundleSupportedPlatforms = ( MacOSX ); CFBundleVersion = 2; DTCompiler = "com.apple.compilers.llvm.clang.1_0"; DTPlatformBuild = 14C18; DTPlatformName = macosx; DTPlatformVersion = "13.1"; DTSDKBuild = 22C55; DTSDKName = "macosx13.1"; DTXcode = 1420; DTXcodeBuild = 14C18; LSMinimumSystemVersion = "12.0"; NSExtension = { NSExtensionAttributes = { SafariWebExtensionPath = src; }; NSExtensionPointIdentifier = "com.apple.Safari.web-extension"; NSExtensionPrincipalClass = "PlainSiteRecycler.SafariWebExtensionHandler"; }; UIDeviceFamily = ( 2, 6 ); } Crash log: Hardware Model: MacBookPro12,1 Process: Safari [44241] Path: /Applications/Safari.app/Contents/MacOS/Safari Identifier: com.apple.Safari Version: 17.6 (17618.3.11.11.7) Code Type: X86-64 (Native) Role: Background Parent Process: launchd [1] Coalition: com.apple.Safari [1098] Date/Time: 2026-06-12 13:29:10.8546 -0700 Launch Time: 2026-06-12 13:27:27.7047 -0700 OS Version: macOS 12.7.6 (21H1320) Release Type: User Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_PROTECTION_FAILURE at 0x00007ff7b77d1ff8 Exception Codes: 0x0000000000000002, 0x00007ff7b77d1ff8 VM Region Info: 0x7ff7b77d1ff8 is in 0x7ff7b3fd2000-0x7ff7b77d2000; bytes after start: 58720248 bytes before end: 7 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL MALLOC_SMALL 7fa313000000-7fa313800000 [ 8192K] rw-/rwx SM=PRV GAP OF 0x54a07d2000 BYTES ---> STACK GUARD 7ff7b3fd2000-7ff7b77d2000 [ 56.0M] ---/rwx SM=NUL ... for thread 0 Stack 7ff7b77d2000-7ff7b7fd2000 [ 8192K] rw-/rwx SM=PRV thread 0 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: SIGNAL 11 Segmentation fault: 11 Terminating Process: exc handler [44241] Highlighted by Thread: 0 Backtrace not available No thread state (register information) available Binary Images: 0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ??? Error Formulating Crash Report: dyld_process_info_create failed with 5 Failed to create CSSymbolicatorRef - corpse still valid ¯_(ツ)/¯ thread_get_state(PAGEIN) returned 0x10000003: (ipc/send) invalid destination port thread_get_state(EXCEPTION) returned 0x10000003: (ipc/send) invalid destination port thread_get_state(FLAVOR) returned 0x10000003: (ipc/send) invalid destination port EOF Full Report {"app_name":"Safari","timestamp":"2026-06-12 13:29:12.00 -0700","app_version":"17.6","slice_uuid":"af2262af-647d-3262-adc8-e52c3ef7579e","build_version":"17618.3.11.11.7","platform":0,"bundleID":"com.apple.Safari","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.7.6 (21H1320)","incident_id":"8F871759-8566-49DE-A6F9-EE73128BB836","name":"Safari"} { "uptime" : 100000, "procLaunch" : "2026-06-12 13:27:27.7047 -0700", "procRole" : "Background", "version" : 2, "userID" : 503, "deployVersion" : 210, "modelCode" : "MacBookPro12,1", "procStartAbsTime" : 102649791496150, "coalitionID" : 1098, "osVersion" : { "train" : "macOS 12.7.6", "build" : "21H1320", "releaseType" : "User" }, "captureTime" : "2026-06-12 13:29:10.8546 -0700", "incident" : "8F871759-8566-49DE-A6F9-EE73128BB836", "bug_type" : "309", "pid" : 44241, "procExitAbsTime" : 102752878214260, "cpuType" : "X86-64", "procName" : "Safari", "procPath" : "/Applications/Safari.app/Contents/MacOS/Safari", "bundleInfo" : {"CFBundleShortVersionString":"17.6","CFBundleVersion":"17618.3.11.11.7","CFBundleIdentifier":"com.apple.Safari"}, "buildInfo" : {"ProjectName":"Safari","SourceVersion":"7618003011011007","ProductBuildVersion":"618G22","BuildVersion":"12"}, "storeInfo" : {"deviceIdentifierForVendor":"28124F28-A4EB-556C-A50C-D710162ABDA6","thirdParty":true}, "parentProc" : "launchd", "parentPid" : 1, "coalitionName" : "com.apple.Safari", "crashReporterKey" : "134BE33B-9612-8725-73E0-95998174507F", "wakeTime" : 67008, "sleepWakeUUID" : "F942DC6A-04DF-4EE2-AA9F-DB3EDCB24AC3", "sip" : "enabled", "isCorpse" : 1, "exception" : {"codes":"0x0000000000000002, 0x00007ff7b77d1ff8","rawCodes":[2,140701912080376],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_PROTECTION_FAILURE at 0x00007ff7b77d1ff8"}, "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":44241}, "usedImages" : [ { "size" : 0, "source" : "A", "base" : 0, "uuid" : "00000000-0000-0000-0000-000000000000" } ], "sharedCache" : { "base" : 140703277129728, "size" : 19331678208, "uuid" : "246818c3-4b9f-3462-bcaf-fdf71975e5fe" }, "legacyInfo" : { "threadHighlighted" : 0 }, "trialInfo" : { "rollouts" : [ { "rolloutId" : "61301e3a61217b3110231469", "factorPackIds" : { "SIRI_FIND_MY_CONFIGURATION_FILES" : "652886aa2c02f032beae8316" }, "deploymentId" : 240000028 }, { "rolloutId" : "5ffde50ce2aacd000d47a95f", "factorPackIds" : { }, "deploymentId" : 240000550 } ], "experiments" : [ ] }, "reportNotes" : [ "dyld_process_info_create failed with 5", "Failed to create CSSymbolicatorRef - corpse still valid ¯\(ツ)_/¯", "thread_get_state(PAGEIN) returned 0x10000003: (ipc/send) invalid destination port", "thread_get_state(EXCEPTION) returned 0x10000003: (ipc/send) invalid destination port", "thread_get_state(FLAVOR) returned 0x10000003: (ipc/send) invalid destination port" ] } Any help would be greatly appreciated!
Replies
2
Boosts
0
Views
983
Activity
Jun ’26
Supported way for iOS Safari Web Extension to hand off captured data to containing app for processing?
In 2018, Apple staff noted that Safari App Extensions had no direct API to communicate with the containing app, and suggested app groups or opening a custom URL scheme as workarounds. On iOS Safari Web Extensions, app groups work for persistence, but opening the containing app from the native extension/background flow does not appear reliable. iOS launch policy seems to require a direct user gesture, and I have not found a documented way for the extension flow to reliably continue into the containing app. Is there a supported iOS architecture for completing an extension-initiated workflow in the containing app, or is the intended model to persist data and require the user to manually open the app? My current architecture is: JavaScript in the Safari Web Extension extracts article content from the page. The native Extension Handler receives that content via native messaging. The Extension Handler writes an encoded request into the App Group container. The containing app watches the App Group container using DispatchSource.makeFileSystemObjectSource and processes new requests. This works on macOS. It also works on iOS when the containing app is already running. The problem is that on iOS, if the containing app is not already running, there is no app process to observe the filesystem event or process the request. I have tried treating the Extension Handler as the place to do more work, but in practice it seems suited only for short-lived relay/persistence work. It is not a reliable place for my app’s main processing pipeline, which includes rendering article content and uploading it to a third-party service. My app is a Safari-native “read later” style tool that uploads simplified articles to the reMarkable Cloud. The containing app contains most of the functionality: SwiftUI UI, WebKit/WebPage rendering, account/cloud logic, and upload orchestration. The Safari extension captures the article, but the app needs to run to complete the user-visible workflow. From a user’s perspective, tapping the Safari extension toolbar button is the action that initiates the workflow. Is there any supported way for that user-initiated extension action to launch or wake the containing iOS app so it can process pending App Group requests? Or should Safari Web Extensions on iOS be designed only to persist work and then ask the user to manually open the containing app? If manual app launch is the intended model, it would be helpful for the documentation to state this explicitly. The current tripartite model strongly suggests that the JavaScript extension, native handler, and containing app can collaborate as parts of one workflow, but on iOS the containing app appears to be available only out-of-band unless already running.
Replies
0
Boosts
0
Views
402
Activity
Jun ’26
Is there a public API or entitlement for a user-controlled Apple Pencil annotation overlay across iPadOS apps?
Hello, I am exploring an iPadOS product idea for Apple Pencil users and would like to understand the current public API boundary. The user need is a temporary, user-controlled Apple Pencil annotation layer while the user is working in another app or workspace. For example, a student may be reading in Books, Safari, a PDF app, or another educational app and want to write quick Pencil notes directly over the visible material without taking a screenshot or exporting the content first. I understand that PencilKit works inside an app's own UI, and I also understand that iPadOS sandboxing prevents third-party apps from inspecting or modifying other apps. I am not trying to bypass that model. What I am trying to determine is: Is there any current public API, extension point, or entitlement that allows a user-initiated Apple Pencil overlay session across the current iPadOS workspace? If not, is Feedback Assistant the right place to request a new PencilKit / iPadOS entitlement for this use case? Are there existing Apple-recommended patterns for this workflow beyond Quick Note, Screenshot Markup, Split View, Stage Manager, or importing content into the developer's own app? The privacy model I have in mind would be strict: The overlay is user initiated only. A visible system indicator is shown while active. The developer app receives Pencil stroke data only by default. The app cannot inspect the underlying app's view hierarchy, documents, text, or private data. Screen pixels are not captured unless the user grants separate explicit permission. The user can close or clear the overlay at any time. The closest mental model is a system-mediated Pencil annotation layer, not a background screen recorder or a way to control another app. If this is not possible today with public APIs, I would appreciate confirmation so I can file a clear enhancement request through Feedback Assistant. I also filed this as Feedback Assistant report FB23067750. Thank you.
Replies
1
Boosts
0
Views
356
Activity
Jun ’26
Unable to Provision Payment pass to Apple Wallet via Wallet Extensions.
We are working with two types of wallet passes. Provisioning works successfully for one pass type via wallet extensions, but the same process is not functioning for the other. For the second pass type, we are able to generate the required data for pull provisioning and send it to Apple. Additionally, in-app push provisioning for this pass type completes without issue. We would appreciate guidance on how to further debug and resolve this provisioning problem.
Replies
1
Boosts
0
Views
594
Activity
Jun ’26