I’m reaching out regarding an issue we’ve been experiencing with BGProcessingTask since upgrading to Xcode 26.1.1.
Issue Summary
Our daily background processing task—scheduled shortly after end‑of‑day—has stopped triggering reliably at night. This behavior started occurring only after updating to Xcode 26.1.1. Prior to this update, the task consistently ran around midnight, executed for ~10–15 seconds, and successfully rescheduled itself for the next day.
Expected Behavior
BGProcessingTask should run at/near the scheduled earliestBeginDate, which we set to roughly 2 hours after end-of-day. The task should execute, complete, and then reschedule itself.
Actual Behavior
On devices running builds compiled with Xcode 26.1.1, the task does not trigger at all during the night. The same code worked reliably before the Xcode update. No system logs indicate rejection, expiration, or background task denial.
Technical Details
This is the identifier we use:
private enum DayEndProcessorConst {
static let taskIdentifier = "com.company.sdkmanagement.daysummary.manager"
}
The task is registered as follows: When app launched
BGTaskScheduler.shared.register(
forTaskWithIdentifier: DayEndProcessorConst.taskIdentifier,
using: nil
) { [weak self] task in
self?.handleDayEndTask(task)
}
And scheduled like this:
let date = Calendar.current.endOfDay(for: Date()).addingTimeInterval(60 * 60 * 2)
let request = BGProcessingTaskRequest(identifier: DayEndProcessorConst.taskIdentifier)
request.requiresNetworkConnectivity = true
request.requiresExternalPower = false
request.earliestBeginDate = date
try BGTaskScheduler.shared.submit(request)
As per our logs, tasks scheduled successfully
The handler wraps the work in an operation queue, begins a UI background task, and marks completion appropriately:
task.setTaskCompleted(success: true)
Could you please advise whether:
There are known issues with BGProcessingTask scheduling or midnight execution in Xcode 26.1.1 or iOS versions associated with it? Any new entitlement, configuration, or scheduler behavior has changed in recent releases? Additional logging or diagnostics can help pinpoint why the scheduler never fires the task?