Posts under App & System Services topic

Post

Replies

Boosts

Views

Activity

New features for APNs token authentication now available
Team-scoped keys introduce the ability to restrict your token authentication keys to either development or production environments. Topic-specific keys in addition to environment isolation allow you to associate each key with a specific Bundle ID streamlining key management. For detailed instructions on accessing these features, read our updated documentation on establishing a token-based connection to APNs.
0
0
4.3k
Feb ’25
Meet State Reporting and the new MetricKit
Hello developers! Thank you for your dedication to creating apps with great performance. We’re excited to kick off another year of partnering with you on improving power and performance in your apps. At WWDC26, check out the following new things in the latest platform SDKs and Xcode 27 beta for performance. You can also join us online for a Power and Performance Group Lab on Tuesday, June 9 at 11 AM Pacific. Meet State Reporting and the new MetricKit State reporting: The new StateReporting framework lets your application express its state to downstream tools like Instruments and MetricKit. Make your telemetry and traces much more useful by adopting this simple API. MetricKit: In the 27 releases, the Swift-first MetricManager API replaces the MXMetricManager API. Combined with State Reporting, the new MetricKit provides more granular metrics to isolate performance problems faster. It also provides a more expressive API that is great to use in Swift, with improved Swift concurrency and Codable support. With this year’s releases, the MXMetricManager API is considered legacy. ▶️ To learn more, watch Meet the new MetricKit. Discover new features in Xcode organizer Metric goals: Xcode organizer now provides a goal metric for Battery Usage, Disk Writes, Hang Rate, Hitches, Memory, and Storage metrics, allowing you to prioritize performance engineering across more areas. Generate recommendations: Quickly resolve the highest impact performance issues in your app by using Generate Recommendations for Crash, Energy, Disk Write, Hang and Launch diagnostics. Insights overview: The new insights overview in Xcode organizer summarizes high-impact performance regressions for metrics and diagnostic reports, helping you plan and prioritize performance engineering work. Storage metrics: Storage metrics are now available in Xcode organizer, allowing you to monitor your app's Documents & Data and App Size across releases and catch regressions in cache usage and bundle size. Hitches metric: The new Hitches metric replaces the Scrolling metric in the organizer and now displays hitches for all animations in your app, giving you a comprehensive view of animation performance. ▶️ To learn more about other advancements in Xcode, watch What’s new in Xcode 27. Improve app responsiveness with Instruments Foundation Models: The Foundation Models instrument is redesigned with a tree view that lets you drill into individual requests, inspecting tool call arguments and results, inference prompts and responses, and token statistics. Use it to understand caching behavior, measure latency, and optimize throughput. System Trace: System calls, VM faults, and thread states are now unified into a single plot, with a new blending algorithm that stays readable even at high density. Once you spot something worth investigating, left/right key navigation lets you follow a thread's activity step by step, and the inspector provides quick actions like pinning the thread that made another thread runnable. System Trace now also draws thread priority and QoS over time, making it easier to identify priority inversions and unexpected QoS degradations that affect responsiveness. Swift Concurrency: New Main Actor and Global Concurrent Executor tracks let you visualize running tasks and executor queue depth over time, making it easier to spot task scheduling delays and actor contention. Tasks are now grouped into collections for faster navigation. Swift Tasks, Actors, and Executors instruments can now surface Call Trees, Flame Graphs, and Top Functions scoped to each entity — so you can pinpoint exactly where concurrency overhead lives. Top Functions: Helper functions and runtime internals can be expensive but hard to spot in a standard call tree. The new aggregation mode in Top Functions surfaces any function's total execution time across the entire call stack, making it easy to identify and prioritize hidden hotspots. Run Comparison: Compare call tree data across builds to identify regressions and performance wins. Results can be explored as an outline, flame graph, or top functions — choose whichever view best fits your workflow. ▶️ To learn more about profiling your app with Instruments, watch “Profile, fix, and verify: Improve app responsiveness with Instruments” ▶️ To learn about Foundation Models optimization, watch “Debug and profile agentic app experiences with Instruments”. If you have any questions about using State Reporting or the new MetricKit, create a post on the forums. For help creating a post, see Tips on writing a forum posts.
0
0
1.8k
Jun ’26
Supported read/write handoff of a sandbox-container PNG to Preview using NSWorkspace
Hello, I am preparing an existing macOS screenshot utility for distribution through the Mac App Store. The app stores captured PNG files under its temporary directory: FileManager.default.temporaryDirectory .appendingPathComponent("ShelfDragPoC/Captures", isDirectory: true) A context-menu "Edit" action passes the original PNG URL to Preview using NSWorkspace. The app does not create an editing copy. Relevant code: import AppKit @MainActor func openInPreview(_ url: URL) { guard let previewURL = NSWorkspace.shared.urlForApplication( withBundleIdentifier: "com.apple.Preview" ) else { return } let configuration = NSWorkspace.OpenConfiguration() configuration.activates = true NSWorkspace.shared.open( [url], withApplicationAt: previewURL, configuration: configuration ) { _, _ in } } The app monitors the original PNG URL for file changes and refreshes its thumbnail when changes are detected. Observed behavior: In the existing non-sandboxed app, rotating an image in Preview updates the original PNG and the thumbnail without requiring Command-S. In the sandboxed validation app, Preview opens the image, but editing results in a separate copy. When closing the edited document, Preview displays a message indicating that the original document will not be changed. The original PNG and the app's thumbnail are not updated. The Preview launch code and file watcher are unchanged between the non-sandboxed and sandboxed versions. The sandboxed app has these entitlements: com.apple.security.app-sandbox com.apple.security.files.user-selected.read-write com.apple.security.files.bookmarks.app-scope The app-scoped bookmark is used for a separate Desktop export feature. The PNG opened in Preview remains in the app's sandbox container. My question: Is there a supported public API that allows a sandboxed Mac App Store app to open its own container-resident PNG in Preview with the permissions required for in-place editing and normal automatic saving? Ideally, the user would only need to select "Edit" once, without an additional file-selection dialog or an explicit Save command. We want to preserve the original PNG URL, keep App Sandbox enabled, and avoid automatically exporting temporary images to the Desktop. If this workflow is not supported, what is Apple's recommended approach? Thank you.
13
0
487
1h
WatchOS 27 throttles BLE discoveries
Hi! We have an app that highly depends on CoreBluetooth including scanning for peripherals with an advertised serviceUUID. Our app sets the CBCentralManagerScanOptionAllowDuplicatesKey flag to true while scanning. Receiving continuous discovery events about nearby devices is key to measure the RSSI before connecting. Updating some of our test devices to watchOS 27 we noticed that our app is broken. To analyze further we created a simple app to compare behavior between watchOS 26 and 27, and the difference is clear. On the 27 device it behaves like the flag is ignored and we only receive a couple of callbacks to centralManager(_:didDiscover:advertisementData:rssi:) then it stops. We could not find any documentation declaring this as a new restriction or something regarding that has changed. Is this a bug, or is there a way to get the old behavior on the new OS? The example app used for testing is available here: https://github.com/levente-gulyas-skidata/WatchBLEExperiments (Change the serviceUUID for testing if needed) Thank you, Levi
3
4
278
3h
APFS directory-entry durability after creating an Application Support subdirectory
On macOS 15.7.2 with a local APFS volume and App Sandbox, which supported filesystem operations and synchronization order make a newly created directory entry and a new database filename durable after an OS crash or sudden power loss? DTS asked me to post this question here for review. This is a design-stage API-contract question, not a report of a reproduced failure. The proposed sequence has not been implemented or tested. I have no focused reproducer, crash report, or power-loss test results for this question. The platform in question is macOS, not iOS. Context The proposed initialization sequence is: Obtain the Application Support directory using Foundation. Call this directory P. Create a new app-specific directory R directly under P, without replacing an existing object. Create a SQLite catalog at R/start.sqlite and commit its initial record. The proposed SQLite configuration is SQLite 3.47.2, the standard Unix VFS, journal_mode=DELETE, and synchronous=EXTRA. These are design assumptions, not verified runtime settings. The filesystem synchronization operations and their ordering relative to directory creation, database-file creation, and the initial transaction are what I need to establish. The specific concern is the durability of the directory entries needed to resolve P/R/start.sqlite. I need to distinguish the persistence of the database contents from the persistence of the names used to reach that database. I am not assuming that a successful SQLite commit, by itself, establishes every parent-directory durability requirement. Questions Is fsync supported on APFS directory file descriptors on macOS 15.7.2? If so, what does successful return guarantee about directory entries created before the call? Does fcntl(fd, F_FULLFSYNC) apply to directory descriptors? If not, what supported operation, if any, should an application use to establish the required directory-entry durability? Which objects need to be synchronized, and in what order: the database file, R, P, or P's parent? Please distinguish the case where P already existed from the case where P was newly created during initialization. What guarantees differ between an OS crash and sudden power loss? What assumptions about the local storage device, write caches, or flush support are required? Is there authoritative documentation applicable to macOS 15.7.2 that describes this contract? If part of the requested guarantee is unspecified or unsupported, please identify that boundary. If the answer differs on later macOS versions, please distinguish that from the 15.7.2 contract. I am asking about supported public filesystem APIs and their documented guarantees, not validation of an application-specific recovery protocol or guarantees against arbitrary hardware failure. Thank you.
1
0
73
3h
Title: StoreKit Sandbox: supportsMultiSeatPurchase is true, but pricingTerms contains no seatBased terms
We’re testing an annual multiseat subscription on a physical iPad. StoreKit returns the expected product and reports supportsMultiSeatPurchase == true, but its pricingTerms contains one term and no seatBased terms. Our app therefore cannot calculate a two-seat quote and stops before attempting a purchase. Environment iPad Air 11-inch (M3) iPadOS 27.3 beta (24C5037i) Xcode 27.3 beta (27C5020n) Development-signed app, version 1.0, diagnostic build 44 Physical-device testing with a US Sandbox purchaser App Store Connect configuration Annual auto-renewable subscription Multiseat purchases allowed Invitations provided by Apple Annual upfront availability enabled for the United States at USD 6.99 Subscription status: Prepare for Submission Sandbox purchases and renewals enabled Steps to reproduce Request the subscription using Product.products(for:). Confirm that the expected annual product is returned. Check supportsMultiSeatPurchase, which returns true. Inspect pricingTerms for supported upfront seatBased terms. Attempt to prepare a quote for two total seats. Actual result Total pricing terms: 1 Seat-based pricing terms: 0 Supported group pricing terms: 0 No purchase is attempted. Production sponsorship sales remain disabled. Expected result A supported upfront seat-based pricing term with Apple-provided pricing tiers that can be used to calculate a two-seat quote. Questions Is additional configuration or account eligibility required for Sandbox to return seat-based pricing terms? Must the subscription progress beyond Prepare for Submission before multiseat pricing can be tested? Can supportsMultiSeatPurchase legitimately return true while no seat-based pricing terms are available? If so, what conditions cause this? Is this a known limitation in this beta, and is there a supported workaround or recommended testing configuration? The issue was reproduced again on November 10, 2026, at approximately 9:57 PM Mountain Time. A sysdiagnose captured at 10:03:11 PM Mountain Time was attached privately to FB25451377. DTS directed us to post here under Case-ID: 23369152. We can provide a focused reproduction project if needed.
0
0
36
3h
iPhone 16e on iOS 27.2.1 intermittently misses BLE extended advertisements until Reset Location & Privacy
I’m investigating intermittent discovery of QuadSense V40.0 sensors on an iPhone 16e running iOS 27.2.1 (24B156). Legacy advertising units remain discoverable, but the phone sometimes misses the V40 units entirely. I’ve also seen intermittent discovery in BLESerial. The V40 uses connectable BLE 5.0 extended advertising, with a 1M primary PHY, 2M secondary PHY, and an advertising interval of about 1 second. The advertisement includes the QuadSense local name and manufacturer data with ID 0xFF02 and a 25-byte payload. During the failure: A native CBCentralManager scan with no service filter and duplicate reports enabled received 4,821 discovery callbacks in 90 seconds, including a legacy QuadSense, but zero matching extended reports. A nearby Mac received 25 matching advertisements during its overlapping scan. The iPhone probe bypassed our Flutter scan and filtering code. After Reset Location & Privacy: The same iPhone reported two V40.0 units within 1.6 seconds. Both were reported as connectable. Core Bluetooth delivered 11 matching advertisements in 10 seconds, and our app accepted both units. Bluetooth authorization was .allowedAlways in both runs. I saw the related extended advertising thread, where Apple clarified that r.188123531 affects iPhone 17 and newer. I’m posting separately because this reproduction is on a 16e and 16. Has anyone seen this on the 16e, or found a way to isolate what changes after Reset Location & Privacy when Bluetooth authorization was already granted? I’m setting up controller traces to compare a working scan with the next failure before resetting again. I’d appreciate guidance on which trace events and sysdiagnose details would be most useful to Apple.
0
0
29
3h
synchronize a file's state with that on disk
Hello Dev, The App, which I am working on, uses fcopyfile() to copy file from external storage (USB, thunderbolt) to internal disk. Looks like this call provides the best performance. fcopyfile(from, to, nullptr, COPYFILE_DATA); I need to be sure the data is copied after the call. Are there any necessity to synchronize a file's state with that on disk the data? (e.g. call fsync()) Thank you in advance! Pavel
2
0
406
5h
NEURLFilterManager: inconsistent per-domain blocking (some sites never block, one flaps) - confirmed PIR database is correct
Hello, Some context: DropBet is an app that helps people with gambling addiction stay off gambling sites and apps, using NEURLFilterManager/PIR to block a large list of known gambling domains system-wide. For a lot of our users this filter is a core part of their recovery > reliability really matters here. Since fixing an unrelated HPKE encryption bug (separate thread, now closed), the filter works end-to-end for the first time, but blocking is inconsistent per domain in a way I can't explain from my side: winamax.fr and the Winamax app: blocked reliably, every single time > clean "connection failed" style block, confirmed to load fine with protection off. unibet.fr and betclic.fr: never blocked, consistently > confirmed even after a full device reboot (rules out stale caching), and confirmed identical across both Safari and Chrome on iOS tested side-by-side (so not browser-specific). olybet.fr: flaps > the page reloads every 2-3 seconds with protection on, also identical across both browsers. Confirmed this only happens with the filter enabled (tested toggling protection off/on against the same page). unibet.fr auto-redirects into the native Unibet app via a Universal Link before the page loads, unlike betclic.fr which stays in the browser > different code path, possibly relevant. To rule out any issue on our end, I wrote a standalone test that queries our deployed PIR database shards directly - bypassing OHTTP, the app, and the device entirely - for all of the domains above plus their www. variants. All of them correctly return the blocked value, no exceptions, including unibet.fr and betclic.fr which never block on the actual device. So the database, the PIR protocol implementation, and the server are confirmed correct for every domain I've tested. This points at something in how NEURLFilterManager/ciphermld applies a correctly-received PIR verdict on-device - possibly related to query batching, an evaluation-key edge case, or Universal Link handling bypassing the filter before a web request is even made. Is there anything you can share about how the client applies results once decrypted, or known issues around any of this?
6
0
155
8h
macOS Spaces transitions silently discard input during the final animation tail
I've reported a longstanding macOS Spaces input-reliability issue to Apple: typing and scrolling are ignored during the slow final tail of a Space-switching animation, even when the destination looks ready. It happens with multi-finger trackpad swipes across my Macs and interrupts my work countless times a day, including when switching to Screen Sharing. To reproduce, leave a focused text editor on one Space, swipe away and back, and start typing as the destination settles but before the transition fully finishes. Compare with typing after completion. Repeat with a scrollable window. Reduce Motion changes the slide to a fade but doesn't solve the interaction delay for me. The desired fix is to accept input on the destination once the switch is committed, while preserving the spatial animation. Has anyone found a supported way for destination apps to receive input during this interval, or confirmed the same behavior on their current macOS version? Related reports: https://apple.stackexchange.com/questions/434555/ https://apple.stackexchange.com/questions/475139/ Apple Feedback ID: FB25534557.
0
0
43
8h
iPhone 17 / iOS 27.2: BLE extended advertising discovery fails approximately 90–95% of the time
We are investigating a severe BLE extended-advertising discovery issue on an iPhone 17 running iOS 27.2 (24B119). The phone fails to discover our peripherals approximately 90–95% of the time, based on our testing estimate. On rare occasions discovery succeeds, and the peripheral can then be connected. We have filed FB25463740, with diagnostic captures and a comparison of successful and failing behavior. Earlier iOS behavior Extended-advertising discovery and connection worked without issues in our previous iOS 26 testing. Failures became apparent with iOS 27, with behavior varying by iPhone model. We do not have a verified iOS 26 baseline for this particular iPhone 17, so we are treating an OS regression as a possibility rather than a confirmed cause. Test configuration Affected phone: iPhone 17, iOS 27.2 (24B119). Working comparison: iPhone 16, also running iOS 27.2 (24B119). Advertising: extended advertising with a 1M primary PHY, 2M secondary PHY, and 31-byte advertising data. Scanning: nRF Connect in the foreground, without a service UUID filter. Both phones were near the same powered-on peripherals, with advertising configuration unchanged during the comparison. Observed behavior The iPhone 16 discovers the extended-advertising peripherals. The iPhone 17 usually does not, even while discovering other nearby BLE devices. Switching the peripherals to legacy advertising provides reliable discovery on the tested iPhone 17. When extended-advertising discovery does succeed, connection works. The issue reproduces in nRF Connect as well as our application. What the captures show During failing foreground scans, the iPhone 17 receives thousands of legacy advertising reports, but neither target peripheral appears in its HCI packet log. A later capture contains rare successful extended-advertising receptions from both peripherals. These reports contain the same 31-byte payloads received by the working iPhone 16 and identify the secondary PHY as 2M. That capture also records a successful connection using 2M in both directions. Successful and failing scans occur on the same iPhone 17 with identical checked scan-start command sequences. The commands complete successfully. This does not establish that all internal controller state is identical. Wi-Fi disconnection preceded one successful period, but repeating that action did not reproduce success. We have not established Wi-Fi coexistence or primary-to-auxiliary timing as the cause. Questions Has anyone observed similar extended-advertising discovery failures on iPhone 17 or other models running iOS 27? If so, which phone models, iOS builds, peripheral chipsets, and advertising PHYs are involved? Does legacy advertising remain reliable? Are there any known issues or supported workarounds for this behavior? For Apple engineering, FB25463740 includes captures covering both successful and failing periods that may help distinguish reception, auxiliary-channel scheduling, and reporting/filtering problems.
5
0
198
8h
Looks like the Home application breaks non-trivial predicates?
I've just bumped into a weird problem. I've created a pretty simple and perfectly working event trigger with a non-trivial predicate which is just an AND of two characteristic-value ones. Then I've renamed it in the Home application, and it stopped working. A dump suggests the cause is a broken predicate, for it looks now rather differently — one of those two characteristic-value predicates seems broken (details below). Is that possible? Could please someone check whether the problem is really a Home ugly bug, or whether I do something wrong at my side? Versions are macOS 27.0.1 (26A434) Home 11.0 (1241.1.7.4.3) I would gladly post a bugreport, but at this moment I am far from being sure I do not overlook something of importance myself. Thanks! My code — for clarity stripped of all the error checking and reporting — looks like this: HMHome *home=...; HMCharacteristic *knihovna=..., *stul=..., *sklenik=...; // light chars, found by names HMActionSet *switchOff=...; // trivial switch-off for another light, found by name HMEventTrigger *trigger=...; // found by name if exists if (trigger) { // if found, the predicate is logged out and that's all NSLog(@"=== predicate found: %@", trigger.predicate); return; } // otherwise, the trigger and predicate are created this way: HMCharacteristicEvent *evt=[[HMCharacteristicEvent alloc] initWithCharacteristic:sklenik triggerValue:@1]; NSPredicate *p1=[HMEventTrigger predicateForEvaluatingTriggerWithCharacteristic:knihovna relatedBy:NSEqualToPredicateOperatorType toValue:@1]; NSPredicate *p2=[HMEventTrigger predicateForEvaluatingTriggerWithCharacteristic:stul relatedBy:NSEqualToPredicateOperatorType toValue:@1]; NSPredicate *p=[[NSCompoundPredicate alloc] initWithType:NSAndPredicateType subpredicates:@[p1, p2]]; NSLog(@"=== predicate created: %@", p); HMEventTrigger *et=[[HMEventTrigger alloc] initWithName:@"TEST-ONLY" events:@[evt] predicate:p]; [home addTrigger:et completionHandler:^(NSError *error) { if (!error) [et addActionSet:switchOff completionHandler:^(NSError *error) { if (!error) [et enable:YES completionHandler:^(NSError *error) { if (!error) NSLog(@"=== success!"); }]; }]; }];As already mentioned, the trigger works perfectly (is trivial enough, would be weird if not). When created and also later, when found by name, the predicate looks like this: === predicate found: (characteristic == <HMCharacteristic, Unique ID: 7444CCCE-1C1B-5234-8CAE-01DA4D811B8B, Type: 00000025, Instance ID: 9> AND characteristicValue == 1) AND (characteristic == <HMCharacteristic, Unique ID: 2E046807-9127-565F-B9CB-10BC0F2EE6D2, Type: 00000025, Instance ID: 9> AND characteristicValue == 1)Then, I just go to the Home application and rename the trigger, nothing else. It immediately stops working properly, and from that moment on, the predicate looks like this — note the difference: === predicate found: characteristic == <HMCharacteristic, Unique ID: 2E046807-9127-565F-B9CB-10BC0F2EE6D2, Type: 00000025, Instance ID: 9> AND (characteristic == <HMCharacteristic, Unique ID: 7444CCCE-1C1B-5234-8CAE-01DA4D811B8B, Type: 00000025, Instance ID: 9> AND characteristicValue == 1)
3
0
120
8h
BLE IOS27. When the device is connected to headphones, the Bluetooth controller does not tend to perform normal scheduling on BLE
We have an internet app that uses BLE COC to synchronize the call audio of Android devices to the iPhone side microphone. All of this functions normally, but if two conditions are met: upgrading to IOS27; Connect iPhone to headphones. So the up and down latency of our BLE COC data will be significant and increase proportionally with time. Through the analysis of the air interface logs, it can be seen that the number of retries for COC data on the air interface has significantly increased, and the interval between the other two packets is very large (far greater than the 30 millisecond conn interval). I would like to ask if Apple has adjusted the scheduling strategy of the Bluetooth controller on iOS 27, and how can we adapt to this situation? The attachment is a screenshot of the air interface log. The packet circled in the picture is sent from iPhone to Android, with an interval of 300+ms. It can be inferred that the iPhone protocol stack and Bluetooth controller have already squeezed a large amount of data, and our business bitrate is not high, only about 10K per second
3
0
89
9h
Does DPLA 3.3.3(P) apply to the new EU-specific Screen Time data export API?
Hi, I'm trying to understand how Section 3.3.3(P) of the Apple Developer Program License Agreement applies to the new EU-specific Family Controls App and Website Usage API. Section 3.3.3(P) restricts sharing usage data beyond the individual and their device. However, Apple's documentation for DeviceActivityData.activityData(filteredBy:using:) explicitly mentions exporting activity data for use in another app or platform. Does this restriction still apply unchanged to the new EU API, or are additional uses permitted? I'm also curious whether this capability was introduced as part of Apple's compliance with the EU Digital Markets Act (DMA). I'm particularly interested in two use cases: Private storage: Storing a user's own usage history in their private CloudKit database or in client-side encrypted cloud storage, so their progress is preserved across devices and reinstalls. Voluntary sharing: Allowing users to share locally calculated milestones (e.g., "Alex spent less than 5 hours on Instagram this week") or exact usage times (e.g., "Alex spent 5h 42m on Instagram this week") with selected friends. Each share would require explicit user action and confirmation, with a clear preview of what's being shared. There would be no automatic background reporting or continuous monitoring by friends. I've already contacted Apple's DMA Compliance team and Developer Support, but was directed here without receiving clarification. I'd appreciate any help understanding how the new EU API relates to the existing restrictions, or who I could ask about this. Thanks!
0
0
43
9h
App Store watch app won’t install on Apple Watch Ultra 3 (watchOS 27.2 / 27.2.1): install reaches ~100%, then reverts to Install
I’m getting reports that my App Store app’s watch app won’t install on Apple Watch Ultra 3. All three reports so far are from Ultra 3 owners, and I haven’t had any from other models. Symptoms Installing from the Watch app on iPhone: the install spins forever, or it seems to try and then shows the Install button again. Installing from the App Store on the watch: the progress circle reaches about 100%, then reverts to the install icon. One user says it then keeps retrying in the background until it times out. No error is shown on either device. Every other app installs normally. All users have plenty of free space and have restarted both devices and deleted and reinstalled the app. One user had just erased and re-paired the watch, and our app was the only one that wouldn’t install. Another user first saw the watch app crash on every launch under 27.2.1, while its complication kept updating. After they removed the app, it would no longer reinstall. Affected setups Apple Watch Ultra 3 on watchOS 27.2 and 27.2.1 (updating to 27.2.1 didn’t help the user who started on 27.2) Paired with an iPhone 17 Pro Max and an iPhone Duo, both on iOS 27.2 / 27.2.1 About the app Uses the older two-target design: WatchKit App plus WatchKit Extension, not a single-target watch app. ClockKit complication. Deployment target watchOS 9.0. Built with Xcode 27.1 (27A9275), watchOS 27.0 SDK lipo shows arm64 and arm64_32 in the watch app The watch app barely changed from the previous release (storyboard edits only).
0
0
32
9h
Apple Pay ( auto update )
What is this? You want me to enable automatic updates just so I can use Apple Pay on macOS? Why? So whenever you decide to push an update, you can extract personal data without anyone noticing? Hahahah. Looks like Apple has become just like Windows nothing but bugs and background processes draining resources for no reason. Windows usesd to be like that before 8 years, and now you guys couldn't bear to be left behind either. Great just great. Love how you're using AI without putting an ounce of thought inot it. Updated to 27.2.1, Sifi is supposedly stopped and EVERYTHING is turned off, and yet there it is in Activity Monitor processes running and pegging system resoues at 100%. Just unbeliebale....
0
0
23
9h
iPhone 17 on iOS 27 cannot connect to a Bluetooth 4.0 BLE peripheral (works on older iPhones with iOS 27)
We have a BLE pulse oximeter (medical device, Bluetooth 4.0 module) that can no longer be connected from iPhone 17 running iOS 27.0.1 and 27.2. CBCentralManager.connect() never results in didConnect or didFailToConnect; the connection stays pending indefinitely. The same accessory works on: iPhone 17 with iOS 26.6.1 iPhone 15 with iOS 27.0.1 iPhone 14 Pro Max with iOS 26.5.2 The issue also reproduces with nRF Connect and LightBlue, so it does not appear to be specific to our app. Other BLE devices connect normally on the same iPhone 17. PacketLogger traces from iPhone 17 (failing) and iPhone 15 (working) are attached to FB25459075. It is possible that the accessory firmware does not fully follow the Bluetooth specification. However, many units are already in use by patients and may not be firmware-updatable. Questions: Is this a known issue with iPhone 17 on iOS 27? Could Apple consider an interoperability fix, since the same accessory works on iPhone 17 with iOS 26.6.1 and on older iPhone models with iOS 27? Is there any workaround we can apply in our app?
1
1
131
10h
Declared Age Range in sandbox: no sheet at launch, and the set per scenario
We are testing the Declared Age Range API with sandbox testers on an iPhone 17e with iOS 26.6.2 (Xcode 26.6, iOS 26.5 SDK). The app is not yet released; everything here is pre-release testing. We have filed three focused reports: FB25530441 (requestAgeRange returned .declinedSharing with no sheet), FB25530501 (the age that Age Assurance first shows at a sign-in against what the API reads), and FB25530513 (a selected scenario not reflected in requiredRegulatoryFeatures). Four questions remain that are not defects: When a sandbox tester has an Age Assurance scenario selected, should requestAgeRange present the sheet at launch, or answer from the scenario without showing one? Is there a way to see the sheet at launch in sandbox, as a first-time user would, so we can test the share and decline paths end to end? The article "Requesting people's age range information in your app" says the set's values "tell you which actions you need to take for compliance", and the sandbox page lists each scenario's age range, but we found neither saying which members each scenario produces. Please confirm: for each Age Assurance scenario, and for a tester with no scenario selected, what should requiredRegulatoryFeatures contain? Does the tester's App Store territory or creation date matter in sandbox? On 1 and 2. Our app calls requestAgeRange at launch when requiredRegulatoryFeatures contains .declaredAgeRangeRequired. On four days between October 31 and November 7, 2026, at every launch where we know it did make the request, Apple's age range sheet did not appear. Some requests we made by hand from a debug console returned the scenario's range with no sheet: on November 7, one on each of two testers on '13 - 15' returned a shared range of 13 to 15. One such request on October 31 did present the sheet; it is the only sheet on record across the four days (at a few launches the sheet was not written down separately). On 3. What we read on one tester, in this order, each scenario read before and after a relaunch unless noted: No scenario selected (signed in for the first time; Age Assurance showed no option selected), read after a relaunch only: none of the three members. '13 - 15, significant change approved', then '16 - 17, significant change declined', then 'Under 13, significant change approved': .declaredAgeRangeRequired and .significantAppChangeRequiresParentalConsent. '18+, age confirmed, significant change not applicable': .declaredAgeRangeRequired only. '18+, age confirmed, significant change applicable': .declaredAgeRangeRequired and .significantAppChangeRequiresAdultNotification. '18+, age not confirmed, significant change not applicable': .declaredAgeRangeRequired only. For these rows we read contains for the three members the iOS 26.5 SDK defines, so a member outside those three would not show. On November 5 we printed the whole set on 15 reads of sandbox testers, and no other member appeared.
0
0
57
12h
CloudKit CKShare architecture for family and teacher access with private data separation
Hi everyone, I'm an independent iOS developer currently working on a family sharing feature for an app designed to support children with additional communication and care needs. I'm using CloudKit and CKShare, and I'd really appreciate some architectural guidance before moving into live sharing. The idea is to allow a parent to manage their child's profile and invite family members or teachers to access specific information. For example: Family members could share communication boards, routines and visual supports. Teachers could access school-related information and make authorised changes. Teachers may also need to record daily observations such as toileting, seizures, eating, drinking and sensory events. Parents would control which categories of information teachers can access. Private family wellbeing records and caregiver notes must remain inaccessible unless explicitly shared. I've already successfully tested CloudKit Development connectivity on a physical iPhone, including account status, user identity and private database zone discovery. Before implementing the actual sharing functionality, I'd like to understand the best approach to managing permissions and keeping sensitive information separate. My main questions are: Would separate custom record zones and CKShare relationships be the recommended approach for isolating school-shared data from family-private data? Since CKShare permissions apply at the share level, what's the recommended way to let teachers edit selected information without accessing other sensitive records? For parent-controlled access to individual categories such as toileting or seizure observations, would separate shares or zones per category be advisable? When a parent revokes a teacher's access, what guarantees does CloudKit provide regarding future access, particularly for previously downloaded data? Is there a recommended approach for synchronising school-created observations back into a parent's private history without exposing unrelated family records? My aim is to keep the experience simple for parents and teachers while ensuring that privacy is enforced by the underlying CloudKit architecture rather than relying solely on UI restrictions. I'd really appreciate any advice, recommendations or examples from developers or Apple engineers who have worked with similar sharing requirements. Many thanks!
0
0
48
12h
Regression in external display identification
Regression in external display identification. Two identical ASUS XG27UCDMG monitors connected directly to a MacBook Air M5 are incorrectly deduplicated into a single external display. macOS enumerates only one external display despite hardware support for two external displays and independent operation of each monitor when connected separately. This was fixed in MacOS 27 but the two most recent updates and the latest 27.2.1 have broken it again.
0
0
16
12h
Dynamic Island content jitters during updates on iPhone Duo running iOS 27.1
We are experiencing a Dynamic Island rendering issue on a physical iPhone Duo. When the Dynamic Island content updates, the view visibly jitters during rendering. We expect the content to update smoothly without unintended movement or layout shifts. The issue persists even when we use @Environment(.isDynamicIslandLimitedInWidth) to adapt the layout for a width-constrained Dynamic Island. It also occurs with a minimal layout containing only a basic view. Environment iPhone Duo iOS 27.1 Xcode 27.1 Is this a known issue with Dynamic Island on iPhone Duo? Is there a recommended workaround to prevent the content from jittering during updates? Thank you for your help
1
0
151
12h
New features for APNs token authentication now available
Team-scoped keys introduce the ability to restrict your token authentication keys to either development or production environments. Topic-specific keys in addition to environment isolation allow you to associate each key with a specific Bundle ID streamlining key management. For detailed instructions on accessing these features, read our updated documentation on establishing a token-based connection to APNs.
Replies
0
Boosts
0
Views
4.3k
Activity
Feb ’25
Meet State Reporting and the new MetricKit
Hello developers! Thank you for your dedication to creating apps with great performance. We’re excited to kick off another year of partnering with you on improving power and performance in your apps. At WWDC26, check out the following new things in the latest platform SDKs and Xcode 27 beta for performance. You can also join us online for a Power and Performance Group Lab on Tuesday, June 9 at 11 AM Pacific. Meet State Reporting and the new MetricKit State reporting: The new StateReporting framework lets your application express its state to downstream tools like Instruments and MetricKit. Make your telemetry and traces much more useful by adopting this simple API. MetricKit: In the 27 releases, the Swift-first MetricManager API replaces the MXMetricManager API. Combined with State Reporting, the new MetricKit provides more granular metrics to isolate performance problems faster. It also provides a more expressive API that is great to use in Swift, with improved Swift concurrency and Codable support. With this year’s releases, the MXMetricManager API is considered legacy. ▶️ To learn more, watch Meet the new MetricKit. Discover new features in Xcode organizer Metric goals: Xcode organizer now provides a goal metric for Battery Usage, Disk Writes, Hang Rate, Hitches, Memory, and Storage metrics, allowing you to prioritize performance engineering across more areas. Generate recommendations: Quickly resolve the highest impact performance issues in your app by using Generate Recommendations for Crash, Energy, Disk Write, Hang and Launch diagnostics. Insights overview: The new insights overview in Xcode organizer summarizes high-impact performance regressions for metrics and diagnostic reports, helping you plan and prioritize performance engineering work. Storage metrics: Storage metrics are now available in Xcode organizer, allowing you to monitor your app's Documents & Data and App Size across releases and catch regressions in cache usage and bundle size. Hitches metric: The new Hitches metric replaces the Scrolling metric in the organizer and now displays hitches for all animations in your app, giving you a comprehensive view of animation performance. ▶️ To learn more about other advancements in Xcode, watch What’s new in Xcode 27. Improve app responsiveness with Instruments Foundation Models: The Foundation Models instrument is redesigned with a tree view that lets you drill into individual requests, inspecting tool call arguments and results, inference prompts and responses, and token statistics. Use it to understand caching behavior, measure latency, and optimize throughput. System Trace: System calls, VM faults, and thread states are now unified into a single plot, with a new blending algorithm that stays readable even at high density. Once you spot something worth investigating, left/right key navigation lets you follow a thread's activity step by step, and the inspector provides quick actions like pinning the thread that made another thread runnable. System Trace now also draws thread priority and QoS over time, making it easier to identify priority inversions and unexpected QoS degradations that affect responsiveness. Swift Concurrency: New Main Actor and Global Concurrent Executor tracks let you visualize running tasks and executor queue depth over time, making it easier to spot task scheduling delays and actor contention. Tasks are now grouped into collections for faster navigation. Swift Tasks, Actors, and Executors instruments can now surface Call Trees, Flame Graphs, and Top Functions scoped to each entity — so you can pinpoint exactly where concurrency overhead lives. Top Functions: Helper functions and runtime internals can be expensive but hard to spot in a standard call tree. The new aggregation mode in Top Functions surfaces any function's total execution time across the entire call stack, making it easy to identify and prioritize hidden hotspots. Run Comparison: Compare call tree data across builds to identify regressions and performance wins. Results can be explored as an outline, flame graph, or top functions — choose whichever view best fits your workflow. ▶️ To learn more about profiling your app with Instruments, watch “Profile, fix, and verify: Improve app responsiveness with Instruments” ▶️ To learn about Foundation Models optimization, watch “Debug and profile agentic app experiences with Instruments”. If you have any questions about using State Reporting or the new MetricKit, create a post on the forums. For help creating a post, see Tips on writing a forum posts.
Replies
0
Boosts
0
Views
1.8k
Activity
Jun ’26
Supported read/write handoff of a sandbox-container PNG to Preview using NSWorkspace
Hello, I am preparing an existing macOS screenshot utility for distribution through the Mac App Store. The app stores captured PNG files under its temporary directory: FileManager.default.temporaryDirectory .appendingPathComponent("ShelfDragPoC/Captures", isDirectory: true) A context-menu "Edit" action passes the original PNG URL to Preview using NSWorkspace. The app does not create an editing copy. Relevant code: import AppKit @MainActor func openInPreview(_ url: URL) { guard let previewURL = NSWorkspace.shared.urlForApplication( withBundleIdentifier: "com.apple.Preview" ) else { return } let configuration = NSWorkspace.OpenConfiguration() configuration.activates = true NSWorkspace.shared.open( [url], withApplicationAt: previewURL, configuration: configuration ) { _, _ in } } The app monitors the original PNG URL for file changes and refreshes its thumbnail when changes are detected. Observed behavior: In the existing non-sandboxed app, rotating an image in Preview updates the original PNG and the thumbnail without requiring Command-S. In the sandboxed validation app, Preview opens the image, but editing results in a separate copy. When closing the edited document, Preview displays a message indicating that the original document will not be changed. The original PNG and the app's thumbnail are not updated. The Preview launch code and file watcher are unchanged between the non-sandboxed and sandboxed versions. The sandboxed app has these entitlements: com.apple.security.app-sandbox com.apple.security.files.user-selected.read-write com.apple.security.files.bookmarks.app-scope The app-scoped bookmark is used for a separate Desktop export feature. The PNG opened in Preview remains in the app's sandbox container. My question: Is there a supported public API that allows a sandboxed Mac App Store app to open its own container-resident PNG in Preview with the permissions required for in-place editing and normal automatic saving? Ideally, the user would only need to select "Edit" once, without an additional file-selection dialog or an explicit Save command. We want to preserve the original PNG URL, keep App Sandbox enabled, and avoid automatically exporting temporary images to the Desktop. If this workflow is not supported, what is Apple's recommended approach? Thank you.
Replies
13
Boosts
0
Views
487
Activity
1h
WatchOS 27 throttles BLE discoveries
Hi! We have an app that highly depends on CoreBluetooth including scanning for peripherals with an advertised serviceUUID. Our app sets the CBCentralManagerScanOptionAllowDuplicatesKey flag to true while scanning. Receiving continuous discovery events about nearby devices is key to measure the RSSI before connecting. Updating some of our test devices to watchOS 27 we noticed that our app is broken. To analyze further we created a simple app to compare behavior between watchOS 26 and 27, and the difference is clear. On the 27 device it behaves like the flag is ignored and we only receive a couple of callbacks to centralManager(_:didDiscover:advertisementData:rssi:) then it stops. We could not find any documentation declaring this as a new restriction or something regarding that has changed. Is this a bug, or is there a way to get the old behavior on the new OS? The example app used for testing is available here: https://github.com/levente-gulyas-skidata/WatchBLEExperiments (Change the serviceUUID for testing if needed) Thank you, Levi
Replies
3
Boosts
4
Views
278
Activity
3h
APFS directory-entry durability after creating an Application Support subdirectory
On macOS 15.7.2 with a local APFS volume and App Sandbox, which supported filesystem operations and synchronization order make a newly created directory entry and a new database filename durable after an OS crash or sudden power loss? DTS asked me to post this question here for review. This is a design-stage API-contract question, not a report of a reproduced failure. The proposed sequence has not been implemented or tested. I have no focused reproducer, crash report, or power-loss test results for this question. The platform in question is macOS, not iOS. Context The proposed initialization sequence is: Obtain the Application Support directory using Foundation. Call this directory P. Create a new app-specific directory R directly under P, without replacing an existing object. Create a SQLite catalog at R/start.sqlite and commit its initial record. The proposed SQLite configuration is SQLite 3.47.2, the standard Unix VFS, journal_mode=DELETE, and synchronous=EXTRA. These are design assumptions, not verified runtime settings. The filesystem synchronization operations and their ordering relative to directory creation, database-file creation, and the initial transaction are what I need to establish. The specific concern is the durability of the directory entries needed to resolve P/R/start.sqlite. I need to distinguish the persistence of the database contents from the persistence of the names used to reach that database. I am not assuming that a successful SQLite commit, by itself, establishes every parent-directory durability requirement. Questions Is fsync supported on APFS directory file descriptors on macOS 15.7.2? If so, what does successful return guarantee about directory entries created before the call? Does fcntl(fd, F_FULLFSYNC) apply to directory descriptors? If not, what supported operation, if any, should an application use to establish the required directory-entry durability? Which objects need to be synchronized, and in what order: the database file, R, P, or P's parent? Please distinguish the case where P already existed from the case where P was newly created during initialization. What guarantees differ between an OS crash and sudden power loss? What assumptions about the local storage device, write caches, or flush support are required? Is there authoritative documentation applicable to macOS 15.7.2 that describes this contract? If part of the requested guarantee is unspecified or unsupported, please identify that boundary. If the answer differs on later macOS versions, please distinguish that from the 15.7.2 contract. I am asking about supported public filesystem APIs and their documented guarantees, not validation of an application-specific recovery protocol or guarantees against arbitrary hardware failure. Thank you.
Replies
1
Boosts
0
Views
73
Activity
3h
Title: StoreKit Sandbox: supportsMultiSeatPurchase is true, but pricingTerms contains no seatBased terms
We’re testing an annual multiseat subscription on a physical iPad. StoreKit returns the expected product and reports supportsMultiSeatPurchase == true, but its pricingTerms contains one term and no seatBased terms. Our app therefore cannot calculate a two-seat quote and stops before attempting a purchase. Environment iPad Air 11-inch (M3) iPadOS 27.3 beta (24C5037i) Xcode 27.3 beta (27C5020n) Development-signed app, version 1.0, diagnostic build 44 Physical-device testing with a US Sandbox purchaser App Store Connect configuration Annual auto-renewable subscription Multiseat purchases allowed Invitations provided by Apple Annual upfront availability enabled for the United States at USD 6.99 Subscription status: Prepare for Submission Sandbox purchases and renewals enabled Steps to reproduce Request the subscription using Product.products(for:). Confirm that the expected annual product is returned. Check supportsMultiSeatPurchase, which returns true. Inspect pricingTerms for supported upfront seatBased terms. Attempt to prepare a quote for two total seats. Actual result Total pricing terms: 1 Seat-based pricing terms: 0 Supported group pricing terms: 0 No purchase is attempted. Production sponsorship sales remain disabled. Expected result A supported upfront seat-based pricing term with Apple-provided pricing tiers that can be used to calculate a two-seat quote. Questions Is additional configuration or account eligibility required for Sandbox to return seat-based pricing terms? Must the subscription progress beyond Prepare for Submission before multiseat pricing can be tested? Can supportsMultiSeatPurchase legitimately return true while no seat-based pricing terms are available? If so, what conditions cause this? Is this a known limitation in this beta, and is there a supported workaround or recommended testing configuration? The issue was reproduced again on November 10, 2026, at approximately 9:57 PM Mountain Time. A sysdiagnose captured at 10:03:11 PM Mountain Time was attached privately to FB25451377. DTS directed us to post here under Case-ID: 23369152. We can provide a focused reproduction project if needed.
Replies
0
Boosts
0
Views
36
Activity
3h
iPhone 16e on iOS 27.2.1 intermittently misses BLE extended advertisements until Reset Location & Privacy
I’m investigating intermittent discovery of QuadSense V40.0 sensors on an iPhone 16e running iOS 27.2.1 (24B156). Legacy advertising units remain discoverable, but the phone sometimes misses the V40 units entirely. I’ve also seen intermittent discovery in BLESerial. The V40 uses connectable BLE 5.0 extended advertising, with a 1M primary PHY, 2M secondary PHY, and an advertising interval of about 1 second. The advertisement includes the QuadSense local name and manufacturer data with ID 0xFF02 and a 25-byte payload. During the failure: A native CBCentralManager scan with no service filter and duplicate reports enabled received 4,821 discovery callbacks in 90 seconds, including a legacy QuadSense, but zero matching extended reports. A nearby Mac received 25 matching advertisements during its overlapping scan. The iPhone probe bypassed our Flutter scan and filtering code. After Reset Location & Privacy: The same iPhone reported two V40.0 units within 1.6 seconds. Both were reported as connectable. Core Bluetooth delivered 11 matching advertisements in 10 seconds, and our app accepted both units. Bluetooth authorization was .allowedAlways in both runs. I saw the related extended advertising thread, where Apple clarified that r.188123531 affects iPhone 17 and newer. I’m posting separately because this reproduction is on a 16e and 16. Has anyone seen this on the 16e, or found a way to isolate what changes after Reset Location & Privacy when Bluetooth authorization was already granted? I’m setting up controller traces to compare a working scan with the next failure before resetting again. I’d appreciate guidance on which trace events and sysdiagnose details would be most useful to Apple.
Replies
0
Boosts
0
Views
29
Activity
3h
synchronize a file's state with that on disk
Hello Dev, The App, which I am working on, uses fcopyfile() to copy file from external storage (USB, thunderbolt) to internal disk. Looks like this call provides the best performance. fcopyfile(from, to, nullptr, COPYFILE_DATA); I need to be sure the data is copied after the call. Are there any necessity to synchronize a file's state with that on disk the data? (e.g. call fsync()) Thank you in advance! Pavel
Replies
2
Boosts
0
Views
406
Activity
5h
NEURLFilterManager: inconsistent per-domain blocking (some sites never block, one flaps) - confirmed PIR database is correct
Hello, Some context: DropBet is an app that helps people with gambling addiction stay off gambling sites and apps, using NEURLFilterManager/PIR to block a large list of known gambling domains system-wide. For a lot of our users this filter is a core part of their recovery > reliability really matters here. Since fixing an unrelated HPKE encryption bug (separate thread, now closed), the filter works end-to-end for the first time, but blocking is inconsistent per domain in a way I can't explain from my side: winamax.fr and the Winamax app: blocked reliably, every single time > clean "connection failed" style block, confirmed to load fine with protection off. unibet.fr and betclic.fr: never blocked, consistently > confirmed even after a full device reboot (rules out stale caching), and confirmed identical across both Safari and Chrome on iOS tested side-by-side (so not browser-specific). olybet.fr: flaps > the page reloads every 2-3 seconds with protection on, also identical across both browsers. Confirmed this only happens with the filter enabled (tested toggling protection off/on against the same page). unibet.fr auto-redirects into the native Unibet app via a Universal Link before the page loads, unlike betclic.fr which stays in the browser > different code path, possibly relevant. To rule out any issue on our end, I wrote a standalone test that queries our deployed PIR database shards directly - bypassing OHTTP, the app, and the device entirely - for all of the domains above plus their www. variants. All of them correctly return the blocked value, no exceptions, including unibet.fr and betclic.fr which never block on the actual device. So the database, the PIR protocol implementation, and the server are confirmed correct for every domain I've tested. This points at something in how NEURLFilterManager/ciphermld applies a correctly-received PIR verdict on-device - possibly related to query batching, an evaluation-key edge case, or Universal Link handling bypassing the filter before a web request is even made. Is there anything you can share about how the client applies results once decrypted, or known issues around any of this?
Replies
6
Boosts
0
Views
155
Activity
8h
macOS Spaces transitions silently discard input during the final animation tail
I've reported a longstanding macOS Spaces input-reliability issue to Apple: typing and scrolling are ignored during the slow final tail of a Space-switching animation, even when the destination looks ready. It happens with multi-finger trackpad swipes across my Macs and interrupts my work countless times a day, including when switching to Screen Sharing. To reproduce, leave a focused text editor on one Space, swipe away and back, and start typing as the destination settles but before the transition fully finishes. Compare with typing after completion. Repeat with a scrollable window. Reduce Motion changes the slide to a fade but doesn't solve the interaction delay for me. The desired fix is to accept input on the destination once the switch is committed, while preserving the spatial animation. Has anyone found a supported way for destination apps to receive input during this interval, or confirmed the same behavior on their current macOS version? Related reports: https://apple.stackexchange.com/questions/434555/ https://apple.stackexchange.com/questions/475139/ Apple Feedback ID: FB25534557.
Replies
0
Boosts
0
Views
43
Activity
8h
iPhone 17 / iOS 27.2: BLE extended advertising discovery fails approximately 90–95% of the time
We are investigating a severe BLE extended-advertising discovery issue on an iPhone 17 running iOS 27.2 (24B119). The phone fails to discover our peripherals approximately 90–95% of the time, based on our testing estimate. On rare occasions discovery succeeds, and the peripheral can then be connected. We have filed FB25463740, with diagnostic captures and a comparison of successful and failing behavior. Earlier iOS behavior Extended-advertising discovery and connection worked without issues in our previous iOS 26 testing. Failures became apparent with iOS 27, with behavior varying by iPhone model. We do not have a verified iOS 26 baseline for this particular iPhone 17, so we are treating an OS regression as a possibility rather than a confirmed cause. Test configuration Affected phone: iPhone 17, iOS 27.2 (24B119). Working comparison: iPhone 16, also running iOS 27.2 (24B119). Advertising: extended advertising with a 1M primary PHY, 2M secondary PHY, and 31-byte advertising data. Scanning: nRF Connect in the foreground, without a service UUID filter. Both phones were near the same powered-on peripherals, with advertising configuration unchanged during the comparison. Observed behavior The iPhone 16 discovers the extended-advertising peripherals. The iPhone 17 usually does not, even while discovering other nearby BLE devices. Switching the peripherals to legacy advertising provides reliable discovery on the tested iPhone 17. When extended-advertising discovery does succeed, connection works. The issue reproduces in nRF Connect as well as our application. What the captures show During failing foreground scans, the iPhone 17 receives thousands of legacy advertising reports, but neither target peripheral appears in its HCI packet log. A later capture contains rare successful extended-advertising receptions from both peripherals. These reports contain the same 31-byte payloads received by the working iPhone 16 and identify the secondary PHY as 2M. That capture also records a successful connection using 2M in both directions. Successful and failing scans occur on the same iPhone 17 with identical checked scan-start command sequences. The commands complete successfully. This does not establish that all internal controller state is identical. Wi-Fi disconnection preceded one successful period, but repeating that action did not reproduce success. We have not established Wi-Fi coexistence or primary-to-auxiliary timing as the cause. Questions Has anyone observed similar extended-advertising discovery failures on iPhone 17 or other models running iOS 27? If so, which phone models, iOS builds, peripheral chipsets, and advertising PHYs are involved? Does legacy advertising remain reliable? Are there any known issues or supported workarounds for this behavior? For Apple engineering, FB25463740 includes captures covering both successful and failing periods that may help distinguish reception, auxiliary-channel scheduling, and reporting/filtering problems.
Replies
5
Boosts
0
Views
198
Activity
8h
Looks like the Home application breaks non-trivial predicates?
I've just bumped into a weird problem. I've created a pretty simple and perfectly working event trigger with a non-trivial predicate which is just an AND of two characteristic-value ones. Then I've renamed it in the Home application, and it stopped working. A dump suggests the cause is a broken predicate, for it looks now rather differently — one of those two characteristic-value predicates seems broken (details below). Is that possible? Could please someone check whether the problem is really a Home ugly bug, or whether I do something wrong at my side? Versions are macOS 27.0.1 (26A434) Home 11.0 (1241.1.7.4.3) I would gladly post a bugreport, but at this moment I am far from being sure I do not overlook something of importance myself. Thanks! My code — for clarity stripped of all the error checking and reporting — looks like this: HMHome *home=...; HMCharacteristic *knihovna=..., *stul=..., *sklenik=...; // light chars, found by names HMActionSet *switchOff=...; // trivial switch-off for another light, found by name HMEventTrigger *trigger=...; // found by name if exists if (trigger) { // if found, the predicate is logged out and that's all NSLog(@"=== predicate found: %@", trigger.predicate); return; } // otherwise, the trigger and predicate are created this way: HMCharacteristicEvent *evt=[[HMCharacteristicEvent alloc] initWithCharacteristic:sklenik triggerValue:@1]; NSPredicate *p1=[HMEventTrigger predicateForEvaluatingTriggerWithCharacteristic:knihovna relatedBy:NSEqualToPredicateOperatorType toValue:@1]; NSPredicate *p2=[HMEventTrigger predicateForEvaluatingTriggerWithCharacteristic:stul relatedBy:NSEqualToPredicateOperatorType toValue:@1]; NSPredicate *p=[[NSCompoundPredicate alloc] initWithType:NSAndPredicateType subpredicates:@[p1, p2]]; NSLog(@"=== predicate created: %@", p); HMEventTrigger *et=[[HMEventTrigger alloc] initWithName:@"TEST-ONLY" events:@[evt] predicate:p]; [home addTrigger:et completionHandler:^(NSError *error) { if (!error) [et addActionSet:switchOff completionHandler:^(NSError *error) { if (!error) [et enable:YES completionHandler:^(NSError *error) { if (!error) NSLog(@"=== success!"); }]; }]; }];As already mentioned, the trigger works perfectly (is trivial enough, would be weird if not). When created and also later, when found by name, the predicate looks like this: === predicate found: (characteristic == <HMCharacteristic, Unique ID: 7444CCCE-1C1B-5234-8CAE-01DA4D811B8B, Type: 00000025, Instance ID: 9> AND characteristicValue == 1) AND (characteristic == <HMCharacteristic, Unique ID: 2E046807-9127-565F-B9CB-10BC0F2EE6D2, Type: 00000025, Instance ID: 9> AND characteristicValue == 1)Then, I just go to the Home application and rename the trigger, nothing else. It immediately stops working properly, and from that moment on, the predicate looks like this — note the difference: === predicate found: characteristic == <HMCharacteristic, Unique ID: 2E046807-9127-565F-B9CB-10BC0F2EE6D2, Type: 00000025, Instance ID: 9> AND (characteristic == <HMCharacteristic, Unique ID: 7444CCCE-1C1B-5234-8CAE-01DA4D811B8B, Type: 00000025, Instance ID: 9> AND characteristicValue == 1)
Replies
3
Boosts
0
Views
120
Activity
8h
BLE IOS27. When the device is connected to headphones, the Bluetooth controller does not tend to perform normal scheduling on BLE
We have an internet app that uses BLE COC to synchronize the call audio of Android devices to the iPhone side microphone. All of this functions normally, but if two conditions are met: upgrading to IOS27; Connect iPhone to headphones. So the up and down latency of our BLE COC data will be significant and increase proportionally with time. Through the analysis of the air interface logs, it can be seen that the number of retries for COC data on the air interface has significantly increased, and the interval between the other two packets is very large (far greater than the 30 millisecond conn interval). I would like to ask if Apple has adjusted the scheduling strategy of the Bluetooth controller on iOS 27, and how can we adapt to this situation? The attachment is a screenshot of the air interface log. The packet circled in the picture is sent from iPhone to Android, with an interval of 300+ms. It can be inferred that the iPhone protocol stack and Bluetooth controller have already squeezed a large amount of data, and our business bitrate is not high, only about 10K per second
Replies
3
Boosts
0
Views
89
Activity
9h
Does DPLA 3.3.3(P) apply to the new EU-specific Screen Time data export API?
Hi, I'm trying to understand how Section 3.3.3(P) of the Apple Developer Program License Agreement applies to the new EU-specific Family Controls App and Website Usage API. Section 3.3.3(P) restricts sharing usage data beyond the individual and their device. However, Apple's documentation for DeviceActivityData.activityData(filteredBy:using:) explicitly mentions exporting activity data for use in another app or platform. Does this restriction still apply unchanged to the new EU API, or are additional uses permitted? I'm also curious whether this capability was introduced as part of Apple's compliance with the EU Digital Markets Act (DMA). I'm particularly interested in two use cases: Private storage: Storing a user's own usage history in their private CloudKit database or in client-side encrypted cloud storage, so their progress is preserved across devices and reinstalls. Voluntary sharing: Allowing users to share locally calculated milestones (e.g., "Alex spent less than 5 hours on Instagram this week") or exact usage times (e.g., "Alex spent 5h 42m on Instagram this week") with selected friends. Each share would require explicit user action and confirmation, with a clear preview of what's being shared. There would be no automatic background reporting or continuous monitoring by friends. I've already contacted Apple's DMA Compliance team and Developer Support, but was directed here without receiving clarification. I'd appreciate any help understanding how the new EU API relates to the existing restrictions, or who I could ask about this. Thanks!
Replies
0
Boosts
0
Views
43
Activity
9h
App Store watch app won’t install on Apple Watch Ultra 3 (watchOS 27.2 / 27.2.1): install reaches ~100%, then reverts to Install
I’m getting reports that my App Store app’s watch app won’t install on Apple Watch Ultra 3. All three reports so far are from Ultra 3 owners, and I haven’t had any from other models. Symptoms Installing from the Watch app on iPhone: the install spins forever, or it seems to try and then shows the Install button again. Installing from the App Store on the watch: the progress circle reaches about 100%, then reverts to the install icon. One user says it then keeps retrying in the background until it times out. No error is shown on either device. Every other app installs normally. All users have plenty of free space and have restarted both devices and deleted and reinstalled the app. One user had just erased and re-paired the watch, and our app was the only one that wouldn’t install. Another user first saw the watch app crash on every launch under 27.2.1, while its complication kept updating. After they removed the app, it would no longer reinstall. Affected setups Apple Watch Ultra 3 on watchOS 27.2 and 27.2.1 (updating to 27.2.1 didn’t help the user who started on 27.2) Paired with an iPhone 17 Pro Max and an iPhone Duo, both on iOS 27.2 / 27.2.1 About the app Uses the older two-target design: WatchKit App plus WatchKit Extension, not a single-target watch app. ClockKit complication. Deployment target watchOS 9.0. Built with Xcode 27.1 (27A9275), watchOS 27.0 SDK lipo shows arm64 and arm64_32 in the watch app The watch app barely changed from the previous release (storyboard edits only).
Replies
0
Boosts
0
Views
32
Activity
9h
Apple Pay ( auto update )
What is this? You want me to enable automatic updates just so I can use Apple Pay on macOS? Why? So whenever you decide to push an update, you can extract personal data without anyone noticing? Hahahah. Looks like Apple has become just like Windows nothing but bugs and background processes draining resources for no reason. Windows usesd to be like that before 8 years, and now you guys couldn't bear to be left behind either. Great just great. Love how you're using AI without putting an ounce of thought inot it. Updated to 27.2.1, Sifi is supposedly stopped and EVERYTHING is turned off, and yet there it is in Activity Monitor processes running and pegging system resoues at 100%. Just unbeliebale....
Replies
0
Boosts
0
Views
23
Activity
9h
iPhone 17 on iOS 27 cannot connect to a Bluetooth 4.0 BLE peripheral (works on older iPhones with iOS 27)
We have a BLE pulse oximeter (medical device, Bluetooth 4.0 module) that can no longer be connected from iPhone 17 running iOS 27.0.1 and 27.2. CBCentralManager.connect() never results in didConnect or didFailToConnect; the connection stays pending indefinitely. The same accessory works on: iPhone 17 with iOS 26.6.1 iPhone 15 with iOS 27.0.1 iPhone 14 Pro Max with iOS 26.5.2 The issue also reproduces with nRF Connect and LightBlue, so it does not appear to be specific to our app. Other BLE devices connect normally on the same iPhone 17. PacketLogger traces from iPhone 17 (failing) and iPhone 15 (working) are attached to FB25459075. It is possible that the accessory firmware does not fully follow the Bluetooth specification. However, many units are already in use by patients and may not be firmware-updatable. Questions: Is this a known issue with iPhone 17 on iOS 27? Could Apple consider an interoperability fix, since the same accessory works on iPhone 17 with iOS 26.6.1 and on older iPhone models with iOS 27? Is there any workaround we can apply in our app?
Replies
1
Boosts
1
Views
131
Activity
10h
Declared Age Range in sandbox: no sheet at launch, and the set per scenario
We are testing the Declared Age Range API with sandbox testers on an iPhone 17e with iOS 26.6.2 (Xcode 26.6, iOS 26.5 SDK). The app is not yet released; everything here is pre-release testing. We have filed three focused reports: FB25530441 (requestAgeRange returned .declinedSharing with no sheet), FB25530501 (the age that Age Assurance first shows at a sign-in against what the API reads), and FB25530513 (a selected scenario not reflected in requiredRegulatoryFeatures). Four questions remain that are not defects: When a sandbox tester has an Age Assurance scenario selected, should requestAgeRange present the sheet at launch, or answer from the scenario without showing one? Is there a way to see the sheet at launch in sandbox, as a first-time user would, so we can test the share and decline paths end to end? The article "Requesting people's age range information in your app" says the set's values "tell you which actions you need to take for compliance", and the sandbox page lists each scenario's age range, but we found neither saying which members each scenario produces. Please confirm: for each Age Assurance scenario, and for a tester with no scenario selected, what should requiredRegulatoryFeatures contain? Does the tester's App Store territory or creation date matter in sandbox? On 1 and 2. Our app calls requestAgeRange at launch when requiredRegulatoryFeatures contains .declaredAgeRangeRequired. On four days between October 31 and November 7, 2026, at every launch where we know it did make the request, Apple's age range sheet did not appear. Some requests we made by hand from a debug console returned the scenario's range with no sheet: on November 7, one on each of two testers on '13 - 15' returned a shared range of 13 to 15. One such request on October 31 did present the sheet; it is the only sheet on record across the four days (at a few launches the sheet was not written down separately). On 3. What we read on one tester, in this order, each scenario read before and after a relaunch unless noted: No scenario selected (signed in for the first time; Age Assurance showed no option selected), read after a relaunch only: none of the three members. '13 - 15, significant change approved', then '16 - 17, significant change declined', then 'Under 13, significant change approved': .declaredAgeRangeRequired and .significantAppChangeRequiresParentalConsent. '18+, age confirmed, significant change not applicable': .declaredAgeRangeRequired only. '18+, age confirmed, significant change applicable': .declaredAgeRangeRequired and .significantAppChangeRequiresAdultNotification. '18+, age not confirmed, significant change not applicable': .declaredAgeRangeRequired only. For these rows we read contains for the three members the iOS 26.5 SDK defines, so a member outside those three would not show. On November 5 we printed the whole set on 15 reads of sandbox testers, and no other member appeared.
Replies
0
Boosts
0
Views
57
Activity
12h
CloudKit CKShare architecture for family and teacher access with private data separation
Hi everyone, I'm an independent iOS developer currently working on a family sharing feature for an app designed to support children with additional communication and care needs. I'm using CloudKit and CKShare, and I'd really appreciate some architectural guidance before moving into live sharing. The idea is to allow a parent to manage their child's profile and invite family members or teachers to access specific information. For example: Family members could share communication boards, routines and visual supports. Teachers could access school-related information and make authorised changes. Teachers may also need to record daily observations such as toileting, seizures, eating, drinking and sensory events. Parents would control which categories of information teachers can access. Private family wellbeing records and caregiver notes must remain inaccessible unless explicitly shared. I've already successfully tested CloudKit Development connectivity on a physical iPhone, including account status, user identity and private database zone discovery. Before implementing the actual sharing functionality, I'd like to understand the best approach to managing permissions and keeping sensitive information separate. My main questions are: Would separate custom record zones and CKShare relationships be the recommended approach for isolating school-shared data from family-private data? Since CKShare permissions apply at the share level, what's the recommended way to let teachers edit selected information without accessing other sensitive records? For parent-controlled access to individual categories such as toileting or seizure observations, would separate shares or zones per category be advisable? When a parent revokes a teacher's access, what guarantees does CloudKit provide regarding future access, particularly for previously downloaded data? Is there a recommended approach for synchronising school-created observations back into a parent's private history without exposing unrelated family records? My aim is to keep the experience simple for parents and teachers while ensuring that privacy is enforced by the underlying CloudKit architecture rather than relying solely on UI restrictions. I'd really appreciate any advice, recommendations or examples from developers or Apple engineers who have worked with similar sharing requirements. Many thanks!
Replies
0
Boosts
0
Views
48
Activity
12h
Regression in external display identification
Regression in external display identification. Two identical ASUS XG27UCDMG monitors connected directly to a MacBook Air M5 are incorrectly deduplicated into a single external display. macOS enumerates only one external display despite hardware support for two external displays and independent operation of each monitor when connected separately. This was fixed in MacOS 27 but the two most recent updates and the latest 27.2.1 have broken it again.
Replies
0
Boosts
0
Views
16
Activity
12h
Dynamic Island content jitters during updates on iPhone Duo running iOS 27.1
We are experiencing a Dynamic Island rendering issue on a physical iPhone Duo. When the Dynamic Island content updates, the view visibly jitters during rendering. We expect the content to update smoothly without unintended movement or layout shifts. The issue persists even when we use @Environment(.isDynamicIslandLimitedInWidth) to adapt the layout for a width-constrained Dynamic Island. It also occurs with a minimal layout containing only a basic view. Environment iPhone Duo iOS 27.1 Xcode 27.1 Is this a known issue with Dynamic Island on iPhone Duo? Is there a recommended workaround to prevent the content from jittering during updates? Thank you for your help
Replies
1
Boosts
0
Views
151
Activity
12h