How to block large lists of domains (1000+) using Screen Time API?

I'm developing a parental control app that needs to block adult/18+ websites using the Screen Time API. I've run into scaling issues with 'ManagedSettings.webContent.blockedByFilter`.

Environment:

  • iOS 18.x, real device (iPhone)
  • ManagedSettings framework
  • Screen Time permissions granted

Current Behavior:

The Question:

Commercial parental control apps successfully block tens of thousands of domains. What API or architecture should I be using to scale beyond 30-50 domains?

Approaches I'm considering:

  1. Safari Content Blockers (limited to Safari only)
  2. Multiple ManagedSettingsStore instances
  3. Network Extension / DNS filtering
  4. A different Screen Time API approach

What's the recommended way to block large domain lists (1000-60000+) across all apps and browsers?

Any guidance appreciated!

//33 domains - Works perfectly

let blockedSites: Set<WebDomain> = [

    WebDomain(domain: "example1.com"),

    WebDomain(domain: "example2.com"),

    // ... 31 more domains

]

store.webContent.blockedByFilter = .specific(blockedSites)

// All 33 domains blocked successfully



//  101 domains - Complete failure (no domains blocked at all)

let blockedSites: Set<WebDomain> = [

    WebDomain(domain: "example1.com"),

    // ... 100 more domains  

]

store.webContent.blockedByFilter = .specific(blockedSites)

// No errors thrown, but ZERO domains are blocked

You can create up to 50 Managed Settings Stores per process. For more information, see What's new in Screen Time API.

Please file a suggestion using Feedback Assistant if you would like Apple to consider raising that limit.

You may want to look at NEURLFilter, which is better suited to large dataset use cases.

How to block large lists of domains (1000&#43;) using Screen Time API?
 
 
Q