I'm developing a watchOS companion app for my iOS app in Xcode 26.0.1 on macOS Sequoia. The watch app uses a simple ObservableObject class with @Published properties for state management, which compiles fine for iOS but fails for the watchOS target.
Error:
Initializer 'init(wrappedValue:)' is not available due to missing import of defining module 'Combine'
Code:
swiftimport SwiftUI
import WatchConnectivity
import Combine // Added explicitly
class WatchConnectivityProvider: NSObject, ObservableObject {
@Published var distance: Double = 0
@Published var isActive: Bool = false
// Additional @Published properties...
}
Environment:
Xcode 26.0.1 (17A400)
macOS Sequoia
watchOS deployment target: 11.0
Apple Watch Series 11 running watchOS 11.6.1
What I've tried:
Adding import Combine explicitly
Cleaning build folder
Verifying target membership
This same code pattern works in the iOS target
Is @Published / Combine supported differently in watchOS under Xcode 26? This code worked in previous Xcode versions. What's the recommended approach for observable state in watchOS apps with Xcode 26?
Posts under watchOS tag
144 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Are there any HealthKit related changes to be aware of in the new update that enables SPO2 / Blood Oxygen Saturation measurements on certain Apple Watch models within the US?
I’m aware of processing happening on the phone…. But beyond that:
Does this mean values are then saved to Apple Health?
Do these models still take background SPO2 measurements in the same way as other models do?
Are these values then visible in third party iOS apps as normal through HealthKit?
Do these values sync back to the paired Apple Watch HealthKit store for third party apps to access on the Watch?
For reference I have an iOS and WatchOS app that, amongst other features, provides the ability to see your SPO2 values in the Watch app, complications and in the iOS app.
Topic:
App & System Services
SubTopic:
Health & Fitness
Tags:
WatchKit
Health and Fitness
watchOS
HealthKit
Notification coordination between iOS and watchOS is not working properly
watchOS and iOS try to coordinate between phone and watch notifications.
The concept here is that if there is a main app and a companion app, they could both be sending a notification, then the notification would alert on both, which is a deviation from how notification mirroring is handled if there is an iOS app but no watch app.
The watch waits for the iOS notification to fire so they can determine if this is the same notification that needs to be deduped, displayed on one device but not the other, or separate notifications to be displayed both.
If there is no notification on the phone, the watch will timeout after 13 seconds and alert anyway.
If you have an iOS companion app, the best solution to this is to send the same notification on both devices simultaneously, and ensuring the UNNotificationRequest.identifier matches on both notifications. This will let the systems determine how to handle the notification correctly and quickly, and the notification will alert right away.
https://developer.apple.com/forums/thread/765669
According to the above article, "when a notification arrives on watchOS alone first, it coordinates with iOS," but in reality, it doesn't work properly.
Detailed process of this phenomenon
watchOS receives a notification.
On watchOS, the notification is not immediately shown to the user.
iOS receives a notification with the same UNNotificationRequest.identifier as in (1).
The notification in (3) does not appear on either iOS or watchOS. However, the notification from (3) does appear in iOS Notification Center.
Thirteen seconds after watchOS received the notification, the notification from (1) is shown to the user on watchOS.
In the end, the iOS and watchOS notifications are not consolidated and each remains in its respective notification center.
Up to (3) there are no issues. Starting with (4), both iOS and watchOS exhibit a lot of odd behavior.
This phenomenon occurs with both local notifications and push notifications.
When iOS receives the notification first, there is no problem. The notification for watch received later is processed appropriately, and the watchOS notification is not additionally displayed to the user.
Expected proper process
Same as above.
Same as above.
Same as above.
The notification in (1) is integrated into the notification in (3).
The notification in (3) is alerted to the user immediately.
2 sample projects to reproduce
Only the main code is attached.
Sample project1: local notifications
Swift code for local notification app (iOS, watchOS) - App.swift.txt
Sample project2: push notifications
This sample project is implemented using Firebase Functions and Firebase Cloud Messaging.
Swift code push notification app (iOS, watchOS) - App.swift.txt
Server side JavaScript code for FirebaseFunction - index.js.txt
Tested devices and OS
This phenomenon occurred in both of the following patterns.
Pattern 1
Xcode 26.0
iPhone 16 (iOS 26.0)
Apple Watch series 10 (watchOS 26.0)
Pattern 2
Xcode 16.4
iPhone 11 (iOS 18.6)
Apple Watch SE 2nd gen (watchOS 11.6)
Question
Is this phenomenon a bug?
Or is my understanding or implementation incorrect?
Feedback Assistant number
FB20339772
Hello,
I’ve run into an issue with a configuration profile on my supervised iPhone. I’m wondering if anyone here might be able to help?
The profile contains the allowListedAppBundleIDs key within the restrictions payload. My Apple Watch is paired with the iPhone. The iPhone was supervised manually with Apple Configurator, hence the Apple Watch has not been directly supervised itself.
The profile works completely as expected when installed on the phone. As soon as the profile is installed on the iPhone, I can witness the apps on the Apple Watch rearrange themselves as some apps are hidden. So clearly the profile is applying its restrictions to the Apple Watch to some degree.
My issue however is that apps listed in the whitelist are hidden from the Watch. The apps that are missing from my Watch are Walkie Talkie, Find My Items, Find My Friends, Messages, Alarm, Remote, Now Playing, Sleep, Meditation and Heart Rate. This is despite the following bundle IDs being listed in the whitelist array: com.apple.findmy.findpeople, com.apple.findmy.finddevices, com.apple.HeartRate, com.apple.SessionTrackerApp, com.apple.NanoWorldClock, com.apple.findmy.finditems, com.apple.Mind, com.apple.NanoOxygenSaturation, com.apple.watchmemojieditor com.apple.NanoSleep com.apple.NanoNowPlaying com.apple.noise com.apple.tincan com.apple.NanoRemote com.apple.NanoAlarm com.apple.private.NanoTimer com.apple.NanoStopwatch
I’ve done some testing, but not sure what I’ve found really. I’ve so far identified 3 scenarios.
Scenario 1: I have the whitelist profile installed on the iPhone. I download an app that appears in the whitelist from my watch (or at least its iPhone version does). The apps show up on the iPhone automatically and can be launched there. These apps cannot be launched on the watch.
Scenario 2: I downloaded a few apps to my watch, that didn’t automatically install on my iPhone at the same time. They were on the whitelist. These ones couldn’t be launched from my Watch. I then downloaded them to the iPhone and they could be launched there (since they were on the whitelist).
Scenario 3: A couple of 3rd party apps on the whitelist could be downloaded and launched from the watch with the whitelist installed.
It seems as though there are different kinds of Apple Watch app and this is what I’ve read elsewhere. First of all there are Watch-only apps, which do not automatically install a companion iPhone app. Secondly there are companion apps, which when installed from the Watch App Store download their companion app to the iPhone in the background. Someone please correct me - I’m bound to be overlooking something here.
So maybe the apps that when installed from Watch automatically install on iPhone and can only be launched from the iPhone have a separate bundle ID for their Watch app which I haven’t included?
Apps that are on the whitelist AND do not automatically install an iPhone app AND can be launched from the Watch, include:
solstice
What3words
So maybe these do not need a companion app, but have the same Bundle ID as their iPhone app?
However, I’m still not sure why many stock Apple Watch apps are missing from the Watch…. The most obvious answer is that I’ve got their Bundle IDs wrong, but I don’t think I have given I extracted the bundle IDs from the App Store pages of the Apple WatchOS apps.
I noticed at this Apple Support page (https://support.apple.com/en-gb/guide/deployment/dep34c5cd30f/1/web/1.0) that there is no mention of whitelisting or blacklisting apps on WatchOS using MDM, yet something definitely happens on the watch when the configuration profile is installed on the iPhone. Furthermore, if I tap on a configuration profile, which comprises a blacklist, on my iPhone it will ask me if I want to install it on the iPhone or Watch. The same pop-up question doesn’t happen when the profile contains a whitelist.
All this to say, I’m massively confused as to why I can’t get this working. I’d really appreciate anyone’s advice which is bound to be expert.
Thank you
Hello, everyone!
I'm seeking some guidance on the App Store review process and technical best practices for a watchOS app.
My goal is to create an app that uses HealthKit to continuously monitor a user's heart rate in the background for sessions lasting between 30 minutes and 3 hours. This app would not be a fitness or workout tracker.
My primary question is about the best way to achieve this reliably while staying within the App Store Review Guidelines.
Is it advisable to use the WorkoutKit framework to start a custom, non-fitness "session" for the purpose of continuous background monitoring?
Are there any other recommended APIs or frameworks for this kind of background data collection on watchOS that I should be aware of?
What are the key review considerations I should be mindful of, particularly regarding Guideline 4.1 (Design) and the intended use of APIs?
My app's core functionality would require this kind of data for a beneficial purpose. I want to ensure my approach is technically sound and has the best chance of a successful review.
Any insights or advice from developers who have experience with similar use cases would be incredibly helpful!
Thank you!
Topic:
App & System Services
SubTopic:
Health & Fitness
Tags:
SensorKit
Health and Fitness
watchOS
Watch Complications
I added a watchkit extension to an existing app.
I get this error when uploading to App Store Connect. Building the archive itself is fine:
Prepared archive for uploading
Upload failed
error: Validation failed
Missing Info.plist value.
A value for the key “WKApplication”, or “WKWatchKitApp” if your project has a WatchKit App Extension target, is required in “Runner.app/Watch/watch_Watch_App.app” bundle.
For details, see: https://developer.apple.com/documentation/watchkit/creating_independent_watchos_apps/setting_up_a_watchos_project
have the exact same issue when bundling. I added the flag manually in a additional plist fields entry with WKApplication=1 because my Info.Plist is generated and it didn't help. I wrote a custom Run Script Phase that added the flag and that didn't help as well.
I need a reply from someone from Apple here. This needs to be fixed.
Hi everyone,
I’m building a sports performance app for Apple Watch that uses the onboard IMU to analyze swings and impacts in sports like tennis and golf. The goal is to estimate club/racket head speed, ball speed, and shot quality in real time from wrist motion data.
With Core Motion, I can currently get deviceMotion updates at ~100 Hz. While this is fine for general movement tracking, the actual ball impact happens much faster — 5–10 ms in tennis and ~0.5 ms in golf. Many of the high-frequency vibration/impact components are missed at 100 Hz, making it hard to directly measure or more accurately estimate certain performance metrics.
Questions for Apple / community:
1. Is there a way to access raw accelerometer and gyroscope data at higher sampling rates (e.g., 500–1000 Hz) on Apple Watch?
2. If not, is this due to hardware limitations or an API/software constraint?
3. Are there any research, partner, or beta programs that allow deeper sensor access for sports-science use cases?
Even modest increases in IMU sampling could unlock more accurate ball-speed estimates, impact force analysis, and strike-quality detection without needing external sensors — making Apple Watch a best-in-class wearable for precision sports analytics.
Happy to share more about the current approach, sample data, and potential use cases if helpful.
Thanks,
Max
I struggling in getting Xcode Cloud to work with a stand alone watch app. This app has the following three targets and each bundle identifier is set up in the Identifiers section of the developer portal.
iphone container target called Unleashed abc.xyz.Unleashed
watch target called Unleashed Watch App abc.xyz.Unleashed.watchkitapp
watch target called Unleashed WidgetExtension abc.xyz.Unleashed.watchkitapp.Unleashed-Widget
I have a App Store provisioning set up for abc.xyz.Unleashed.watchkitapp
The app runs fine in the watch simulator, but fails with the following when I do an Xcode Cloud build
Export archive for ad-hoc distribution
Export archive for development distribution
Export archive for app-store distribution
When I expand each one of these errors it reports:
Command exited with non-zero exit-code: 70
I also tried archiving the project in Xcode then selected the Archive but it won't let me validate because that button is disabled.
Very confused I have successfully used Xcode Cloud for a phone app but am having a problem with this watch app that has a widget
Our app has an infrequently used but useful calculator screen similar to Apple's calculator app where the current value ticker squats in the top toolbar trailing area, extending into the system clock area.
In 26 beta, that view is now broken: the system clock not longer hides when a layout collision is detected.
Can the prior avoidance behavior (or an API to hide the clock) be triggered somehow?
I'm trying to update the icon of my app for watchOS 26, and I'm having troubles providing both a layered Liquid Glass icon for watchOS 26 users and a pre-rendered bitmap icon (in various sizes) for watchOS 11 and older users. Whatever I do; I either get a blurry, scaled-down watchOS 26 icon on watchOS 11; or watchOS 11's bitmap icons on watchOS 26.
While I could get the wanted result on macOS 26 and iOS 26, I simply can't get an equivalent result with watchOS 26.
Hello everyone! I encountered a problem, Apple Watch 10, downloaded beta version 26 IOS, got tired of it, deleted in the settings to the previous IOS. As a result, now I deleted 26 IOS on the phone and can not connect the watch with the phone.
I’m developing a smart alarm app that makes use of the extended runtime session. I’ve looked at the docs, and one of the background modes for Apple watch is smart alarm.
The docs also say that an extended runtime session can only be scheduled one at a time, and while the app is open, which isn’t very intuitive for an alarm app that runs on schedules.
I’ve seen other apps do something similar, but I’m trying to make this fully automated, without the user having to do too much manually to reschedule the smart alarm.
Is there no way to do this? I would’ve thought the smart alarm background modes would allow to schedule more than 1/a repeating extended runtime session.
Validation failed
Missing Info.plist value. A value for the key “WKApplication”, or “WKWatchKitApp” if your project has a WatchKit App Extension target, is required in “demo.app/demo.app” bundle. For details, see: https://developer.apple.com/documentation/watchkit/creating_independent_watchos_apps/setting_up_a_watchos_project (ID: 1***fc8)
我们APP中没有watchkit相关功能,但是在xcode16.3上传包的时候一直提示此错误?是什么原因?
I updated my IntentWidgetProvider recommendations() to return an empty array instead of all my previous static IntentRecommendation to allow my widgets to finally be configurable.
When I go to the watch widget chooser I see samples of my widgets OK:
But when I touch the sample would should bring up my configurations, I get "Unable to Load":
Anybody see this or have any ideas? Thanks.
Hello developers,
Now I'm facing a issue with a image alingment on watchOS app.
As you see below, I load a UIImage on a view of watchOS app using SwiftUI and would like to fill the watch screen fully with the image. (That's why I added '.ignoreSafeAre()' modifier)
As expected, the image fills the screen but the image is aligned to the left only in case of a landscape image (width > height).
I tried anything I imagine, but all failed.
Can anybody give a hint or advice to solve this issue?
Many thanks in advance!
ZStack{
Image(uiImage: image)
.resizable()
.aspectRatio(contentMode: .fill)
.ignoresSafeArea()
.scaleEffect(zoom)
.offset(...)
.gesture(...
}
I'm trying to figure out how to make an inverted list in my watchOS app for a message view, so that messages appear from the bottom first, and go up.
Everything I've tried so far has some sort of major drawback, and I'm wondering if there's some proper way to do it.
My current implementation is flipping every message item upside-down, then flipping the whole list upside-down. This works in making the list go from bottom to top, but the digital crown scroll direction is also inverted. Simply inverting the array of messages doesn't work either, as the user has to scroll to the bottom of the list manually every time.
Any tips/suggestions would be greatly appreciated.
I’m building a standalone Apple Watch smart alarm app that should trigger alarms on the watch in response to Bluetooth or internet events.
This means the app operates in the background and attempts to trigger an alarm when such an event occurs. As far as I know, the appropriate API for this is WKExtendedRuntimeSession.notifyUserWithHaptic:repeatHandler.
However, I can’t seem to start an extended runtime session while the app is in the background. I’m getting the following error:
-[WKExtendedRuntimeSession _invalidationReasonAndDelegateCallbackErrorForError:outCallbackError:]:729:
WKExtendedRuntimeSession hit internal error.
Error Domain=com.apple.CarouselServices.SessionErrorDomain
Code=17 "startSession cannot be called on a scheduled session"
UserInfo={NSLocalizedDescription=startSession cannot be called on a scheduled session}
Calling notifyUserWithHaptic directly also similarly fails.
It seems notifyUserWithHaptic is intended to be scheduled during a foreground session to trigger at a later time, rather than being called ad hoc from a background context.
Is there any way to create a proper alarm view on the Apple Watch from a background execution context?
Has anyone seen the workout buddy options on watch OS yet? I am not able to get it on my watch.
My setup is an iPhone 16 and Watch Ultra 1 with the 26 OS
I am currently using beta 3.
English US language on both and US as region.
I am located in Germany though.
I restarted both devices multiple times without any changes.
Hopefully someone can help.
Topic:
App & System Services
SubTopic:
Health & Fitness
Tags:
Health and Fitness
watchOS
Apple Watch
WorkoutKit
Developing a standalone app for the Apple Watch.
Unless I turn off Bluetooth on the paired iPhone, the Apple Watch’s Wi-Fi deactivates every ~30 seconds, which causes the connection to Xcode to drop. How is this supposed to work?
I can see my app’s logs in Xcode, but I can’t view any other system logs from the Apple Watch. I tried using the Console app, with the iPhone connected via USB, trusted, etc, but I don't see any system logs. How can I access full system logs?
Thanks!
Hi developers.
I've been working on a Watch companion app for my product these past few days, and I'm currently trying to push it to TestFlight.
I get stuck at the validation step with endless errors. The first one typically is missing WKApplication in Info.plist. That's fine, I'll add the field in Watch target > Info. Now more errors appear:
Invalid UIDeviceFamily value of '1' and '2'
Unsupported key UIRequiredDeviceCapabilities
DTPlatformName value invalid
Missing architecture, the bundle must contain arm64_32 because it's built with watchOS SDK 5+
I never set these values in the Info tab, so my guess is they're being overwritten by the Runner Build Settings, even though watch target build settings are correct (for example, Targeted Device Family is set to Apple Watch).
What I've tried so far:
Disabling auto generation of the Info.plist, and manually setting UIDeviceFamily to '4', but that doesn't help, unless I do it after creating the archive by editing the archive files and resending it to validation. I also tried a bunch of other post-build modifications to try and fix all the errors but new ones kept popping up.
Cleaning Build Folder and DerivedData, restarting XCode, rebooting the computer... no effect, which is expected given that the building process doesn't return any errors
Validating just the app without the apple watch (so from my main branch), still works as expected.
Recreating a blank watchOS target and trying to validate just that, I get stuck in the same way.
Project details:
XCode Version 16.3 (16E140)
Flutter 3.27.3
Targeting latest watchOS and iOS 16+
Do you have an idea what could be the problem here ? I'm sure it's just a missing or invalid property in some configuration file, but I can't figure it out and there are no resources online documenting the issue, and no "tutorials" on how to properly set up a watch target from Apple.
Thank you for your time.
A.H.