Screen Time API development for iPhone
Apple’s Screen Time API lets a third-party app restrict other apps on the same iPhone, on schedules and on conditions you define, with the same shield iOS itself uses. It is three frameworks working together:
| Framework | What it does |
|---|---|
| FamilyControls | Authorization, and the picker where the user chooses apps, categories and websites |
| ManagedSettings | Applies restrictions: shields on apps and categories, web domain blocking and other settings |
| DeviceActivity | Schedules and usage thresholds that trigger code in a monitor extension |
You need it if you are building an app blocker, a focus or study tool, a digital wellbeing product, or parental controls. For an App Store app, this is the only approved way to block other apps, so getting this API right is the product.
What makes Screen Time apps hard to ship
The entitlement comes first
Family Controls works in development builds, but App Store distribution requires the Family Controls distribution entitlement, which you request from Apple. The main app and each extension that uses the framework need it for their bundle identifiers. I build the request into the project plan, because an app that works perfectly on a test device still cannot ship without it.
Opaque tokens, by design
The picker returns a FamilyActivitySelection of tokens. You never get bundle IDs or app names. To show what a rule blocks, you render the tokens with Label. To save rules, you encode the selection and persist it, typically in an App Group so the extensions can read it. Product ideas like “suggest the user’s top distracting apps” have to be reworked around this.
Logic runs in tiny extensions
Schedules fire in a DeviceActivityMonitor extension (intervalDidStart, intervalDidEnd, eventDidReachThreshold), not in your app. These extensions run under a tight memory budget of a few megabytes, so they must load shared state quickly, apply or clear ManagedSettingsStore settings, and exit. Heavy dependencies and large data models do not belong there.
Schedules have rules
DeviceActivitySchedule uses date components, can repeat, and Apple enforces a minimum interval length. Overlapping rules, rules that cross midnight, and a user changing a rule while it is active all need explicit handling, otherwise a block either never lifts or never starts.
Statistics live in a sandbox
Usage data is available only through a DeviceActivityReport extension that draws its own SwiftUI views. Charts and summaries have to be built inside that extension, and the numbers cannot be sent to your server.
Shields and overrides
Custom shield appearance needs a shield configuration extension, and the buttons on the shield are handled by a shield action extension. Temporary access (“give me five minutes”) means lifting a restriction and reliably putting it back.
How I built Fokus Zone on the Screen Time API
Fokus Zone is my app blocker for iPhone, live on the App Store since January 2026. It is built entirely on Apple’s Screen Time framework:
- Schedules: block apps during work, study or bedtime, with different schedules for different days and recurring rules. See scheduling app blocks.
- Location: restrictions switch on when you enter a zone, which means connecting geofencing to ManagedSettings so blocking starts without the user opening the app. The location side is covered in my geofencing and location work.
- Flexible restrictions: single apps or whole categories, multiple restriction profiles, and temporary access for urgent moments.
- Statistics: daily usage, weekly and monthly trends and the most time-consuming apps, within the Screen Time privacy model.
- Privacy: all data stays on device and no personal information is collected.
Where the built-in tools stop and a custom app helps is laid out in Fokus Zone vs Screen Time.
Screen Time apps I can build for you
- App blockers and focus apps with schedules, usage limits and custom shields.
- Parental control features using child authorization through Family Sharing.
- Study, wellbeing or workplace focus products with in-app subscriptions.
- A rescue of an existing Screen Time app whose blocks fail to start, fail to lift, or crash in the extensions.
- Help preparing the Family Controls entitlement request and App Review notes.
Apple’s Family Controls documentation is the starting point; I help with everything it leaves out.
Start a Screen Time project
Send a short description of what your app should restrict, and when, to contact@hobbysoft.pro. I will tell you what the API allows and where the hard parts are.