On iOS 18, when XCUITest encounters an "Application has not loaded accessibility" error after the 60 second timeout, it performs an undocumented auto-recovery ("Setting up automation session") instead of halting the test as documented. This leaves the XCUITest framework in a corrupted state, causing subsequent tests in the same session to fail with unexpected behavior.
Expected Behavior (per Apple documentation):
Any failure in the launch sequence will be reported as a test failure and the test will be halted at that point.
Actual Behavior:
XCUITest waits 60 seconds for accessibility to load
Logs "Application has not loaded accessibility" error
Instead of halting, performs "Setting up automation session" (auto-recovery)
Test continues with corrupted framework state
Subsequent tests in the same session fail with phantom element queries
Steps
Run XCUITest suite on a real iOS 18 device
Have an app with moderately heavy initialization (e.g., synchronous network operations during bootstrap)
Observe intermittent "accessibility not loaded" errors
When error occurs, subsequent tests fail with unexpected behavior
Test Logs Evidence
First test (accessibility failure + recovery):
t = 11.11s Wait for accessibility to load
t = 71.14s Capturing diagnostic spindump
t = 76.24s Assertion Failure: Application 'com.example.app' has not loaded accessibility
t = 76.26s Setting up automation session ← Undocumented recovery
t = 77.29s Tear Down
Second test (corrupted state):
t = 35.01s Tap "signin-button"
t = 35.55s Waiting for "bannerButtonStackFirstItem" ← Query NOT in test code!
t = 40.58s Assertion Failure: Failed to find element
The second test executes element queries that do not exist in its source code, indicating leaked/corrupted state from the previous test's failed recovery.
Note: The tearDown() method terminates the app but cannot reset the internal state of the XCUITest framework itself, so corruption persists across tests.
We are observing this behavior consistently on iOS 18 real devices. We would like to know:
Is this a known issue with XCUITest on iOS 18?
Is anyone experiencing similar "accessibility not loaded" failures followed by auto-recovery?
Is the "Setting up automation session" recovery behavior intentional or a bug?
Is there a recommended workaround to prevent framework state corruption between tests?
General
RSS for tagDive into the vast array of tools and services available to developers.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I used to develop iPhone apps about a decade ago and am now back at it with an iPhone and companion Apple Watch app.
Why does it suck so bad? I a must be doing something wrong, but what I am doing is out of the box. The majority of the time when I go to build on the watch I get:
Previous preparation error: A connection to this device could not be established.; Timed out while attempting to establish tunnel using negotiated network parameters.
Which I then first try to force quit the app on the watch and if that does not work, reboot the watch (which is pretty ridiculous).
I tried Gemini and it gave me the following explanation:
This is arguably the single most frustrating error in the entire watchOS development ecosystem. As an expert, I can tell you that you are not doing anything wrong; you are fighting a fragile architecture.
Here is the technical breakdown of why this happens and a workflow to mitigate it without constant reboots.
The Technical "Why"
This error message reveals that the issue lies in the CoreDevice (and formerly usbmuxd) infrastructure, specifically in the secure transport layer.
The "Tunnel" Failure: Xcode attempts to establish a secure, encrypted tunnel (DTXConnection) to the Apple Watch to push the debugger and the app binary. Unlike the iPhone, which can sustain a high-bandwidth connection easily, the Watch aggressively manages its radios (Bluetooth vs. WiFi vs. AWDL) to save battery.
The "Handshake" Timeout: If the Watch is on Bluetooth (Low Energy) when Xcode initiates the tunnel, the bandwidth is insufficient. The system tries to escalate the connection to WiFi (or Apple Wireless Direct Link). If this negotiation takes even a few milliseconds too long—due to 2.4GHz interference, router mDNS configuration, or the Watch CPU being throttled—the handshake times out.
The "Previous Preparation Error": This is the insidious part. Once the handshake fails once, Xcode’s device service caches that failure state for the device UUID. It marks the device as "unreachable" to prevent the IDE from hanging indefinitely on subsequent tries.
Why you see it constantly: You aren't actually triggering a new connection attempt; you are hitting the cached "failed" state immediately.
Unfortunately, the solutions it gives me are:
The "Wired Proxy" Method (Most Reliable)
This is the gold standard for watchOS debugging. Do not rely on "Connect via Network" for the Watch directly if you can avoid it.
Disable WiFi on your Mac (temporarily) or ensure the Mac and iPhone are on the exact same SSID.
Plug your iPhone into the Mac via USB.
Ensure the Watch is paired to that iPhone.
Result: Xcode will tunnel the instructions through the USB connection to the Phone, and the Phone acts as a high-bandwidth proxy to the Watch. This eliminates the "Mac-to-Watch" WiFi negotiation failure point.
Do you hit this regularly? What do you do to make for a smooth development and deployment process? Or is it really this fragile?
Thanks for any help!
Bryan
Failed to fetch certificates:
This request is forbidden for security reasons - Unable to find a team with the given Content Provider ID '72df6041-c291-4d95-b690-2a3b75ff72f6' to which you belong. Please contact Apple Developer Program Support. https://developer.apple.com/support
Hello Apple Developer Support,
I am writing to seek assistance with an issue we are experiencing in our SwiftUI application concerning UI test cases.
Our application uses accessibility labels that differ slightly from the display content to enhance VoiceOver support. However, we have encountered a problem where our UI test cases fail when the accessibility label does not match the actual display content.
Currently, we are using accessibility identifiers in our tests, but they only retrieve the accessibility label, leaving us without a method to access the actual display content. This discrepancy is causing our automated tests to fail, as they cannot verify the visual content of the UI elements.
We would greatly appreciate any guidance or solutions you could provide to address this issue. Specifically, we are looking for a way to ensure our UI tests can access both the accessibility label and the actual display content for verification purposes.
For ex:
Problem scenario - setting accessibilityLabel masks access to any displayed content
If an accessibilityLabel is set on a UI element, then it seems to be no-longer possible to check/access the displayed content of that element:
var body: some View {
Text("AAA")
.accessibilityIdentifier("textThing")
.accessibilityLabel("ZZZ") // Different label from the text which is displayed in UI
}
// in test...
func test_ThingExists() {
XCTAssert(app.staticTexts["AAA"].exists) // Fails, cannot find the element
XCTAssertEqual(app.staticTexts["ZZZ"].label, "AAA") // Fails - '.label' is the accessibilityLabel, not the displayed content
XCTAssertEqual(app.staticTexts["ZZZ"].label, "ZZZ") // Passes, but validates the accessibility content, not the displayed content
XCTAssert(app.staticTexts["textThing"].exists) // Passes, but does not check the displayed content
XCTAssertEqual(app.staticTexts["textThing"].label, "AAA") // Fails - '.label' is the accessibilityLabel, not the displayed content
XCTAssertEqual(app.staticTexts["textThing"].label, "ZZZ") // Passes, but validates the accessibility content, not the displayed content
}
element.label still only checks the accessibilityLabel. There is not, it seems, an way back to being able to check the content of the Text element directly.
Thank you for your attention and support. We look forward to your valuable insights.
Hello,
I am currently in the process of gradually adding support for LiquidGlass to my app. The transition is taking place incrementally, i.e., new screens and minor features are gradually being adapted to the new design and already deployed.
Currently, the old design is still active via the feature flag UIDesignRequiresCompatibility, as the existing UI should remain locked for the public app store version until the transition is complete.
My challenge is as follows:
I would like to work with the new LiquidGlass design during development without having to manually change the UIDesignRequiresCompatibility flag with each deployment.
Ideally, I am looking for a solution where:
• the new design is only activated for me (e.g., specific account or specific devices)
• the old design remains active for all other users
• the App Store version can be delivered unchanged
So my question is:
Is it possible to control UIDesignRequiresCompatibility via remote config or server-side logic in order to activate the new design specifically for certain users or devices?
I have observed similar behavior on WhatsApp—two devices with the same app version, but only one shows the new design. This suggests server-side or remote config-based control.
Do you have any experience or recommendations on how to implement something like this cleanly?
Kind regards
Heinz
There was a time that Apple Developer Documentation provides a filter to show the changes across versions, at https://developer.apple.com/documentation/technologies , with purple (modified), green (added), and red (deprecated) annotations.
I wonder if this feature is completely removed, or is it still hiding somewhere? It is helpful to diff the API changes among versions. Thanks.
edit: as pointed out by Rick, here is an archive link to what it used to look like
Dear Apple,I'm an iOS developer and provided feedback in the good old online bug tracker for many years.Decent conversations with Apple egnineers often resulted in bug fixes or updated documentation.The fact that my contributions helped to improve the products was rewarding.So I kept adding reports in the new Feedback Assistant app in macOS Catalina.But ever since (September 2019) I never ever got any response on any ticket.1 month ago I even added a report if Apple even read my reports. Again, no response ever since.So my question on this forum: Is Apple actually reading reports in the new Feedback Assistant?This can either be answered by Apple, or by other Developers that hopefully did response feedback from Apple. Or did not.Best regards,Martijn
(Copy pasted from FB17261080 that I submitted)
Hi:
Apple's SDK (libSystem.B.tbd) provides definition for multiple symbols(__unw_add_dynamic_fde / __unw_add_find_dynamic_unwind_sections ), but doesn't provide corresponding headers, available in LLVM upstream as libunwind_ext.h
We need such headers to write Exception-Enabled JIT Framework for macOS
I want to create a dynamic library for my iOS project, which would be loaded at runtime.
In Xcode, there are templates available for creating a static/dynamic lib for MacOS. But under the iOS tab, there is only a "static library" template.
So, I used the "static library" template and in its build settings I changed the Mach-O type to "dynamic library".
Now after building it, I use the file command on the generated file and it tells me it is a dynamic lib.
But the generated file still has .a extension, which is usually for static libs.
I'm aware we can tell Xcode in build settings to change the .a extension to something else, say .dylib but this seems like a hacky way to create a dynamic library.
What is the correct way?
I am aware that standalone dylibs are not supported on iOS, and we need to wrap them in a framework.
For my use case, the framework will literally be a wrapper, it won't have any source files of its own. It should only contain the dynamic lib generated from some independent codebase. I am not sure how to place the dylib in the framework.
I'd like to give control to the app developer that uses my library to select which level of logs they'd like to see from my lib (e.g. do they want to see all debug messages or just errors).
I know there are filtering controls that Xcode gives us, but I'm wondering if there is a way to pull this off with code. Ideally the user callsite would look like MyLib(logLevel: .info).
And then I would pass that info level somehow to OSLog. Today, I create my logger like this:
let myLogger = Logger(
subsystem: Bundle.main.bundleIdentifier ?? "UnknownApp",
category: "MyLibrary"
)
As far as I can tell, there is nothing I can then pass to my myLogger instance to configure the threshold level. I'm imagining an interface like:
myLogger.logLevel(.warning)
// Later...
myLogger.debug("You won't see this")
myLogger.error("But you will see this")
Does OSLog and friends give us any ability to do this out of the box, or are we building little wrappers around OSLog to accomplish this?
Thank you,
Lou
Hi all,
I’m developing a watchOS app and have seen cases where the app is terminated by the system — for example, due to CPU usage limits being exceeded (watchdog termination). Here’s a portion of one of the crash reports:
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: CAROUSEL 2343432205
<RBSTerminateContext| domain:10 code:0x8BADF00D explanation:[app<app_name>:898] Failed to terminate gracefully after 5.0s
ProcessVisibility: Foreground
ProcessState: Running
WatchdogEvent: process-exit
WatchdogVisibility: Foreground
WatchdogCPUStatistics: (
"Elapsed total CPU time (seconds): 11.280 (user 9.800, system 1.480), 100% CPU",
"Elapsed application CPU time (seconds): 5.162, 46% CPU"
) reportType:CrashLog maxTerminationResistance:Interactive>
My questions:
1.) Is there any way to get notified (via Crashlytics, Xcode Organizer, or any other reporting mechanism) when this type of system-level termination happens — similar to how we’re notified of crashes?
2.)Is there any way for a watchOS app to receive runtime warnings from the system when it’s about to exceed CPU or memory limits — similar to UIApplication.didReceiveMemoryWarningNotification on iOS?
Thanks in advance!
Topic:
Developer Tools & Services
SubTopic:
General
For my app Find Any File, of which both releases and TestFlight betas were released many times, the TestFlight page tells me that several users have submitted crash reports. And I'm sure the same is true for the MAS releases:
(Yes, this shows quite recent ones, but I've seen similar supposed crash report submits in this list before.)
However, the actual "Crashes" listing on the appstoreconnect sites hasn't show any new crash reports for many months now:
(This is the entirety of crash reports I can get listed, even when removing all filters.)
Something appears to be stuck, on Apple's end.
The same issue is with Xcode's Organanizer window, for "Crashes": It also used to list only the same very old reports and nothing since May 2024. And just now, when I retried this in Xcode, I'm shown a weird error message I never saw before:
Error Downloading Crashes List
An error occurred… Access Restricted with adam id: 1207815783
And yes, I'm logged in just fine, under Prefs / Accounts.
How am I going to get this investigated? I had already sent an email about this to the Review team, who didn't react to it at all. DTS is only for Code level support, which this isn't.
Any help?
We are looking for a platform or portal provided by Apple that allows us to track crashes, hangs, or other runtime issues faced by users while using our iOS/macOS application. This is similar to how we currently use Windows Error Reporting (WER) for our Windows application.
Important note: Our application is not distributed via the Apple App Store — it is delivered through enterprise distribution or ad-hoc provisioning.
Topic:
Developer Tools & Services
SubTopic:
General
Tags:
MetricKit
App Store
Custom Apps
Enterprise
I'm using Xcode 16.3 and I want to add the key "NSUbiquitousContainers" but I cannot do it in the Entitlements file, it should be in info.plist file! I have done it before but in previous versions of Xcode when the info.plist was in the project navigator.
However, now I cannot find the file and I did not find any way to create it!
Please guide me in detail how to proceed (I'm not new to Swift or SwiftUI but not familiar to project settings)?
I use CMake for my builds not the XCode GUI.
I want to be able to build a single .app that contains both the GUI version and the command line version. I have seen products that ship both as part of the same .app (e.g. CMake) so this is clearly entirely possible, the 64k question is HOW?
Right now I am building them as separate apps - lets call them DSS and DSSCL (*).
The code base for each is in its own directory - each with its own CMakelists.txt file.
My initial thoughts are to change the build for DSSCL so it doesn't create a bundle and then simply copy the DSSCL command and related .qm files into DSS.app/.../MacOS.
However that's likely enough totally wrong, so how should I handle this please.
As much detail as possible please, I am very new to macOS development -please don't assume knowledge of stuff that's second nature to you
Many thanks
David
(*) Strictly they are DeepSkyStacker and DeepSkyStackerCL
Topic:
Developer Tools & Services
SubTopic:
General
Hello,
I currently have a live application in the iOS App Store that needs an update to start functioning again, but I've lost the source code in a hard drive failure. Is there a way to reverse engineer the currently deployed package that is live (and also a way to download it from App Store Connect)⁉️
The development change itself is just a very small change for an API route in the code itself. I could even direct an engineer at Apple to make the change in 5 minutes!
Let me know if this is possible.
Thanks❗️
About three weeks ago I submitted a DTS ticket (13097367) to receive code level support with a potential SwiftUI bug. At first I did not receive any response at all (beside the automatic confirmation that the ticket has been created).
Only after posting the question here, I got a reply from a DTS engineer. However, the proposed solution did not really solve the problem but only circumvents it (UI freezes when ScrollView reaches below SafeArea. Solution: Do not use ScrollView below SafeArea...)
I pointed out, that this does not really help me. Since then I did not receive any further response.
Is this normal? Is there something wrong with my ticket? Maybe it was closed by accident or something?
Thank you very much!
Hello Apple Support,
I’m facing an issue with Background Fetch in my React Native project. When I click on Simulate Background Fetch in Xcode, everything works as expected on the iOS Simulator—background tasks run smoothly, and data is fetched without issues. However, on a real device, the app goes to the background but doesn’t execute any of the scheduled background tasks, and it also remains in the background without terminating.
Here’s some additional context:
React Native Project: I’m using React Native to develop this app, and the background tasks involve:
Getting User Location: Fetching the user’s location in the background.
API Calls: Calling an API to fetch necessary information based on the user’s location.
Scheduling Notifications and Alarms: Scheduling notifications and alarms based on the API response data.
Simulator vs. Real Device:
In the iOS Simulator, all these background tasks trigger and function correctly when I simulate Background Fetch.
On the real device, however, none of these tasks are triggered when I try to simulate Background Fetch. The app only moves to the background without performing any tasks or getting terminated.
Device and Configuration Details:
iOS Version: 17
Device Model: Iphone xs, Iphone 11, iphone 7
Background Modes: Background Fetch is enabled in Capabilities, and I’ve set the fetch interval to the minimum for testing.
I’ve verified that all configurations are correctly set, and I’ve tried restarting the device and Xcode, but the issue persists. Is there something specific about Background Fetch that could prevent it from functioning as expected on physical devices? Any guidance on troubleshooting or additional steps would be highly appreciated.
Thank you!
Hi, I have an iOS project with the following app targets:
main iOS application
a notification service extension
5 static libs containing some swift files with public methods
1 dynamic framework with above static libs as dependencies.
The framework only contains 2 files - a default .h file and 1 .exp file. This exports file contains mangled-names of all the public methods that are exposed by the 5 static libs present as framework's dependencies. I obtained these symbols using the nm command for each static lib.
The main iOS app target has 2 dependencies - the framework and the notification extension.
The notification extension only depends on the framework.
This setup works perfectly fine. I wanted to understand:
If using the exports file is the only way to make this setup work?
If not, what else can I do?
What way does Apple recommend?
According to my requirements, I only need at-most 2-3 functions to be exposed by the framework - thus using a exports file just for that seems to bug me.
Thank you.
When a static library is built with Xcode 26 (with deployment target set to iOS 13) and then linked into an app project compiled with Xcode 16, the build process fails with the following linker error:
Undefined symbols for architecture arm64:
"_swift_coroFrameAlloc"
This occurs even though both the static library and the app project have their deployment targets set to iOS 13.0. The static library works on Xcode 26, but fails to link on Xcode 16.
This issue shows up with certain Swift syntax. For example, in my case, using a property getter and setter caused the compiler to emit a reference to _swift_coroFrameAlloc, which in turn triggered the issue.
This issue prevents us from distributing pre-built static libraries compiled with Xcode 26 to teammates who are still using Xcode 16.
I’ve filed feedback for this issue (FB21130604).
Is there any way to work around it? For example, by adding specific Build Settings or something similar?
A demo project is available here: https://github.com/Naituw/SwiftLibraryDeploymentTargetIssue
The demo project includes:
StaticLibraryProject: A simple Swift static library with property getter setter usage
AppProject: An iOS app that links against the static library
verify_compatibility.sh: An automated script to reproduce the issue
Method 1: Manual Build and Verification
Open StaticLibraryProject/StaticLibraryProject.xcodeproj in Xcode 26
Build the StaticLibraryProject for iOS device (Release configuration)
Locate the built libStaticLibraryProject.a in the build products directory
Copy libStaticLibraryProject.a to AppProject/AppProject/ directory
Open AppProject/AppProject.xcodeproj in Xcode 16
Build the AppProject for iOS device
Method 2: Automated Script
Edit verify_compatibility.sh to configure the paths to your Xcode installations:
Set XCODE_26_PATH to your Xcode 26 installation path (e.g., /Applications/Xcode.app)
Set XCODE_16_PATH to your Xcode 16 installation path (e.g., /Applications/Xcode16.app)
Run the script: ./verify_compatibility.sh