hobbysoft.pro

Expertise

Screen Time API developer for app blocking and parental control apps

I build iPhone apps on Apple's Screen Time API: app blockers, focus tools and parental controls using FamilyControls, ManagedSettings and DeviceActivity. My own app, Fokus Zone, is live on the App Store and blocks apps by schedule and by location, so I know the entitlement process and the extension limits firsthand.

By HobbySoft, iOS & Mac developer Updated

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:

FrameworkWhat it does
FamilyControlsAuthorization, and the picker where the user chooses apps, categories and websites
ManagedSettingsApplies restrictions: shields on apps and categories, web domain blocking and other settings
DeviceActivitySchedules 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.

FAQ

Questions and answers

Do I need special permission from Apple to use the Screen Time API?

Yes. The Family Controls capability works in development, but distributing an app that uses it requires requesting the Family Controls distribution entitlement from Apple. Plan for that request early in the project.

Can a Screen Time app see which apps a user has installed?

No. The FamilyActivityPicker returns opaque tokens, not bundle identifiers or names. Your app can block and display the selected apps, but it cannot read the list itself.

Can a third-party app read Screen Time usage data?

Only inside a DeviceActivityReport extension, which renders the report in a sandbox. The data is shown to the user but does not flow back into your app or to a server.

Does the Screen Time API work for adults, not just children?

Yes. Since iOS 16, apps can request individual authorization so people can restrict their own apps, which is what self-control and focus apps use.

Have an app in mind? Let’s ship it.

I take on a small number of projects at a time and stay with them to the finish: one accountable developer, an EU company with clear invoicing, and support long after launch.

Hire me