Background HTTPS upload over cellular from a phoneless Apple Watch — any supported path?

I have a watchOS app on a cellular Apple Watch (Series 11, watchOS 26.6) that periodically uploads small HTTPS payloads to a backend. It needs to keep working when the paired iPhone is absent and the watch is on its own cellular connection.

What I observe:

  • Foreground, no phone, cellular: uploads work.
  • Background, no phone, cellular-only (no Wi‑Fi): nothing uploads for hours.
  • The instant the watch joins Wi‑Fi (app still in background): the whole backlog flushes at once via my background URLSession.

My questions:

  1. Is a background URLSession transfer over cellular ever expected to run without Wi‑Fi (e.g. while charging), or is Wi‑Fi effectively required in

practice? Any configuration that improves the odds? 2. During an active HKWorkoutSession (which keeps the app executing), will a high-level URLSession data task reliably complete over cellular with the phone absent? And is using a workout session to keep a non-fitness background uploader alive acceptable, or is there a sanctioned alternative? 3. Is there any other supported mechanism for periodic background cellular upload from a phoneless watch that I'm missing?

Any help would be greatly appreciated. Thank you!

Lemme start you out with iOS Background Execution Limits. While that specifically refers to iOS, a lot of the context is relevant on the watch as well.

I want to focus on this part of your question:

that periodically uploads small HTTPS payloads

How is your app getting execution time to kick off this upload?

Share and Enjoy

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

Hi,

The watch app gets its background execution time from Core Location: an active CLBackgroundActivitySession feeding CLLocationUpdate.liveUpdates() with Always authorization. So the app is running inside that liveUpdates() loop when a new fix arrives, and that's where it kicks off the upload.

Thank you for any help or suggestions!

So CL should give you some execution time as it delivers the update. You can also use ProcessInfo to extend that a little (see UIApplication Background Task Notes). Have you tried running your upload in a standard session during that time?

Share and Enjoy

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

Background HTTPS upload over cellular from a phoneless Apple Watch — any supported path?
 
 
Q