Watch Connectivity

RSS for tag

Implement two-way communication between an iOS app and its paired watchOS app using Watch Connectivity.

Posts under Watch Connectivity tag

197 Posts

Post

Replies

Boosts

Views

Activity

Apple Watch won’t show PIN when pairing in Device Hub (Solved)
Xcode 27 Beta 3 / watchOS 27 Beta 3 - Apple Watch won’t show PIN when pairing in Device Hub (Solved) I ran into an issue where my Apple Watch could no longer pair with Xcode after I manually removed it from Device Hub. Environment Xcode 27 Beta 3 macOS Tahoe Beta iOS 27 Beta 3 watchOS 27 Beta 3 Symptoms iPhone appears in Device Hub and is Connected. Apple Watch does not appear in Device Hub. On Apple Watch: Settings → Privacy & Security → Developer Mode → Devices My Mac appears in the list. Tapping the Mac: Enter watch passcode. Tap Pair. Expected: Xcode should display a 6-digit PIN. Actual: Xcode remains on “Waiting to Pair” forever. No PIN is shown. Additional observations Running: xcrun devicectl list devices Only shows the iPhone. The Apple Watch never appears. Also, while reproducing the issue, coredeviced receives no pairing request at all. So it doesn’t look like the pairing challenge is failing—the pairing request never reaches the Mac. Things I tried (none worked) Restarted Mac, iPhone and Apple Watch. Removed pairing from Device Hub. Removed the Mac from Apple Watch Developer Mode → Devices. Turned Developer Mode off/on. Erased and re-paired the Apple Watch with the iPhone. Re-enabled wireless development. None of these solved the issue. Solution What finally worked was surprisingly simple: Completely power off the iPhone. Keep the Apple Watch and Mac powered on. Pair the Apple Watch from Device Hub again. Immediately after the iPhone was powered off, Xcode displayed the pairing PIN and the pairing completed successfully. After the watch was paired, I powered the iPhone back on and everything continued to work normally. My guess It seems the iPhone (the companion device) may be holding a stale developer pairing state after the watch is manually unpaired from Device Hub. With the iPhone powered off, the watch appears to communicate directly with the Mac, allowing the pairing challenge to be created successfully. Hopefully this helps anyone else who gets stuck at “Waiting to Pair” with no PIN appearing.
0
0
67
1w
WidgetKit complications won't update
We are migrating ClockKit complications to WidgetKit in our watch app (watchOS 9+). The migration went smoothly, UI part works just fine. However, we've hit the wall with widgets not updating when requested by the watch app. I believe we are missing something very simple and fundamental, but couldn't find what exactly so far. Advice and tips would be very welcome! 🙇‍♂️ Our implementation details: Whenever data is changed in the main app, the updated data is submitted to the watch app via WatchConnectivity framework using WCSession.default.transferCurrentComplicationUserInfo(_:). According to documentation, this method should be used to transfer complication-related data, since it will wake the watch app even if it is in the background or not opened at all. Watch app receives updated data and stores it in UserDefaults shared with Watch Widget Extension hosting WidgetKit complications via App Group. Watch app then request widget timeline reload via WidgetCenter.shared.reloadAllTimelines(). According to documentation, it reloads the timelines for all configured widgets belonging to the containing app, so it seems the appropriate way to reload WidgetKit complications. Widget Timeline Provider class in Watch Widget Extension reads updated data from shared UserDefaults and uses it to provide the updated snapshot for widget views to render. We believe our implementation logic is correct, but it doesn't work, for some reason. Widgets sometimes update when the watch app is opened, but not always. The most definitive way to force widgets to update is to switch to a different watch face, which confirms that the Widget Timeline Provider has access to properly updated data. P.S. We are aware of the daily reload budget imposed on widgets, so we use widgets reload trigger sparingly. Anyway, according to documentation, reload budget is not effective when in DEBUG mode, but widgets won't reload even in DEBUG mode. Thank you!
20
10
7.6k
1w
Paired Apple Watch never appears in Xcode Devices & Simulators, Developer Mode toggle missing on watchOS
I'm blocked trying to run/debug an app on a physical Apple Watch. The iPhone connects to Xcode perfectly over USB and is fully trusted, but the paired Watch never shows up in Xcode, and because of that the Developer Mode toggle never appears on the watch itself. Environment Mac: MacOS 26.4 Xcode: 26.5 iPhone: iPhone 17, iOS 26.4 — connected to Mac via USB, trusted Apple Watch: Ultra 3, watchOS 26.3 Developer Mode: enabled on iPhone Watch is paired and working normally in the iPhone Watch app What happens In Xcode → Window → Devices and Simulators, only the iPhone ("Brian") shows under Connected, with its installed apps listed correctly. The paired Apple Watch does not appear under it or as a separate entry. On the watch, Settings → Privacy & Security has no Developer Mode item. I understand this only surfaces after Xcode successfully connects to the watch, so I believe the missing Xcode connection is the root cause. When I first connected the iPhone via cable, a Trust prompt did appear on the watch and I accepted it. What I've already tried Enabled Developer Mode on iPhone (toggled off/on, with restarts) Connected iPhone via USB and confirmed Trust on both iPhone and watch Restarted Mac, iPhone, and watch multiple times Confirmed Bluetooth and Wi-Fi are on across all three devices Kept the watch unlocked and on my wrist, close to the iPhone and Mac Despite this, the watch never appears in Xcode and the Developer Mode toggle never surfaces on watchOS. Questions Is this the known Xcode 26 / watchOS 26 tunneling/discovery regression, or is something else going on in my setup? Is there an Apple-supported way to force Xcode to re-discover a paired watch without unpairing it from the iPhone? Has any specific combination of macOS / Xcode / watchOS versions reliably resolved this for anyone? Any guidance appreciated. Happy to file a Feedback Assistant report and share the ID if useful.
1
0
129
2w
XCode - Apple Watch Connectivity
Hi Devs, I'm working with WatchOS for the first time and am having a frustrating time with Xcode to Watch, to say the least. I have a Series 9 dev watch and Xcode does not reliably connect to it. Spending 15-20 min per build/run attempt just trying to get xcode to find and connect to the watch. It WILL sometimes recognize and allow a build to run, the issue is I can't tell any reliable way to establish the connection. It drops after every build and leaves me at square zero. Current solution is some amount of force quitting, reconnecting iPhone to USBC, disconnecting watch to wifi and back on. Devices Window usually reads: Previous preparation error: A connection to this device could not be established.; Timed out while attempting to establish tunnel using negotiated network parameters - swapping to some attempting to connect state that never (reliably resolves). Is this why no one builds for WatchOS? Hoping someone has pro tips on this.
2
2
247
3w
Apple watch Xcode pairing & connection issues
I’m blocked debugging a watchOS app on a physical Apple Watch. The iPhone connects to Xcode normally (wired), but the Watch either fails to connect with a tunnel timeout or disappears entirely from Xcode after I unpaired it inside Devices & Simulators. Environment Mac: macOS 26.x (Apple Silicon Mac) Xcode: 26.2 iPhone: iOS 26.1 Apple Watch Ultra: watchOS 26.2 (build 23S303) Connection: iPhone connected to Mac via USB (trusted). Watch paired to iPhone and working normally in the Watch app. Issue A (when Watch is visible in Xcode) In Xcode → Window → Devices and Simulators, the Watch shows up but is not usable and fails to connect. Error: “Previous preparation error: A connection to this device could not be established.” “Timed out while attempting to establish tunnel using negotiated network parameters.” In some attempts the Watch shows “Capacity: Unknown” / limited details, and then fails during preparation. Issue B (after unpairing Watch in Xcode only) I unpaired/removed the Watch in Xcode (Devices & Simulators). I did not unpair the Watch from the iPhone. Now: iPhone appears in Xcode and works normally for builds. Watch is still paired to the iPhone and works normally. Watch no longer appears anywhere in Xcode Devices & Simulators (no paired watch section, no watch run destination). What I’ve tried Reboots of Mac, iPhone, Watch (multiple times) Watch unlocked, awake; iPhone unlocked and close to Watch Verified Watch is paired and connected in iPhone Watch app Developer Mode enabled on iPhone and Watch Wi-Fi and Bluetooth ON (Mac/iPhone/Watch), tried toggling both Tried on home Wi-Fi and also with iPhone hotspot (same result) Resetting trust prompts / reconnecting iPhone via USB, re-trusting Mac Apple Watch: “Clear Trusted Computers” Xcode: removing/re-adding devices; clearing derived data; restarting Xcode Watch Developer networking test: Responsiveness = Medium (430 RPM) Questions 1. Is this a known issue/regression with Xcode 26.2 + watchOS 26.2 tunneling (CoreDevice / devicectl)? 2. Is there an Apple-supported way to force Xcode to re-discover a paired Watch after it was removed from Xcode Devices & Simulators (without unpairing the Watch from the iPhone)? 3. Any recommended logs or diagnostic steps I should collect (Console logs, sysdiagnose, specific Xcode/CoreDevice logs) to include in a Feedback report? If helpful, I can provide the full error text from Xcode’s Devices window and any logs you recommend. Thank you in advance,
21
16
3.1k
Jun ’26
XCode 26.5: cannot Copy shared cache symbols from Apple Watch
The process of copying shared cache symbols from my Apple Watch has been horrendous. I cannot even get past 2% complete before this process fails. Every device is on the same network. I have trusted my machine. Developer mode is enabled on the watch. I have successfully paired the phone and watch. I managed to install an Watch app onto the watch. But the shared cache symbols were never copied from the watch. I gathered several commands at the terminal to help me. rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ~/Library/Developer/CoreDevice sudo killall -9 remoted CoreDeviceService 2>/dev/null || true xcrun devicectl manage ddis update xcrun devicectl list devices Clear CoreDevice state. With Xcode quit: rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ~/Library/Caches/com.apple.dt.Xcode Reset Xcode's Local Network permission. tccutil reset Local-Network com.apple.dt.Xcode tccutil reset Bluetooth com.apple.dt.Xcode xcrun devicectl device info hardware --device MY_DEVICE_ID xcrun devicectl list devices ping -c 3 MY_IP_ADDRESS Confirm no VPN/proxy/filter is lurking scutil --nwi ifconfig | grep -E "utun|ipsec|tap|tun" xcrun devicectl device info details --device MY_DEVICE_ID xcrun devicectl manage pair --device MY_DEVICE_ID I keep obtain this type of error: Unable to copy shared cache files Domain: com.apple.dt.deviceprep Code: -33 User Info: { DVTErrorCreationDateKey = "2026-05-20 23:41:00 +0000"; NSLocalizedRecoverySuggestion = ""; "com.apple.dt.DVTCoreDevice.operationName" = dtfetchsymbols; } -- The operation couldn’t be completed. No route to host Domain: NSPOSIXErrorDomain Code: 65 Failure Reason: No route to host -- System Information macOS Version 26.5 (Build 25F71) Xcode 26.5 (24943) (Build 17F42) Timestamp: 2026-05-20T16:41:00-07:00 Does anyone have ideas to help me overcome this nightmare?
4
1
514
Jun ’26
Is this normal while developing an app on the watch?
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
9
1
1.3k
May ’26
Gonna say it again. Developing on the Apple Watch is stupid
I dont understand why it is so hard to develop an app on the Apple Watch. The watch never stays connected. The song and dance is just stupid: Go to Settings on the watch Tap on Privacy & Security Scroll down to Developer Mode Toggle developer mode off then on Tap on Restart After watch restarts Enter your pin Turn on Developer Mode Trust your dev laptop Enter your pin again Hope your watch connects Which works most of the time. If it doesnt restart XCode. Why cant Apple fix this?
0
0
250
May ’26
Apple Watch Privacy & Security menu prompts for Screen Time passcode only during Xcode device connection attempts
On watchOS, the Developer Mode entry under Settings -> Privacy & Security is hidden by default and only appears after Xcode has attempted to connect to the watch as a development device. In my case, once Xcode triggers that surfacing, opening Settings -> Privacy & Security on the watch prompts for a 4-digit Screen Time passcode before granting access. No Screen Time passcode I set on the paired iPhone is accepted at this prompt, which prevents me from reaching the Developer Mode toggle to enable it. The passcode prompt only appears in this specific state. With no Xcode connection attempt (and therefore no Developer Mode entry surfaced in the menu), Settings → Privacy & Security opens normally on the watch with no prompt at all. Environment macOS: Tahoe 26.4.1 (Build 25E253) Xcode: 26.4.1 (24909.0.3) (Build 17E202) iPhone: iOS 26.4.2 Apple Watch: Ultra 3 running watchOS 26.4 All devices on release software (no betas). Xcode error Developer Mode disabled Domain: com.apple.dt.deviceprep Code: -28 Recovery Suggestion: To use [Watch Name] for development, enable Developer Mode in Settings → Privacy & Security. User Info: { DVTErrorCreationDateKey = "2026-04-30 09:38:57 +0000"; "com.apple.dt.DVTCoreDevice.operationName" = checkDeveloperMode; } Reproduction Pair Apple Watch to iPhone (paired fresh, set up as new, not restored from backup). Connect iPhone to Mac running Xcode 26.4.1. Before any Xcode connection attempt, open Settings -> Privacy & Security on the watch. The menu opens normally with no passcode prompt. There is no Developer Mode entry visible. In Xcode, attempt to use the Apple Watch as a run destination. Xcode returns the -28 / Developer Mode disabled error above and instructs me to enable Developer Mode in Settings -> Privacy & Security on the watch. After this attempt, the Developer Mode entry is surfaced in Settings -> Privacy & Security on the watch. Open Settings -> Privacy & Security on the watch in this surfaced state. The menu now prompts for a 4-digit Screen Time passcode before allowing access. The passcodes I have set on the paired iPhone are rejected. The passcode prompt is therefore conditional on the Developer Mode entry having been surfaced by a recent Xcode connection attempt. In step 3 (no surfacing) the menu opens freely; in step 6 (surfacing in effect) the menu is gated. What I have already tried Confirmed Screen Time is disabled on the paired iPhone. Confirmed Share Across Devices is enabled. Confirmed Content & Privacy Restrictions is off on the iPhone. Confirmed I am an adult in my Family Sharing group (not a managed/child account). Confirmed there are no configuration profiles installed (Settings -> General -> VPN & Device Management is empty). Set a fresh Screen Time passcode on the iPhone. Not accepted by the watch prompt. Used Forgot Passcode? → Apple ID authentication to reset the Screen Time passcode and set a new one. Not accepted by the watch prompt. Turned the Screen Time passcode off entirely on the iPhone. The watch still prompts for one when Xcode is connecting. Unpaired the Apple Watch and re-paired as new (not restored from backup). Issue persists. Tried entering the watch's own device passcode at the prompt. Not accepted. Question What credential is the watch's Privacy & Security menu actually checking against once the Developer Mode entry has been surfaced, and how can it be reset or cleared from a paired iPhone? Is anyone else seeing this conditional gating where the menu is only locked in the post-surfacing state? Any pointers from the Xcode / watchOS tools team would be appreciated. Happy to provide sysdiagnose or further details on request.
0
0
404
Apr ’26
UpdateApplicationContext Not Receiving updates
Hi community. It's my first time trying WatchConnectivity kit. When I attempt to send ApplicationContext from phone, my debug print indicates that updateApplicationContext is working correctly. However, I'm having trouble receiving it form the paired watch simulator as nothing is shown on that end. Here are the code for the Phone Extension:     func sendDataToWatch(data: String) {         state.append(data)         do {             NSLog("sent by phone")             try WCSession.default.updateApplicationContext(["currentstate": state])         }         catch {             print(error)         }     } Here are the code for watch: func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) {         print("Hello")         if let getState = applicationContext["currentstate"] as? [String]{             print("\(getState)")             self.state = getState[0]         }     } Any suggestion would be appreciated!
13
4
5.6k
Mar ’26
What is it so hard to develop on the Watch?
I am trying to develop a Watch and iOS app as companion. It is beyond stupid how I can not keep the watch connected to Xcode to develop. I have tried all the so-called tricks. Why is this so fragile? The phone is USB connected to my Mac I have tried turning off the wifi on my Mac and have the phone and watch on the same network. Nada I have tried just having everything on the same network. The watch is connected maybe 20% of the time. I have tried creating a hotspot network with my phone. The watch is connected maybe 50% of the time. This is truly an awful experience. Am I doing something wrong? Any advice would be grateful.
2
1
269
Feb ’26
WatchOS version lower than deployment target in Xcode 26
Description: I’m encountering an issue where the Apple Watch’s watchOS version is lower than the deployment target specified in my Xcode project. For example, my Watch device is running watchOS 10.6, but my app’s deployment target is set to watchOS 9.6 or 10.6, and Xcode shows an error stating: Error: “watchOS version doesn’t match the app’s deployment target.” Could someone clarify how to properly handle this version mismatch? Environment: Xcode 26 iPhone: iOS 18 Apple Watch: watchOS 10.6 Any guidance or best practices would be appreciated.
10
2
1.4k
Feb ’26
Crash log
base" : 6481543168, "size" : 5134811136, "uuid" : "7bc5af5f-1e86-3b36-9036-16025c72cb70" }, "vmSummary" : "ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)\nWritable regions: Total=28.8M written=369K(1%) resident=369K(1%) swapped_out=0K(0%) unallocated=28.5M(99%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nActivity Tracing 256K 1 \nAttributeGraph Data 1024K 1 \nCoreAnimation 48K 3 \nDispatch continuations 6144K 1 \nFoundation 16K 1 \nKernel Alloc Once 32K 1 \nMALLOC 16.8M 10 \nMALLOC guard page 3760K 4 \nSTACK GUARD 64K 4 \nStack 2640K 4 \n__AUTH 3975K 362 \n__AUTH_CONST 60.1M 643 \n__CTF 824 1 \n__DATA 28.6M 604 \n__DATA_CONST 24.9M 650 \n__DATA_DIRTY 4800K 581 \n__FONT_DATA 2352 1 \n__INFO_FILTER 8 1 \n__LINKEDIT 188.3M 7 \n__OBJC_RO 84.3M 1 \n__OBJC_RW 3177K 1 \n__TEXT 839.6M 666 \n__TPRO_CONST 128K 2 \nmapped file 32.7M 3 \npage table in kernel 369K 1 \nshared memory 80K 4 \n=========== ======= ======= \nTOTAL 1.3G 3558 \n", "legacyInfo" : { "threadTriggered" : { "queue" : "com.apple.main-thread" } }, "logWritingSignature" : "96bc482de9d7d2e828b9b488a2feab6193d3c188", "bug_type" : "309", "roots_installed" : 0, "trmStatus" : 1, "trialInfo" : { "rollouts" : [ ], "experiments" : [
1
0
459
Jan ’26
How can an iPhone app detect real-time connectivity status of a paired Apple Watch?
I'm developing an iOS app that needs to continuously inform a server whether the user's paired Apple Watch is currently reachable for interactive messaging. If this reachability is lost unexpectedly, the server should be alerted within seconds. This is a safety-critical feature where reliability is essential. The goal (abstractly): The iPhone app needs real-time or near-real-time awareness of whether the paired Apple Watch is reachable. The specific mechanism doesn't matter - I'm open to any approach that achieves this reliably. Context - what already works: The iPhone app successfully maintains continuous server connectivity using an NEAppPushProvider network extension. In practice, this runs reliably in the background and sends periodic heartbeats to the server regardless of main app state. This pattern works well for the phone component. I need to extend this to include the watch's connectivity status in those server updates. Note: WCSession APIs are only available in the main app process, not the Network Extension, so any watch connectivity information must be bridged via the main iOS app (e.g. shared UserDefaults and Darwin notifications). What I've tried: 1. Companion watchOS app sending heartbeats to iPhone via WCSession This was my primary approach: a watchOS app sends messages to the iPhone at short intervals using WCSession.sendMessage(). The iPhone forwards this to the server. If heartbeats stop, the server raises an alert. (I tested various intervals from 2-15 seconds; the specific interval doesn't matter because the fundamental problem is that the watch app is suspended regardless.) Problem: The watch app is suspended almost immediately when: The user presses the Digital Crown The user switches to another app The watch screen dims and shows the clock face (even without explicit backgrounding) Once suspended, Timer.scheduledTimer() stops firing and no heartbeats are sent. 2. WCSession.isReachable monitoring on iPhone I hoped the iPhone could monitor WCSession.isReachable to detect when the watch becomes unreachable. Problem: isReachable indicates whether the counterpart app is reachable for interactive messaging, not the underlying physical connection. It returns false for many reasons - watch app suspended, backgrounded, or various system conditions - making it unreliable as a proxy for actual watch connectivity. The iPhone cannot distinguish "watch app not ready for messaging" from "watch physically disconnected". 3. WKExtendedRuntimeSession on watchOS Problem: Only available for specific scenarios (workout, mindfulness, etc.). My use case is general activity, not fitness tracking. Misusing workout sessions would likely be rejected by App Review. 4. WKApplicationRefreshBackgroundTask on watchOS Problem: These tasks are system-scheduled with timing that varies from minutes to hours depending on system conditions. Far too slow and unpredictable for second-level detection. 5. BLE advertising from watchOS app Problem: BLE advertising stops when the watchOS app is suspended. Same fundamental limitation as the timer approach. 6. Server directly pinging the watch (ICMP or similar) Problem: While Apple Watch can have an IP address via Wi-Fi or cellular (on LTE models), inbound connections to the watch aren't feasible - the watch is behind NAT with no public address, and watchOS doesn't support inbound server sockets (especially in background). This approach isn't practical regardless of connection type. 7. CoreBluetooth scanning from iPhone Problem: Apple Watch doesn't advertise as a discoverable BLE peripheral to third-party apps. The system-level pairing isn't exposed. Why this works on Android/WearOS: On WearOS, a Foreground Service continues running in the background regardless of UI state or screen status (subject to standard OS background limits, but in practice it works reliably). The service sends heartbeats via MessageClient consistently. This "always-on background execution" pattern has no equivalent on watchOS. Questions: Is there any mechanism for an iPhone app to have continuous or regularly-updated knowledge of whether a paired Apple Watch is connected and reachable for interactive messaging - ideally without requiring a watchOS companion app to be in the foreground? Are there any system-level APIs or entitlements (perhaps requiring special approval) that expose watch pairing/connectivity events to iOS apps? Is there any watchOS background execution mechanism I've missed that could keep code running reliably when the app isn't in the foreground? Has anyone solved a similar "detect wearable connectivity loss in real-time" problem on the Apple platform? I understand Apple designed watchOS with aggressive power management for good reasons. If continuous connectivity monitoring truly isn't possible, I'd appreciate confirmation so I can set appropriate user expectations. But given this is a safety-critical use case, I'm hoping there's an approach I've overlooked.
1
0
1.1k
Jan ’26
HKWorkoutSession.sendToRemoteWorkoutSession doesn't report success or failure
We are seeing an issue where sending data using the asynchronous method HKWorkoutSession.sendToRemoteWorkoutSession(data: Data) will never return in some cases (no success nor failure). This issue is happening for roughly 5% of Workouts started and will stay broken for the whole workout. The other 95% of the workouts, the connection works flawlessly. This happens on both watchOS 10 and 11, and with phones running iOS 17 or 18. The issue is quite random and not reproducible. Our app has thousands of workouts a day that use the workout session workout data send, with constant messages being send every few seconds. In some of those 5% cases the "sendToRemoteWorkoutSession" will throw way later, like 30+ minutes later, if the watch app is awake long enough to capture a log of a failure. Our code uses the same flow as in the sample project: https://developer.apple.com/documentation/healthkit/workouts_and_activity_rings/building_a_multidevice_workout_app Here is some sample code, which is pretty simple. Setup code: let workoutSession = try HKWorkoutSession(healthStore: healthStore, configuration: configuration) workoutSession.delegate = self activeWorkoutSession?.startMirroringToCompanionDevice { success, error in print("Mirroring started on companion device: \(success), error: \(error)") } workoutSession?.prepare() then later we send data using the workout session: do { print("Will send data") try await workoutSession.sendToRemoteWorkoutSession(data: data) print("Successfully sent data") // This nor the error may be called after waiting extensive amounts of time } catch { print("Failed to send data, error: \(error)") // This nor the success may be called after waiting extensive amounts of time } So far, the only fix is to restart the phone and watch at the same time, which is not a great user experience. Is anyone else seeing this issue? or know how to fix this issue?
2
0
1.3k
Dec ’25
Apple Watch stuck on "Copying shared cache symbols" – blocks real-time testing via Xcode
Hi everyone, I’m a student developer currently building a watchOS app that uses HealthKit and HKWorkoutSession to estimate core body temperature from real-time heart rate data. The app runs well in the simulator, but testing on a physical Apple Watch has been extremely difficult. Each time I try to run the app from Xcode (Version 16.3), the build gets stuck on: “Copying shared cache symbols from MyWatchName (0% completed)” Sometimes it just stops stating connection failure. However, more often no errors are shown, but the sync never finishes. I’ve tried the following without success: Restarting the watch, iPhone, and Xcode Switching networks (Wi-Fi and hotspot) USB wired pairing Resetting developer settings and trust prompts Deleting derived data Rebuilding the project This is especially limiting for a real-time health tracking app where I need to monitor HKLiveWorkoutBuilder data while the screen sleeps — which can’t be tested effectively in the simulator.
3
1
1.5k
Nov ’25
Can an independent watchOS app be listed under the same iOS app store title of an IOS app?
I have an independent watchOS app, and I am a partner of the related iOS app. This means the IOS app can give me its bundle ID. So, here is the question: If I want my watchOS app be listed under the iOS app store page. Do I only need my bundle ID to be associated with the iOS project ? Is it necessary for the watchOS project and the iOS project to be in the same project?
2
0
456
Nov ’25
Watch App Not available to install
I added an Apple Watch app target for an iOS app. If I install it directly through Xcode it runs, however it seems to be able to communicate with iphone through Watch Connectivity framework and once I close the app it seems to uninstall itself from the watch. When I installed the iphone app frist, the app does not show up on the available apps on the iphone Watch application, what could be the issue ? The iphone app was created using react native through expo. Testing Devices Iphone 13 pro max IOS 26.0.1 --- Apple Watch Series 4 WatchOS 10.6
2
0
926
Nov ’25
Apple Watch won’t show PIN when pairing in Device Hub (Solved)
Xcode 27 Beta 3 / watchOS 27 Beta 3 - Apple Watch won’t show PIN when pairing in Device Hub (Solved) I ran into an issue where my Apple Watch could no longer pair with Xcode after I manually removed it from Device Hub. Environment Xcode 27 Beta 3 macOS Tahoe Beta iOS 27 Beta 3 watchOS 27 Beta 3 Symptoms iPhone appears in Device Hub and is Connected. Apple Watch does not appear in Device Hub. On Apple Watch: Settings → Privacy & Security → Developer Mode → Devices My Mac appears in the list. Tapping the Mac: Enter watch passcode. Tap Pair. Expected: Xcode should display a 6-digit PIN. Actual: Xcode remains on “Waiting to Pair” forever. No PIN is shown. Additional observations Running: xcrun devicectl list devices Only shows the iPhone. The Apple Watch never appears. Also, while reproducing the issue, coredeviced receives no pairing request at all. So it doesn’t look like the pairing challenge is failing—the pairing request never reaches the Mac. Things I tried (none worked) Restarted Mac, iPhone and Apple Watch. Removed pairing from Device Hub. Removed the Mac from Apple Watch Developer Mode → Devices. Turned Developer Mode off/on. Erased and re-paired the Apple Watch with the iPhone. Re-enabled wireless development. None of these solved the issue. Solution What finally worked was surprisingly simple: Completely power off the iPhone. Keep the Apple Watch and Mac powered on. Pair the Apple Watch from Device Hub again. Immediately after the iPhone was powered off, Xcode displayed the pairing PIN and the pairing completed successfully. After the watch was paired, I powered the iPhone back on and everything continued to work normally. My guess It seems the iPhone (the companion device) may be holding a stale developer pairing state after the watch is manually unpaired from Device Hub. With the iPhone powered off, the watch appears to communicate directly with the Mac, allowing the pairing challenge to be created successfully. Hopefully this helps anyone else who gets stuck at “Waiting to Pair” with no PIN appearing.
Replies
0
Boosts
0
Views
67
Activity
1w
WidgetKit complications won't update
We are migrating ClockKit complications to WidgetKit in our watch app (watchOS 9+). The migration went smoothly, UI part works just fine. However, we've hit the wall with widgets not updating when requested by the watch app. I believe we are missing something very simple and fundamental, but couldn't find what exactly so far. Advice and tips would be very welcome! 🙇‍♂️ Our implementation details: Whenever data is changed in the main app, the updated data is submitted to the watch app via WatchConnectivity framework using WCSession.default.transferCurrentComplicationUserInfo(_:). According to documentation, this method should be used to transfer complication-related data, since it will wake the watch app even if it is in the background or not opened at all. Watch app receives updated data and stores it in UserDefaults shared with Watch Widget Extension hosting WidgetKit complications via App Group. Watch app then request widget timeline reload via WidgetCenter.shared.reloadAllTimelines(). According to documentation, it reloads the timelines for all configured widgets belonging to the containing app, so it seems the appropriate way to reload WidgetKit complications. Widget Timeline Provider class in Watch Widget Extension reads updated data from shared UserDefaults and uses it to provide the updated snapshot for widget views to render. We believe our implementation logic is correct, but it doesn't work, for some reason. Widgets sometimes update when the watch app is opened, but not always. The most definitive way to force widgets to update is to switch to a different watch face, which confirms that the Widget Timeline Provider has access to properly updated data. P.S. We are aware of the daily reload budget imposed on widgets, so we use widgets reload trigger sparingly. Anyway, according to documentation, reload budget is not effective when in DEBUG mode, but widgets won't reload even in DEBUG mode. Thank you!
Replies
20
Boosts
10
Views
7.6k
Activity
1w
Paired Apple Watch never appears in Xcode Devices & Simulators, Developer Mode toggle missing on watchOS
I'm blocked trying to run/debug an app on a physical Apple Watch. The iPhone connects to Xcode perfectly over USB and is fully trusted, but the paired Watch never shows up in Xcode, and because of that the Developer Mode toggle never appears on the watch itself. Environment Mac: MacOS 26.4 Xcode: 26.5 iPhone: iPhone 17, iOS 26.4 — connected to Mac via USB, trusted Apple Watch: Ultra 3, watchOS 26.3 Developer Mode: enabled on iPhone Watch is paired and working normally in the iPhone Watch app What happens In Xcode → Window → Devices and Simulators, only the iPhone ("Brian") shows under Connected, with its installed apps listed correctly. The paired Apple Watch does not appear under it or as a separate entry. On the watch, Settings → Privacy & Security has no Developer Mode item. I understand this only surfaces after Xcode successfully connects to the watch, so I believe the missing Xcode connection is the root cause. When I first connected the iPhone via cable, a Trust prompt did appear on the watch and I accepted it. What I've already tried Enabled Developer Mode on iPhone (toggled off/on, with restarts) Connected iPhone via USB and confirmed Trust on both iPhone and watch Restarted Mac, iPhone, and watch multiple times Confirmed Bluetooth and Wi-Fi are on across all three devices Kept the watch unlocked and on my wrist, close to the iPhone and Mac Despite this, the watch never appears in Xcode and the Developer Mode toggle never surfaces on watchOS. Questions Is this the known Xcode 26 / watchOS 26 tunneling/discovery regression, or is something else going on in my setup? Is there an Apple-supported way to force Xcode to re-discover a paired watch without unpairing it from the iPhone? Has any specific combination of macOS / Xcode / watchOS versions reliably resolved this for anyone? Any guidance appreciated. Happy to file a Feedback Assistant report and share the ID if useful.
Replies
1
Boosts
0
Views
129
Activity
2w
XCode - Apple Watch Connectivity
Hi Devs, I'm working with WatchOS for the first time and am having a frustrating time with Xcode to Watch, to say the least. I have a Series 9 dev watch and Xcode does not reliably connect to it. Spending 15-20 min per build/run attempt just trying to get xcode to find and connect to the watch. It WILL sometimes recognize and allow a build to run, the issue is I can't tell any reliable way to establish the connection. It drops after every build and leaves me at square zero. Current solution is some amount of force quitting, reconnecting iPhone to USBC, disconnecting watch to wifi and back on. Devices Window usually reads: Previous preparation error: A connection to this device could not be established.; Timed out while attempting to establish tunnel using negotiated network parameters - swapping to some attempting to connect state that never (reliably resolves). Is this why no one builds for WatchOS? Hoping someone has pro tips on this.
Replies
2
Boosts
2
Views
247
Activity
3w
Camera Control
How control camera Zoom in and Zoom out from external remote by sending HID
Replies
0
Boosts
0
Views
161
Activity
3w
Apple watch Xcode pairing & connection issues
I’m blocked debugging a watchOS app on a physical Apple Watch. The iPhone connects to Xcode normally (wired), but the Watch either fails to connect with a tunnel timeout or disappears entirely from Xcode after I unpaired it inside Devices & Simulators. Environment Mac: macOS 26.x (Apple Silicon Mac) Xcode: 26.2 iPhone: iOS 26.1 Apple Watch Ultra: watchOS 26.2 (build 23S303) Connection: iPhone connected to Mac via USB (trusted). Watch paired to iPhone and working normally in the Watch app. Issue A (when Watch is visible in Xcode) In Xcode → Window → Devices and Simulators, the Watch shows up but is not usable and fails to connect. Error: “Previous preparation error: A connection to this device could not be established.” “Timed out while attempting to establish tunnel using negotiated network parameters.” In some attempts the Watch shows “Capacity: Unknown” / limited details, and then fails during preparation. Issue B (after unpairing Watch in Xcode only) I unpaired/removed the Watch in Xcode (Devices & Simulators). I did not unpair the Watch from the iPhone. Now: iPhone appears in Xcode and works normally for builds. Watch is still paired to the iPhone and works normally. Watch no longer appears anywhere in Xcode Devices & Simulators (no paired watch section, no watch run destination). What I’ve tried Reboots of Mac, iPhone, Watch (multiple times) Watch unlocked, awake; iPhone unlocked and close to Watch Verified Watch is paired and connected in iPhone Watch app Developer Mode enabled on iPhone and Watch Wi-Fi and Bluetooth ON (Mac/iPhone/Watch), tried toggling both Tried on home Wi-Fi and also with iPhone hotspot (same result) Resetting trust prompts / reconnecting iPhone via USB, re-trusting Mac Apple Watch: “Clear Trusted Computers” Xcode: removing/re-adding devices; clearing derived data; restarting Xcode Watch Developer networking test: Responsiveness = Medium (430 RPM) Questions 1. Is this a known issue/regression with Xcode 26.2 + watchOS 26.2 tunneling (CoreDevice / devicectl)? 2. Is there an Apple-supported way to force Xcode to re-discover a paired Watch after it was removed from Xcode Devices & Simulators (without unpairing the Watch from the iPhone)? 3. Any recommended logs or diagnostic steps I should collect (Console logs, sysdiagnose, specific Xcode/CoreDevice logs) to include in a Feedback report? If helpful, I can provide the full error text from Xcode’s Devices window and any logs you recommend. Thank you in advance,
Replies
21
Boosts
16
Views
3.1k
Activity
Jun ’26
XCode 26.5: cannot Copy shared cache symbols from Apple Watch
The process of copying shared cache symbols from my Apple Watch has been horrendous. I cannot even get past 2% complete before this process fails. Every device is on the same network. I have trusted my machine. Developer mode is enabled on the watch. I have successfully paired the phone and watch. I managed to install an Watch app onto the watch. But the shared cache symbols were never copied from the watch. I gathered several commands at the terminal to help me. rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ~/Library/Developer/CoreDevice sudo killall -9 remoted CoreDeviceService 2>/dev/null || true xcrun devicectl manage ddis update xcrun devicectl list devices Clear CoreDevice state. With Xcode quit: rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ~/Library/Caches/com.apple.dt.Xcode Reset Xcode's Local Network permission. tccutil reset Local-Network com.apple.dt.Xcode tccutil reset Bluetooth com.apple.dt.Xcode xcrun devicectl device info hardware --device MY_DEVICE_ID xcrun devicectl list devices ping -c 3 MY_IP_ADDRESS Confirm no VPN/proxy/filter is lurking scutil --nwi ifconfig | grep -E "utun|ipsec|tap|tun" xcrun devicectl device info details --device MY_DEVICE_ID xcrun devicectl manage pair --device MY_DEVICE_ID I keep obtain this type of error: Unable to copy shared cache files Domain: com.apple.dt.deviceprep Code: -33 User Info: { DVTErrorCreationDateKey = "2026-05-20 23:41:00 +0000"; NSLocalizedRecoverySuggestion = ""; "com.apple.dt.DVTCoreDevice.operationName" = dtfetchsymbols; } -- The operation couldn’t be completed. No route to host Domain: NSPOSIXErrorDomain Code: 65 Failure Reason: No route to host -- System Information macOS Version 26.5 (Build 25F71) Xcode 26.5 (24943) (Build 17F42) Timestamp: 2026-05-20T16:41:00-07:00 Does anyone have ideas to help me overcome this nightmare?
Replies
4
Boosts
1
Views
514
Activity
Jun ’26
Is this normal while developing an app on the watch?
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
Replies
9
Boosts
1
Views
1.3k
Activity
May ’26
Gonna say it again. Developing on the Apple Watch is stupid
I dont understand why it is so hard to develop an app on the Apple Watch. The watch never stays connected. The song and dance is just stupid: Go to Settings on the watch Tap on Privacy & Security Scroll down to Developer Mode Toggle developer mode off then on Tap on Restart After watch restarts Enter your pin Turn on Developer Mode Trust your dev laptop Enter your pin again Hope your watch connects Which works most of the time. If it doesnt restart XCode. Why cant Apple fix this?
Replies
0
Boosts
0
Views
250
Activity
May ’26
Apple Watch Privacy & Security menu prompts for Screen Time passcode only during Xcode device connection attempts
On watchOS, the Developer Mode entry under Settings -> Privacy & Security is hidden by default and only appears after Xcode has attempted to connect to the watch as a development device. In my case, once Xcode triggers that surfacing, opening Settings -> Privacy & Security on the watch prompts for a 4-digit Screen Time passcode before granting access. No Screen Time passcode I set on the paired iPhone is accepted at this prompt, which prevents me from reaching the Developer Mode toggle to enable it. The passcode prompt only appears in this specific state. With no Xcode connection attempt (and therefore no Developer Mode entry surfaced in the menu), Settings → Privacy & Security opens normally on the watch with no prompt at all. Environment macOS: Tahoe 26.4.1 (Build 25E253) Xcode: 26.4.1 (24909.0.3) (Build 17E202) iPhone: iOS 26.4.2 Apple Watch: Ultra 3 running watchOS 26.4 All devices on release software (no betas). Xcode error Developer Mode disabled Domain: com.apple.dt.deviceprep Code: -28 Recovery Suggestion: To use [Watch Name] for development, enable Developer Mode in Settings → Privacy & Security. User Info: { DVTErrorCreationDateKey = "2026-04-30 09:38:57 +0000"; "com.apple.dt.DVTCoreDevice.operationName" = checkDeveloperMode; } Reproduction Pair Apple Watch to iPhone (paired fresh, set up as new, not restored from backup). Connect iPhone to Mac running Xcode 26.4.1. Before any Xcode connection attempt, open Settings -> Privacy & Security on the watch. The menu opens normally with no passcode prompt. There is no Developer Mode entry visible. In Xcode, attempt to use the Apple Watch as a run destination. Xcode returns the -28 / Developer Mode disabled error above and instructs me to enable Developer Mode in Settings -> Privacy & Security on the watch. After this attempt, the Developer Mode entry is surfaced in Settings -> Privacy & Security on the watch. Open Settings -> Privacy & Security on the watch in this surfaced state. The menu now prompts for a 4-digit Screen Time passcode before allowing access. The passcodes I have set on the paired iPhone are rejected. The passcode prompt is therefore conditional on the Developer Mode entry having been surfaced by a recent Xcode connection attempt. In step 3 (no surfacing) the menu opens freely; in step 6 (surfacing in effect) the menu is gated. What I have already tried Confirmed Screen Time is disabled on the paired iPhone. Confirmed Share Across Devices is enabled. Confirmed Content & Privacy Restrictions is off on the iPhone. Confirmed I am an adult in my Family Sharing group (not a managed/child account). Confirmed there are no configuration profiles installed (Settings -> General -> VPN & Device Management is empty). Set a fresh Screen Time passcode on the iPhone. Not accepted by the watch prompt. Used Forgot Passcode? → Apple ID authentication to reset the Screen Time passcode and set a new one. Not accepted by the watch prompt. Turned the Screen Time passcode off entirely on the iPhone. The watch still prompts for one when Xcode is connecting. Unpaired the Apple Watch and re-paired as new (not restored from backup). Issue persists. Tried entering the watch's own device passcode at the prompt. Not accepted. Question What credential is the watch's Privacy & Security menu actually checking against once the Developer Mode entry has been surfaced, and how can it be reset or cleared from a paired iPhone? Is anyone else seeing this conditional gating where the menu is only locked in the post-surfacing state? Any pointers from the Xcode / watchOS tools team would be appreciated. Happy to provide sysdiagnose or further details on request.
Replies
0
Boosts
0
Views
404
Activity
Apr ’26
RN IOS APP & WatchOS Companion
I already have a working iOS React Native app and I’m planning to add a watchOS companion app. Is it possible to keep the iOS app and the watchOS app in separate repositories? If so, will WatchConnectivity still work properly between them? Or is it recommended to keep both in a single Xcode project/repository?
Replies
1
Boosts
0
Views
352
Activity
Apr ’26
UpdateApplicationContext Not Receiving updates
Hi community. It's my first time trying WatchConnectivity kit. When I attempt to send ApplicationContext from phone, my debug print indicates that updateApplicationContext is working correctly. However, I'm having trouble receiving it form the paired watch simulator as nothing is shown on that end. Here are the code for the Phone Extension:     func sendDataToWatch(data: String) {         state.append(data)         do {             NSLog("sent by phone")             try WCSession.default.updateApplicationContext(["currentstate": state])         }         catch {             print(error)         }     } Here are the code for watch: func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) {         print("Hello")         if let getState = applicationContext["currentstate"] as? [String]{             print("\(getState)")             self.state = getState[0]         }     } Any suggestion would be appreciated!
Replies
13
Boosts
4
Views
5.6k
Activity
Mar ’26
What is it so hard to develop on the Watch?
I am trying to develop a Watch and iOS app as companion. It is beyond stupid how I can not keep the watch connected to Xcode to develop. I have tried all the so-called tricks. Why is this so fragile? The phone is USB connected to my Mac I have tried turning off the wifi on my Mac and have the phone and watch on the same network. Nada I have tried just having everything on the same network. The watch is connected maybe 20% of the time. I have tried creating a hotspot network with my phone. The watch is connected maybe 50% of the time. This is truly an awful experience. Am I doing something wrong? Any advice would be grateful.
Replies
2
Boosts
1
Views
269
Activity
Feb ’26
WatchOS version lower than deployment target in Xcode 26
Description: I’m encountering an issue where the Apple Watch’s watchOS version is lower than the deployment target specified in my Xcode project. For example, my Watch device is running watchOS 10.6, but my app’s deployment target is set to watchOS 9.6 or 10.6, and Xcode shows an error stating: Error: “watchOS version doesn’t match the app’s deployment target.” Could someone clarify how to properly handle this version mismatch? Environment: Xcode 26 iPhone: iOS 18 Apple Watch: watchOS 10.6 Any guidance or best practices would be appreciated.
Replies
10
Boosts
2
Views
1.4k
Activity
Feb ’26
Crash log
base" : 6481543168, "size" : 5134811136, "uuid" : "7bc5af5f-1e86-3b36-9036-16025c72cb70" }, "vmSummary" : "ReadOnly portion of Libraries: Total=1.0G resident=0K(0%) swapped_out_or_unallocated=1.0G(100%)\nWritable regions: Total=28.8M written=369K(1%) resident=369K(1%) swapped_out=0K(0%) unallocated=28.5M(99%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nActivity Tracing 256K 1 \nAttributeGraph Data 1024K 1 \nCoreAnimation 48K 3 \nDispatch continuations 6144K 1 \nFoundation 16K 1 \nKernel Alloc Once 32K 1 \nMALLOC 16.8M 10 \nMALLOC guard page 3760K 4 \nSTACK GUARD 64K 4 \nStack 2640K 4 \n__AUTH 3975K 362 \n__AUTH_CONST 60.1M 643 \n__CTF 824 1 \n__DATA 28.6M 604 \n__DATA_CONST 24.9M 650 \n__DATA_DIRTY 4800K 581 \n__FONT_DATA 2352 1 \n__INFO_FILTER 8 1 \n__LINKEDIT 188.3M 7 \n__OBJC_RO 84.3M 1 \n__OBJC_RW 3177K 1 \n__TEXT 839.6M 666 \n__TPRO_CONST 128K 2 \nmapped file 32.7M 3 \npage table in kernel 369K 1 \nshared memory 80K 4 \n=========== ======= ======= \nTOTAL 1.3G 3558 \n", "legacyInfo" : { "threadTriggered" : { "queue" : "com.apple.main-thread" } }, "logWritingSignature" : "96bc482de9d7d2e828b9b488a2feab6193d3c188", "bug_type" : "309", "roots_installed" : 0, "trmStatus" : 1, "trialInfo" : { "rollouts" : [ ], "experiments" : [
Replies
1
Boosts
0
Views
459
Activity
Jan ’26
How can an iPhone app detect real-time connectivity status of a paired Apple Watch?
I'm developing an iOS app that needs to continuously inform a server whether the user's paired Apple Watch is currently reachable for interactive messaging. If this reachability is lost unexpectedly, the server should be alerted within seconds. This is a safety-critical feature where reliability is essential. The goal (abstractly): The iPhone app needs real-time or near-real-time awareness of whether the paired Apple Watch is reachable. The specific mechanism doesn't matter - I'm open to any approach that achieves this reliably. Context - what already works: The iPhone app successfully maintains continuous server connectivity using an NEAppPushProvider network extension. In practice, this runs reliably in the background and sends periodic heartbeats to the server regardless of main app state. This pattern works well for the phone component. I need to extend this to include the watch's connectivity status in those server updates. Note: WCSession APIs are only available in the main app process, not the Network Extension, so any watch connectivity information must be bridged via the main iOS app (e.g. shared UserDefaults and Darwin notifications). What I've tried: 1. Companion watchOS app sending heartbeats to iPhone via WCSession This was my primary approach: a watchOS app sends messages to the iPhone at short intervals using WCSession.sendMessage(). The iPhone forwards this to the server. If heartbeats stop, the server raises an alert. (I tested various intervals from 2-15 seconds; the specific interval doesn't matter because the fundamental problem is that the watch app is suspended regardless.) Problem: The watch app is suspended almost immediately when: The user presses the Digital Crown The user switches to another app The watch screen dims and shows the clock face (even without explicit backgrounding) Once suspended, Timer.scheduledTimer() stops firing and no heartbeats are sent. 2. WCSession.isReachable monitoring on iPhone I hoped the iPhone could monitor WCSession.isReachable to detect when the watch becomes unreachable. Problem: isReachable indicates whether the counterpart app is reachable for interactive messaging, not the underlying physical connection. It returns false for many reasons - watch app suspended, backgrounded, or various system conditions - making it unreliable as a proxy for actual watch connectivity. The iPhone cannot distinguish "watch app not ready for messaging" from "watch physically disconnected". 3. WKExtendedRuntimeSession on watchOS Problem: Only available for specific scenarios (workout, mindfulness, etc.). My use case is general activity, not fitness tracking. Misusing workout sessions would likely be rejected by App Review. 4. WKApplicationRefreshBackgroundTask on watchOS Problem: These tasks are system-scheduled with timing that varies from minutes to hours depending on system conditions. Far too slow and unpredictable for second-level detection. 5. BLE advertising from watchOS app Problem: BLE advertising stops when the watchOS app is suspended. Same fundamental limitation as the timer approach. 6. Server directly pinging the watch (ICMP or similar) Problem: While Apple Watch can have an IP address via Wi-Fi or cellular (on LTE models), inbound connections to the watch aren't feasible - the watch is behind NAT with no public address, and watchOS doesn't support inbound server sockets (especially in background). This approach isn't practical regardless of connection type. 7. CoreBluetooth scanning from iPhone Problem: Apple Watch doesn't advertise as a discoverable BLE peripheral to third-party apps. The system-level pairing isn't exposed. Why this works on Android/WearOS: On WearOS, a Foreground Service continues running in the background regardless of UI state or screen status (subject to standard OS background limits, but in practice it works reliably). The service sends heartbeats via MessageClient consistently. This "always-on background execution" pattern has no equivalent on watchOS. Questions: Is there any mechanism for an iPhone app to have continuous or regularly-updated knowledge of whether a paired Apple Watch is connected and reachable for interactive messaging - ideally without requiring a watchOS companion app to be in the foreground? Are there any system-level APIs or entitlements (perhaps requiring special approval) that expose watch pairing/connectivity events to iOS apps? Is there any watchOS background execution mechanism I've missed that could keep code running reliably when the app isn't in the foreground? Has anyone solved a similar "detect wearable connectivity loss in real-time" problem on the Apple platform? I understand Apple designed watchOS with aggressive power management for good reasons. If continuous connectivity monitoring truly isn't possible, I'd appreciate confirmation so I can set appropriate user expectations. But given this is a safety-critical use case, I'm hoping there's an approach I've overlooked.
Replies
1
Boosts
0
Views
1.1k
Activity
Jan ’26
HKWorkoutSession.sendToRemoteWorkoutSession doesn't report success or failure
We are seeing an issue where sending data using the asynchronous method HKWorkoutSession.sendToRemoteWorkoutSession(data: Data) will never return in some cases (no success nor failure). This issue is happening for roughly 5% of Workouts started and will stay broken for the whole workout. The other 95% of the workouts, the connection works flawlessly. This happens on both watchOS 10 and 11, and with phones running iOS 17 or 18. The issue is quite random and not reproducible. Our app has thousands of workouts a day that use the workout session workout data send, with constant messages being send every few seconds. In some of those 5% cases the "sendToRemoteWorkoutSession" will throw way later, like 30+ minutes later, if the watch app is awake long enough to capture a log of a failure. Our code uses the same flow as in the sample project: https://developer.apple.com/documentation/healthkit/workouts_and_activity_rings/building_a_multidevice_workout_app Here is some sample code, which is pretty simple. Setup code: let workoutSession = try HKWorkoutSession(healthStore: healthStore, configuration: configuration) workoutSession.delegate = self activeWorkoutSession?.startMirroringToCompanionDevice { success, error in print("Mirroring started on companion device: \(success), error: \(error)") } workoutSession?.prepare() then later we send data using the workout session: do { print("Will send data") try await workoutSession.sendToRemoteWorkoutSession(data: data) print("Successfully sent data") // This nor the error may be called after waiting extensive amounts of time } catch { print("Failed to send data, error: \(error)") // This nor the success may be called after waiting extensive amounts of time } So far, the only fix is to restart the phone and watch at the same time, which is not a great user experience. Is anyone else seeing this issue? or know how to fix this issue?
Replies
2
Boosts
0
Views
1.3k
Activity
Dec ’25
Apple Watch stuck on "Copying shared cache symbols" – blocks real-time testing via Xcode
Hi everyone, I’m a student developer currently building a watchOS app that uses HealthKit and HKWorkoutSession to estimate core body temperature from real-time heart rate data. The app runs well in the simulator, but testing on a physical Apple Watch has been extremely difficult. Each time I try to run the app from Xcode (Version 16.3), the build gets stuck on: “Copying shared cache symbols from MyWatchName (0% completed)” Sometimes it just stops stating connection failure. However, more often no errors are shown, but the sync never finishes. I’ve tried the following without success: Restarting the watch, iPhone, and Xcode Switching networks (Wi-Fi and hotspot) USB wired pairing Resetting developer settings and trust prompts Deleting derived data Rebuilding the project This is especially limiting for a real-time health tracking app where I need to monitor HKLiveWorkoutBuilder data while the screen sleeps — which can’t be tested effectively in the simulator.
Replies
3
Boosts
1
Views
1.5k
Activity
Nov ’25
Can an independent watchOS app be listed under the same iOS app store title of an IOS app?
I have an independent watchOS app, and I am a partner of the related iOS app. This means the IOS app can give me its bundle ID. So, here is the question: If I want my watchOS app be listed under the iOS app store page. Do I only need my bundle ID to be associated with the iOS project ? Is it necessary for the watchOS project and the iOS project to be in the same project?
Replies
2
Boosts
0
Views
456
Activity
Nov ’25
Watch App Not available to install
I added an Apple Watch app target for an iOS app. If I install it directly through Xcode it runs, however it seems to be able to communicate with iphone through Watch Connectivity framework and once I close the app it seems to uninstall itself from the watch. When I installed the iphone app frist, the app does not show up on the available apps on the iphone Watch application, what could be the issue ? The iphone app was created using react native through expo. Testing Devices Iphone 13 pro max IOS 26.0.1 --- Apple Watch Series 4 WatchOS 10.6
Replies
2
Boosts
0
Views
926
Activity
Nov ’25