DEV Community

I built a screen time blocker that has no account, no server, and no idea who you are

I was doomscrolling about three hours a day. Not "checking my phone a lot" - three hours, measured, on a screen time report I didn't want to look at. So I did what developers do: I went looking for a tool. What I found was a category with two flavors, and neither one was built for me.

Flavor 1: parental control wearing a productivity costume

Most "app blocker" apps assume a supervisor and a supervised. A parent installs it. Someone else holds the password. Someone else gets the report.

The reviews tell the story better than I can. This is a real 1-star review of one of the biggest apps in the category (58k+ ratings, 4.3โ˜…):

"My parents installed this for me. I don't have a porn addiction. I cannot use the internet without fear of being monitored and needing to be 'accountable'."

That model works fine for kids. But I'm an adult who already knows the problem. I don't need a warden. I need a wall - and I want to be the one who builds it.

Flavor 2: your habits, now on someone else's server

The other half of the category wants an account, a subscription, and a copy of your usage data. You wanted to spend less time on your phone. Now a company you've never met has a timeline of every app you opened and when. For a category that markets itself on "digital wellbeing," that's a strange trade.

What I actually wanted

A short list:

  • Blocks the apps that eat my day
  • Nobody gets a report on me - not a parent, not a partner, not a vendor
  • No login
  • Something that makes the habit stick past day three

That last one matters more than it sounds. Blocking alone doesn't work - you disable it in a weak moment and never turn it back on. What works is a number you don't want to reset.

The technical part: you don't need a backend

Here's the thing that surprised me. On iOS, you can build this entire category with no server at all. Apple's Screen Time API (the FamilyControls / ManagedSettings / DeviceActivity trio) does the blocking at the system level, on-device.

The relevant pieces:

  • FamilyControls - authorization, plus FamilyActivityPicker for choosing apps
  • ManagedSettings - applies the actual shields
  • DeviceActivity - schedules and monitors activity windows

Critically, the app tokens you get back from the picker are opaque. You don't receive bundle IDs. You literally cannot build a profile of what the user selected even if you wanted to - Apple hands you a token that only means something to the system.

That constraint is usually framed as a limitation. I think it's the best part of the API. It makes "we don't track you" structurally true rather than a promise in a privacy policy. There's no server, so there's nothing to leak, subpoena, or sell. Streak state, session history, settings - all of it lives on-device. The entire app has zero network calls.

What I shipped

SproutGuard - free on the App Store.

  • Block specific apps and sites
  • Focus sessions
  • Daily streaks (the part that actually makes it stick)
  • Usage trends

No account. No cloud. No surveillance. It's for blocking yourself.

Things I got wrong

"But you can just turn it off." Yes. It's your phone. I went back and forth on adding hard-lock mechanisms and decided against every one of them - the moment an app fights its own user, it becomes the thing I was trying to avoid.

Most doomscrolling isn't a decision anyway; it's a reflex. A wall interrupts the reflex long enough for a decision to happen. That's most of the value.

Being right isn't the same as being interesting. "On-device, no account, privacy-first" is a correct positioning and a boring one. Nobody tells a friend about your app because it has no backend. The apps growing fastest in this category have a hook - one makes you do push-ups to unlock Instagram. I built the principled version and skipped the shareable one. Still working on that.

If you're building in this space

The Screen Time API is genuinely pleasant and under-used. If you've been assuming an app like this needs a backend - it doesn't. You can ship a full screen-time product with zero infrastructure cost, zero data liability, and a privacy story that's true by construction. Happy to answer questions about the API in the comments.

Comments

No comments yet. Start the discussion.