DeviceActivityMonitor is overcounting screen time for users on iOS 17.6.1

Our app uses a 24-hour DeviceActivityMonitor repeating schedule to send users notifications for every hour of screen time they spend on their phone per day. Notifications are sent from eventDidReachThreshold callbacks at 1, 2, 3, etc, hour thresholds to keep them aware of their screen time.

We have recently received an influx of emails from our users that after updating to iOS 17.6.1 their DeviceActivityMonitor notifications are saying their screen time was much higher than what is shown in DeviceActivityReport and their device's Screen Time settings.

These users have disabled "Share Across Devices" - but I suspect the DeviceActivityMonitor is still getting screen time from their other devices even though that setting is turned off.

Has anybody else noticed this, understands what is causing this, or could recommend a fix that we can tell our users to do?

Maybe some more relevant information: all DeviceActivityEvents are defined by tracking categories, not apps or websites. Here is an example of one of the events:

DeviceActivityEvent(categories: categories, threshold: DateComponents(hour: 2, minute: 30), includesPastActivity: true)

Update: I've noticed that part of the issue is it seems to be "double counting" usage from Safari.

As stated in the previous comment, the events target only category tokens, and not specific app or website tokens. Using the website x.com on Safari for 10 minutes caused the event threshold to fire 10 minutes early - so my hunch is it is counting Safari and the website x.com separately.

However, this is likely NOT the only thing that causes the overcounting, since users experience thresholds showing much higher screen time than can be only explained by their Safari usage. But I think this info can help point toward the root cause.

Also have submitted a bug report: https://feedbackassistant.apple.com/feedback/15103784

Hey we are experiencing the same issue here !

With the exact same context, we asked our user to un-select "Share Across Devices", and they get notifications showing a lot more screen time then is even shown within the DeviceActivityReport

Two of our users have reported the exact same behavior.

When looking at their logs, I can clearly see their schedules being created with a 300 minute event threshold, but the eventDidReachThreshold callback happened after 150 minutes. Note that when this premature callback happens, it does not send a eventWillReachThreshold at all, even though the warningTime is set. This is with app usage that does not include Safari, so it's not just a browser time tracking issue.

I'll try to isolate a repro, but this is really concerning.

Another Update: for many users, turning off Screen Time completely on their other iOS devices has fixed the issue for them (while "Share Across Devices" was still always turned off). Still for some users, this has not fixed it. And for other users, they never had other iOS devices to begin with but they were still experiencing the issue. So I would assume that this issue has something to do with screen time being shared incorrectly across devices, but still can be experienced without other iOS devices sharing screen time.

Also this issue is still happening on iOS 18.

Can an internal dev please address this issue in some way? It was introduced in later versions of iOS 17, still happening in latest version of iOS 18, and many other devs have reported the same issue. This is a core problem with the Screen Time API that should be addressed as it renders the monitoring schedule fundamentally unusable for affected users. Would really appreciate some kind of response from the internal devs, thanks!

Can an internal dev please address this issue in some way?

I’m not sure I can do much to help you here. My reading of this thread is that you consider this to be a bug in the Screen Time subsystem and you’ve filed it as such FB15103784 (thanks for that, btw). Honestly, I can’t disagree with that assessment. Unfortunately I don’t have any info to share about when, or indeed if, that’ll be fixed. And I also can’t see any sort of reasonable workaround. All I can really do is confirm that your bug has made it to the right folks.

Share and Enjoy

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

I'm observing similar problems, but only on phones with iOS 18.

  • UsageTrackingAgent reports wrong time remaining
  • eventDidReachThreshold sometimes is called 4 times within milliseconds for the same activity/event
  • it seems to get worse as the day goes on, ie the time remaining gets shorter

There have been other weird behaviours but I managed to get these under control.

My use case: allow x minutes of screen time for y app category. Upon expiry, shield apps in that category. Then perform certain tasks in my app, and shielded apps are unshielded and additional x minutes of screen time is granted. etc .etc.

It's basically completely broken for iOS 18.1.1, about to test 18.2 Works fine on 17.7 and 16.7.10 FB16055453

I know this doesn't help you OP but at least it increases the noise.

DeviceActivityMonitor is overcounting screen time for users on iOS 17.6.1
 
 
Q