Background upload issue in WatchOS

We are developing a watchOS application that records long audio sessions and uploads them to our backend in chunks (~5 MB each) using pre-signed URLs and URLSession background upload. Current behavior:

While audio recording is active, uploads continue successfully even when the app is in the background. Once the recording stops, if multiple chunks (e.g., 10+) are still pending, the remaining uploads do not proceed in the background and appear to be suspended. We attempted to use WKExtendedRuntimeSession (mindfulness type) to allow sufficient time to enqueue background upload tasks, but the session is invalidated when the app goes to the background (e.g., wrist down or app inactive), which prevents reliable scheduling of uploads. Additionally, we added the entitlement: com.apple.developer.extended-runtime-session (mindfulness) in the Watch app entitlements file, but Xcode automatic signing fails with: “Provisioning profile does not include the com.apple.developer.extended-runtime-session entitlement.” It appears that the provisioning profile is not being updated to include this entitlement. Our questions:

Is WKExtendedRuntimeSession (mindfulness) expected to support scheduling background URLSession uploads after the app goes to background? How should we reliably complete pending background uploads on watchOS after a long recording session ends? Is there any additional entitlement or recommended approach for this use case? Why is the extended runtime entitlement not being applied to the provisioning profile despite being added in the entitlements file? We are aiming to follow Apple-recommended practices for long-running tasks and background uploads on watchOS. Any guidance would be greatly appreciated.

the remaining uploads do not proceed in the background and appear to be suspended.

Suspended forever? Or just a delayed? If you leave the watch in that state for a day, does it eventually attempt these stalled uploads?

For context, there are URLSession and watchOS aspects to this. On the URLSession front, the system is free to delay background session transfer until an opportune time. While I have a lot less experience with this on the watchOS side, on iOS this often means that the transfer is deferred until overnight, when the device has both Wi-Fi and mains power. So I’m curious if the same thing is happening on the watch.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Other than the background upload with URLSession, which Quinn is helping, I think it's worth mentioning that, as documented here, WKExtendedRuntimeSession is meant to be used with self care, mindfulness, physical therapy, or smart alarm. Using the API in other use case will risk an App Review rejection.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

Background upload issue in WatchOS
 
 
Q