DeviceActivityMonitor intervalDidEnd not firing for non-repeating timed unlock

I’m building an iOS app that uses FamilyControls + ManagedSettings + DeviceActivity.

Goal: temporarily “unlock” a shielded app for N minutes, then automatically re-apply the shield when the timer expires.

What I do: In the main app, when user picks an expiry (e.g. 15 min, 30 min). I start a non-repeating DeviceActivity schedule and remove the app’s ApplicationToken from ManagedSettingsStore().shield.applications. I also store activeUnlockBundleID etc. in an App Group so the DeviceActivityMonitor extension can re-lock at the end.

Expected: DeviceActivityMonitor.intervalDidEnd(for:) is invoked when the non-repeating interval ends, and I re-add the token to the shield set.

Actual: The app does not re-lock when the interval expires. I added OS logs as well as “debug local notifications” from the DeviceActivityMonitor extension in: init() intervalDidStart intervalDidEnd eventDidReachThreshold None of these logs or notifications ever appear, which suggests the extension is never invoked (or cannot schedule local notifications or OS logs).

Environment:

  • Device: iPhone 17 Pro
  • iOS 26.3.1
  • Xcode 26.4
  • Running on a physical device
  • Notification permissions for the app: granted
  • App + extensions are in the same App Group entitlement.
  • Extension Info.plist has:

NSExtensionPointIdentifier = com.apple.deviceactivity.monitor NSExtensionPrincipalClass = $(PRODUCT_MODULE_NAME).DeviceActivityMonitorExtension

Questions:

  1. Are there known limitations/requirements for DeviceActivityMonitor callbacks where intervalDidEnd doesn't to fire?
  2. Is posting local notifications / OS Logs from a DeviceActivityMonitor extension supported/reliable? If not, what’s the recommended way to verify the extension is invoked?
  3. If this looks like a platform bug, should I file Feedback Assistant? If so, what logs/artifacts are most useful?
  • If this looks like a platform bug, should I file Feedback Assistant? If so, what logs/artifacts are most useful?

I haven't directly seen this bug because my apps do not rely on the intervalDidEnd being called reliably – but I have seen similar things happening with didReachThreshold.

Even if your observations ends up not being a bug, I would always file a report through the feedback assistant:

-> They might improve the documentation based on your input to prevent any similar (hypothetical) misunderstandings from happening in the future.

I’m not saying yours is a misunderstanding…there is of course the chance that this is a bug indeed – and the sooner you report it, the better.

Make sure you file it against the correct components:

Developer Technologies & SDKs -> Device Activity Framework

Attachments:

  1. Sysdiagnose of the affected device.
  2. Screenshots / screen recordings. Or even better: a quick demo video.
  3. Bonus: Minimal reproducing Xcode project.

Don’t forget to post your feedback number here on the forums so other developers can reference it in their radars as well to help get dupes matched quickly.

Hope that helps!

DeviceActivityMonitor intervalDidEnd not firing for non-repeating timed unlock
 
 
Q