According to the release notes for macOS Tahoe 26.4 beta, a warning dialog should appear when launching apps that require Rosetta 2, informing users that these apps will stop working in a future macOS release.
However, on my MacBook Air M1 running Tahoe 26.4 Beta 4 (25E5233c), no such warning appears when launching Intel (x86_64) apps.
Test case: VLC media player
Downloaded from the official VLC website: https://www.videolan.org/vlc/
Selected the Intel 64-bit version (vlc-3.0.21-intel64.dmg)
Copied VLC.app to /Applications
Code signature verified:
Identifier: org.videolan.vlc
Format: Mach-O thin (x86_64)
Team ID: 75GAHG3SZQ
Timestamp: June 2024
Flags: hardened runtime
Notarization: accepted (Notarized Developer ID)
spctl --assess --verbose /Applications/VLC.app
→ accepted, source=Notarized Developer ID
Launched VLC.app — no Rosetta deprecation warning appeared
System log findings:
The following entry was repeated many times in the system log:
Sandbox: oahd-helper deny(1) file-read-data /usr/libexec/rosetta/oahd-helper
This suggests that oahd-helper is being blocked by the Sandbox from reading its own binary, which may be preventing the warning dialog from appearing.
My questions:
Is this a known bug in Beta 4?
Does the absence of a warning mean the app will continue to work in macOS 28 and beyond?
Should I file a Feedback report for this?
Any insights would be appreciated. Thank you.
Environment:
Device: MacBook Air 2020 M1
OS: macOS Tahoe 26.4 Beta 4 (25E5233c)
Test app: VLC 3.0.21 Intel 64-bit (org.videolan.vlc, Team ID: 75GAHG3SZQ)
Source: https://www.videolan.org/vlc/
Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
I'm running into a problem in my attempt to clear CKAssets on the iCloud server. The documentation for CKAsset says:
If you no longer require an asset that’s on the server, you don’t delete it. Instead, orphan the asset by setting any fields that contain the asset to nil and then saving the record. CloudKit periodically deletes orphaned assets from the server.
I'm deleting image file assets which are properties on an ImageReference type (largeImage and thumbNailImage properties). When I delete an image, I am setting those properties to nil and sending the record for the ImageReference to iCloud using the async CKDatabase.modifyRecords method.
This always results in an error: <CKError 0x600000d92a60: "Asset File Not Found" (16/3002); "open error: 2 (No such file or directory)">
And of course the assets still appear in the CloudKit dashboard.
What is the proper way of orphaning the assets on the CloudKit server?
We are using BGContinuedProcessingTask on iOS 26 for long-running background video compression and upload.
This work usually takes about 30 minutes to 1 hour. In testing on physical devices, expirationHandler is invoked irregularly. In some cases, it seems like it is caused by total task duration, and in other cases, it seems related to system resource conditions such as CPU, memory, or battery. However, even after many experiments, we have not been able to find a clear or consistent pattern.
The important problem for us is that we cannot tell why expirationHandler was called. From the app’s perspective, we need to handle the following cases differently:
the user taps Stop in the Live Activity
the system expires the task due to time expiration
the task is terminated due to system resource pressure (CPU, memory, battery, etc.)
other system-driven termination cases
However, at the moment, it is difficult or practically impossible to distinguish these cases reliably.
My questions are:
In the context of BGContinuedProcessingTask, is it correct to think that expirationHandler may be triggered by reasons such as time expiration, system resource pressure, and user stop?
If so, is there any official or supported way for the app to distinguish between these reasons?
For long-running work such as video compression and upload, is it expected behavior that expirationHandler is invoked irregularly?
If BGContinuedProcessingTask is not a stable approach for 30-minute to 1-hour background work, is there any other recommended or more reliable way to perform this kind of long-running background processing on iOS without unexpected interruption?
Environment: iOS 26, physical device
We are using BGContinuedProcessingTask on iOS 26 for long-running background video compression and upload.
This work usually takes about 30 minutes to 1 hour. In testing on physical devices, expirationHandler is invoked irregularly. In some cases, it seems like it is caused by total task duration, and in other cases, it seems related to system resource conditions such as CPU, memory, or battery. However, even after many experiments, we have not been able to find a clear or consistent pattern.
The important problem for us is that we cannot tell why expirationHandler was called. From the app’s perspective, we need to handle the following cases differently:
• the user taps Stop in the Live Activity
• the system expires the task due to time expiration
• the task is terminated due to system resource pressure (CPU, memory, battery, etc.)
• other system-driven termination cases
However, at the moment, it is difficult or practically impossible to distinguish these cases reliably.
My questions are:
1. In the context of BGContinuedProcessingTask, is it correct to think that expirationHandler may be triggered by reasons such as time expiration, system resource pressure, and user stop?
2. If so, is there any official or supported way for the app to distinguish between these reasons?
3. For long-running work such as video compression and upload, is it expected behavior that expirationHandler is invoked irregularly?
4. If BGContinuedProcessingTask is not a stable approach for 30-minute to 1-hour background work, is there any other recommended or more reliable way to perform this kind of long-running background processing on iOS without unexpected interruption?
Environment: iOS 26, physical device
I have a watchOS WidgetKit complication that needs the user's location to show the nearest transit station, but the widget never gets location permission and CLLocationManager times out.
Setup:
NSWidgetWantsLocation = YES in Widget Extension's Info.plist
NSLocationWhenInUseUsageDescription and NSLocationAlwaysAndWhenInUseUsageDescription in Widget Extension's Info.plist
Watch App successfully has location authorization
Problem:
The system never presents a location permission prompt for my widget. Apple's own World Clock widget does get one on watchOS (see screenshot) — I can't figure out what triggers it.
When the widget tries to get location via CLLocationManager, the request times out and never returns a location.
Questions:
What triggers the system location prompt for a watchOS widget? Is NSWidgetWantsLocation sufficient or is something else required?
Why would CLLocationManager time out and never return a location inside a widget extension? Is there a specific pattern required for requesting location in a WidgetKit timeline provider?
Screenshots
Sorry for swedish, but it says "Do you allow widgets from World Clock to use your location services?"
Topic:
App & System Services
SubTopic:
Widgets & Live Activities
Tags:
WatchKit
watchOS
Core Location
WidgetKit
Hi everyone,
We are currently working on improving our subscription backend integration with Apple’s App Store Server API and StoreKit, and had a few questions around StoreKit 1 vs StoreKit 2 behavior and server-to-server notifications.
Looking for clarification on the following points:
/inApps/v1/subscriptions/{originalTransactionId} response compatibility
Does the App Store Server API endpoint /inApps/v1/subscriptions/{originalTransactionId} return consistent response structures for subscriptions created via StoreKit 1 and StoreKit 2, or are there any differences we should account for when parsing the response?
Transaction format in S2S notifications for StoreKit 1 purchases
If a user initially purchases a subscription using StoreKit 1, and the subscription renews later, what transaction format is sent in server-to-server notifications?
Does Apple still maintain StoreKit 1 style transaction payloads, or
Are they converted into StoreKit 2–style signed transactions?
Validation of signedTransactionInfo and signedRenewalInfo
In App Store Server Notifications V2, the payload includes signedTransactionInfo and signedRenewalInfo.
Is there an official Apple API endpoint that can be used to validate these tokens?
Offer / coupon identification from S2S notifications
Can server-to-server notifications reliably indicate which offer was applied (intro offer, promotional offer, or offer code)?
If yes, which fields in the transaction payload should be used to identify this?
Trial period identification in StoreKit 2
In StoreKit 1, the field is_trial_period was commonly used to detect free trials.
Since this is deprecated in StoreKit 2, which field or transaction property should be used to identify whether a purchase corresponds to a trial period?
Topic:
App & System Services
SubTopic:
StoreKit
I am building an automation using Shortcuts. The shortcut reads text from my Notes, sends it to Apple Intelligence, converts the result into dictionary values, and then saves those values into a Numbers sheet by adding rows through a form.
The problem is that when the automation processes multiple lines and adds multiple rows, the Numbers app opens every time a row is added.
I would like this process to run automatically at a scheduled time without opening the Numbers app repeatedly on my iPhone.
Is there a way to update the Numbers sheet in the background without launching the Numbers app?
Please let me know if there is a solution.
Topic:
App & System Services
SubTopic:
Automation & Scripting
Hi,
I’m building an iOS app called SocialLite using Apple’s Screen Time APIs, primarily FamilyControls and ManagedSettings.
My goal is to block access to the Instagram app itself, while still allowing the user to receive and see Instagram notifications.
Right now, when I apply the shield/block using the Screen Time API, the Instagram app is blocked as expected, but its notifications also appear to be blocked/suppressed at the same time.
What I’m trying to achieve:
Block the Instagram app from being opened
Still allow Instagram notifications to come through normally
Current behavior:
The app is blocked
Notifications are also blocked or no longer visible
My question:
Is there any supported way with Apple’s Screen Time API / ManagedSettings to shield or block an app while still allowing that app’s notifications?
Or are app access and notifications tied together by design when a shield is applied?
If this behavior is expected, I’d appreciate confirmation from Apple or guidance on whether there is another supported approach.
Thanks.
Hello,
Can someone please tell me why the unlock button was unresponsive when tapped? The restore button worked.
if let price = store.product?.displayPrice {
Text(price)
.font(.title2.bold())
.padding(.top, 4)
}
Button {
Task {
await store.purchase()
}
} label: {
ZStack {
if store.isLoading {
ProgressView()
.tint(.white)
} else {
Text("paywall.buy")
.font(.headline)
}
}
.frame(maxWidth: .infinity)
.padding()
}
.background(.blue)
.foregroundStyle(.white)
.clipShape(RoundedRectangle(cornerRadius: 14))
.disabled(store.product == nil || store.isLoading)
Button {
Task {
await store.restorePurchases()
}
} label: {
Text("paywall.restore")
}
Topic:
App & System Services
SubTopic:
StoreKit
Hello,
I'm trying to develop a driver that uses PCIe through the mac's thunderbold ports. I requested a PCI entitlement, and it's just an empty array in the entitlements file by default. I was wondering if the vendor ID submitted with my entitlement request is supposed to populate this dictionary? I'm currently getting an entitlement check failed from kernel: DK: IOUserServer and was unsure if the PCI entitlement configuration was incorrect.
Default entitlement:
<key>com.apple.developer.driverkit.transport.pci</key>
<array>
</array>
I'd be happy to provide more information as needed, but any guidance would be much appreciated.
Thanks in advance.
We already have an apple pay integration with a psp.
We have a merchant id with an identity certificate, a processing certificate and merchant domains.
We are working to integrate an other psp. This psp have one csr (processing certificate) by customer. All the payment will be processed on the same domain.
We have understood that it is not possible to have different processing certificates for a merchant id. So we can not reused our existing merchant id.
On the other hand, it seems that it is not possible to have different merchant ids on the same domain (because of the domain verification). But all payments are processed on the same domain.
Do you think there is a solution ?
Is there a recommended workaround for this scenario?
Topic:
App & System Services
SubTopic:
Apple Pay
We are building an AI-powered smart glasses companion app, similar to Meta Ray-Ban.
We want to provide true hands-free calling support.
Right now, whenever the app tries to dial a native cellular call, iOS shows a confirmation screen that requires the user to tap to start the call.
If the user always has to confirm/tap on the phone screen, there is no real point in using smart glasses for making calls.
How can we initiate a native outgoing call without any confirmation dialog or extra tap, exactly like Siri does it, or like the Meta Ray-Ban glasses do when the user says “Hey Meta, call [name]”
Please guide us on the correct APIs, entitlements, or integration path to achieve this behavior.
Thank you.
Topic:
App & System Services
SubTopic:
General
Tags:
Accessories
Siri and Voice
Core Bluetooth
App Intents
I have a messaging app that has been working successfully for several years. It still works for most users, but about one month ago one of my users started experiencing issues receiving notifications.
From my investigation, the user's Notification Service Extension (NSE) has not been triggered since they started reporting the issue.
I was able to access the user's phone and connected it to the console to check for any logs related to the NSE being triggered or a push notification being received, but there were no relevant logs.
I have already verified that notifications are enabled for the app and that Do Not Disturb is not active.
I also tried sending a test notification using the CloudKit Console. The notification was successfully delivered to other push notification tokens, but it did not work for this specific device’s token. I have also confirmed that the push token on the server matches the one on the device and that it is being used with the APNs production environment.
The issue for this user started in iOS version 26.2 and are still ongoing in version 26.3.1 .
Has anyone encountered a similar issue or have suggestions on how to further diagnose this?
Hi
Writing an app in Swift on Xcode for my iPhone, all software is the latest version.
If after making a minor change and re-building all the application data has disappeared, is there a way to see if it is still in the .modelContainer and just not showing up?
Hello,
We are facing an issue with In-App Purchases (subscriptions) in two iOS apps built with React Native + react-native-iap.
Issue
Some users receive the error:
E_CONNECTION_CLOSED
during the purchase flow.
However:
The payment is successfully deducted via the App Store.
The subscription appears in the user's Apple ID subscription list.
But on our side:
The app does not receive the StoreKit transaction callback
No receipt or transaction ID is delivered
Our backend cannot validate the purchase.
Restore Purchases
When affected users try Restore Purchases, StoreKit returns:
No purchases found
even though the subscription is visible in their Apple ID.
Most affected users are from India, and many payments are made via UPI through App Store billing.
Has anyone experienced a case where:
the user is charged
the subscription exists in Apple ID
but StoreKit never returns the transaction or receipt?
Any suggestions on how to recover these transactions would be greatly appreciated.
Thanks!
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit
In-App Purchase
App Store Receipts
In iOS 26.4 beta 4, the receipt returned by StoreKit payments via [[NSBundle mainBundle] appStoreReceiptURL] corresponds to the previous transaction; the content only becomes correct after restarting the app.
Hello I have implemented URL Filter using below sample link
https://developer.apple.com/documentation/networkextension/filtering-traffic-by-url
But currently I am facing weird issue when I try to add new urls in the input_urls.txt file. When I add url in the file and execute BloomFilterTool again, it creates new bloom plist as well as server url file so I replaces those manually restart the server as well as reinstall the app, but when I do so I am not able to get new urls blocked by browser until and unless I am not killing browser and relaunching it again. Does anybody facing same kind of issue ?
Hello,
We are facing an issue with In-App Purchases (subscriptions) in two iOS apps built with React Native + react-native-iap.
Issue
Some users receive the error:
E_CONNECTION_CLOSED
during the purchase flow.
However:
The payment is successfully deducted via the App Store.
The subscription appears in the user's Apple ID subscription list.
But on our side:
The app does not receive the StoreKit transaction callback
No receipt or transaction ID is delivered
Our backend cannot validate the purchase.
Restore Purchases
When affected users try Restore Purchases, StoreKit returns:
No purchases found
even though the subscription is visible in their Apple ID.
Most affected users are from India, and many payments are made via UPI through App Store billing.
Has anyone experienced a case where:
*the user is charged *the subscription exists in Apple ID *but StoreKit never returns the transaction or receipt?
Any suggestions on how to recover these transactions would be greatly appreciated.
Thanks!
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit
In-App Purchase
App Store Receipts
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit
In-App Purchase
App Store Receipts
The Numbers.app reopens the last edited document when the app launches.
If the document was moved to another folder in the Files.app while the app was not running, Numbers.app correctly tracks the file and reopens it.
However, if the document was deleted in the Files.app and moved to Recently Deleted, Numbers.app does not reopen the document when the app launches.
Question :
How does Numbers.app detect that a document has been moved to Recently Deleted?
Can third-party apps implement the same behavior?
What I tested :
If a file is moved while the app is not running, resolving a bookmark successfully tracks the moved file.
Files that are deleted via the Files.app appear in Recently Deleted, but those files are actually moved to the following directories:
iCloud Drive
/var/mobile/Library/Mobile Documents/.Trash/
On My iPad
/var/mobile/Containers/Shared/AppGroup/{UUID}/File Provider Storage/.Trash/
App sandbox Documents directory ([On My iPad]/[Any App])
/var/mobile/Containers/Data/Application/{UUID}/Documents/.Trash/
When resolving the bookmark after deletion, the bookmark still resolves successfully and returns the new file URL inside the .Trash directory.
I tried the following checks on the resolved URL:
Checking file existence
Checking read/write accessibility
Inspecting bookmark resolution results
Using APIs related to NSTrashDirectory
See https://developer.apple.com/forums/thread/813329#813329021
All of these behaved the same as when the file was moved to a normal directory. None of these checks allowed me to detect that the file had been deleted.
Additional experiment:
I suspected that the app might simply check whether the path contains ".Trash", so I performed the following experiment.
If a .numbers file is moved to
/var/mobile/Containers/Data/Application/{UUID}/Documents/.Trash/
then
The file appears in Recently Deleted in Files.app
Numbers.app does not reopen the document when the app launches
However, if the same file is moved to
Documents/Trash
Documents/.Trashed
Documents/Any Folder/.Trash
then
The file does not appear in Recently Deleted in Files
Numbers does reopen the document when launched
This suggests that Numbers.app is not simply checking whether the path contains ".Trash".