[iOS 26 Beta] BGTaskScheduler.supportedResources incorrectly reports no GPU support for BGContinuedProcessingTask on capable hardware

Testing Environment:

iOS: 26.0 Beta 7

Xcode: Beta 6

Description: We are implementing the new BGContinuedProcessingTask API introduced in iOS 26. We have followed the official documentation and WWDC session guidance to configure our project.

The Background Modes (processing) and Background GPU Access capabilities have been added in Xcode.

The com.apple.developer.background-tasks.continued-processing.gpu entitlement is present and set to <true/> in the .entitlements file.

The provisioning profile details viewed within Xcode explicitly show that the "Background GPU Access" capability and the corresponding entitlement are included.

Despite this correct configuration, when running the app on supported hardware (iPhone 16 Pro), a call to BGTaskScheduler.supportedResources.contains(.gpu) consistently returns false.

This prevents us from setting request.requiredResources = .gpu. As a result, when the BGContinuedProcessingTask starts without the GPU resource flag, our internal Metal-based exporter attempts to access the GPU and is terminated by the system, throwing an IOGPUMetalError: Insufficient Permission (to submit GPU work from background).

We have performed extensive debugging, including a full reset of the provisioning profile (removing/re-adding capabilities, toggling automatic signing, cleaning build folders, and reinstalling the app), but the issue persists. This strongly suggests a bug in the iOS 26 beta where the runtime is failing to correctly validate a valid entitlement.

Additionally, we've observed inconsistent behavior across devices. On an A16-based iPad, the task submits successfully (BGTaskScheduler.submit does not throw an error), but the launch handler is never invoked by the system. On the iPhone 16 Pro, the handler is invoked, but we encounter the supportedResources issue described above. This leads us to ask for clarification on the exact hardware requirements for this feature. We hypothesize that it may be limited to devices that support Apple Intelligence (A17 Pro and newer). Could you please confirm this and provide official documentation on the device support criteria?

Steps to Reproduce:

Create a new Xcode project.

In Signing & Capabilities, add "Background Modes" (with "Background processing" checked) and "Background GPU Access".

Add a permitted identifier (e.g., "com.company.test.*") to BGTaskSchedulerPermittedIdentifiers in Info.plist.

In application(_:didFinishLaunchingWithOptions:) or a ViewController's viewDidLoad, log the result of BGTaskScheduler.shared.supportedResources.contains(.gpu).

Build and run on a physical, supported device (e.g., iPhone 16 Pro).

Expected Results: The log should indicate that BGTaskScheduler.shared.supportedResources.contains(.gpu) returns true.

Actual Results: The log shows that BGTaskScheduler.shared.supportedResources.contains(.gpu) returns false.

Answered by DTS Engineer in 854825022

Actually, the answer here is pretty simple:

Despite this correct configuration, when running the app on supported hardware (iPhone 16 Pro), a call to BGTaskScheduler.supportedResources.contains(.gpu) consistently returns false.

...which is that the iPhone 16 Pro does not support background GPU. I don't know of anywhere we formally state exactly which devices support it, but I believe it's only support on iPad's with an M3 or better (and not supported on any iPhone).

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Just a quick correction to a typo in my original report.

Incorrect code mentioned in the report: BGTaskScheduler.shared.supportedResources.contains(.gpu)

Correct code used in my project: BGTaskScheduler.supportedResources.contains(.gpu)

To be clear, my project code is using the correct static property. This typo was only in the text of my report. The underlying issue I reported still persists.

Accepted Answer

Actually, the answer here is pretty simple:

Despite this correct configuration, when running the app on supported hardware (iPhone 16 Pro), a call to BGTaskScheduler.supportedResources.contains(.gpu) consistently returns false.

...which is that the iPhone 16 Pro does not support background GPU. I don't know of anywhere we formally state exactly which devices support it, but I believe it's only support on iPad's with an M3 or better (and not supported on any iPhone).

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

@DTS Engineer Hi Kevin,

Thank you so much for the definitive and incredibly helpful answer. This clarification has saved our team a huge amount of debugging time, and we truly appreciate you sharing this specific information.

That makes perfect sense and explains the behavior we were seeing. The main source of our confusion was the documentation, which lists both iOS 26.0+ and iPadOS 26.0+, leading us to assume iPhone support. Your clarification that it's currently limited to iPads with an M3 chip or better is exactly the information we were missing.

Just one follow-up question for our team's planning purposes. While we understand this may not be formally documented yet, is there an official device compatibility list or a specific documentation page we should monitor for future updates on these hardware requirements? Having a definitive source to reference would be a great help for us as we define our feature set across devices.

Thanks again for your help!

While we understand this may not be formally documented yet, is there an official device compatibility list or a specific documentation page we should monitor for future updates on these hardware requirements?

Unfortunately, no, I'm afraid not.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

I'd like to +1 the need for an official compatibility list (something like this, for example).

One of our applications is developed for a government client, and they need to know which devices to procure. It's not good that I'm not able to tell them with confidence, and even finding this information was not easy (I Googled "ios26 background gpu compatible devices" and this was nowhere in the first 3 pages, which are all that I checked).

It doesn't seem like a difficult thing to document this. It's obviously important and really should be done.

I'd like to +1 the need for an official compatibility list.

If you haven't already, you're welcome to file a bug on this and please send me the bug number if you do. However, I'm not sure that's something that’s likely to happen, as the main reason we use runtime checks like BGContinuedProcessingTaskRequest.Resources.gpu is that it gives the engineer team the flexibility to change what devices are supported (generally by expanding) without needing to worry about keeping the documentation in sync, particularly if the supported device set varies with OS version. Most of our APIs use this approach and don't explicitly describe what hardware they support.

Case in point, the form here:

(something like this, for example).

...is a specific exception because UIRequiredDeviceCapabilities is used for an install-time check of the entire app, not just a specific app feature. It's also tied to functionality that was inconsistently implemented across our product lines and system versions, which makes it much more complicated to know what will/will not work.

One of our applications is developed for a government client, and they need to know which devices to procure.

I'm checking up to see if this is listed on one of our marketing pages, but the guidance I've received from the engineering team is that background GPU is supported on "iPads with M3 or newer".

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

[iOS 26 Beta] BGTaskScheduler.supportedResources incorrectly reports no GPU support for BGContinuedProcessingTask on capable hardware
 
 
Q