On iOS 26.3.1, deviceactivityd produces zero log output and never wakes a DeviceActivityMonitor extension at the scheduled time, even when the schedule is successfully registered. The extension's intervalDidStart(for:) method is never called.
Steps to Reproduce:
Create an app with a DeviceActivityMonitor extension subclass
Add the com.apple.developer.family-controls entitlement to both the main app and extension targets
Add a shared App Group entitlement to both targets
In the main app, call:
let center = DeviceActivityCenter()
center.stopMonitoring([.myActivity])
let schedule = DeviceActivitySchedule(
intervalStart: DateComponents(hour: 17, minute: 30),
intervalEnd: DateComponents(hour: 17, minute: 45),
repeats: true
)
try center.startMonitoring(.myActivity, during: schedule)
Verify registration succeeds: DeviceActivityCenter().activities.contains(.myActivity) returns true
Background the app completely and wait for the intervalStart time (5:30 PM in this example)
Expected Result:
intervalDidStart(for:) is called in the extension process at 5:30 PM. ManagedSettings shields are applied without any user interaction.
Actual Result:
intervalDidStart(for:) is never called. No extension process is launched. Filtering Console.app for deviceactivityd on the device returns 0 messages — the daemon produces no logs whatsoever despite an active registered schedule. Shields are never applied.
Additional Evidence:
Third-party apps using DeviceActivity (e.g. Prayer Lock) successfully apply shields at scheduled times on the same device and OS version, confirming the framework is not universally broken
Filtering Console.app for the app's bundle ID at the trigger time shows the main app process applying shields via a UNCalendarNotificationTrigger fallback — but no extension process activity
DeviceActivityCenter().activities correctly lists the registered activity before and after the trigger time, confirming the schedule registration API is functional
Environment:
iOS 26.3.1
Physical device (required for FamilyControls)
Development-signed build with com.apple.developer.family-controls entitlement provisioned
App Group shared between main app and extension targets
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
Similar Issue to FB13556935:
On iOS 26.3.1, deviceactivityd produces zero log output and never wakes a DeviceActivityMonitor extension at the scheduled time, even when the schedule is successfully registered. The extension's intervalDidStart(for:) method is never called.
Steps to Reproduce:
Create an app with a DeviceActivityMonitor extension subclass
Add the com.apple.developer.family-controls entitlement to both the main app and extension targets
Add a shared App Group entitlement to both targets
In the main app, call:
let center = DeviceActivityCenter()
center.stopMonitoring([.myActivity])
let schedule = DeviceActivitySchedule(
intervalStart: DateComponents(hour: 17, minute: 30),
intervalEnd: DateComponents(hour: 17, minute: 45),
repeats: true
)
try center.startMonitoring(.myActivity, during: schedule)
Verify registration succeeds: DeviceActivityCenter().activities.contains(.myActivity) returns true
Background the app completely and wait for the intervalStart time (5:30 PM in this example)
Expected Result:
intervalDidStart(for:) is called in the extension process at 5:30 PM. ManagedSettings shields are applied without any user interaction.
Actual Result:
intervalDidStart(for:) is never called. No extension process is launched. Filtering Console.app for deviceactivityd on the device returns 0 messages — the daemon produces no logs whatsoever despite an active registered schedule. Shields are never applied.
Additional Evidence:
Third-party apps using DeviceActivity (e.g. Prayer Lock) successfully apply shields at scheduled times on the same device and OS version, confirming the framework is not universally broken
Filtering Console.app for the app's bundle ID at the trigger time shows the main app process applying shields via a UNCalendarNotificationTrigger fallback — but no extension process activity
DeviceActivityCenter().activities correctly lists the registered activity before and after the trigger time, confirming the schedule registration API is functional
Environment:
iOS 26.3.1
Physical device (required for FamilyControls)
Development-signed build with com.apple.developer.family-controls entitlement provisioned
App Group shared between main app and extension targets