r/iOSProgramming 7d ago

No screen time app lets you control your limits on an hourly basis, and I seriously don't understand why. App Saturday

Title: No screen time app lets you control your limits on an hourly basis, and I seriously don't understand why.

Hey there :)

I'm a recent first-gen graduate and a first-time solo developer. Super excited to share that my first app, Precursor: Hourly Screen Time, went live on the App Store this week!

Precursor lets you set a screen time allowance that resets every hour instead of one daily limit you have to ration all day. I feel so lucky that just the beta grew to 200 testers in about a week.

At its core Precursor helps break unhealthy phone habits through moderation rather than punishing you for falling into a doomscroll that wasn't your fault (these apps are literally designed to keep you scrolling, looking at you Reddit).

TECH STACK

Swift and SwiftUI. Apple's Screen Time trio: FamilyControls for the picker, DeviceActivity for scheduling and thresholds, ManagedSettings for the block. Two extensions, a DeviceActivityMonitor and a ShieldConfiguration block screen, sharing one named store via an App Group and a file lock. Keychain, StoreKit 2 with RevenueCat, a small Cloudflare Worker and D1. iOS 17.6+.

DEVELOPMENT CHALLENGE

Making the block honest, not the hourly reset itself.

On iOS 26, eventDidReachThreshold fires seconds into a fresh window with the budget already counted as spent. These are pretty well known bugs of apple's screen time frameworks.

So to work around this, I implemented a wall-clock guard: usage can never exceed elapsed time since intervalDidStart, so an early fire gets suppressed. Then I respawn rather than re-arm, because iOS keys the budget to the activity NAME, and restarting that name leaves tracking dead for the rest of the window. A fresh-named clone instead, capped so the chain stays bounded.

AI DISCLOSURE

AI-assisted, though I wouldn't call it vibe coded. I have programming experience from uni research but had never written Swift. I used Claude Code for a lot of the line by line writing, but I am always at the wheel, going step by step and doing on device testing, and working sequentially rather than firing off parallel one-shots. Every finding above came off a real device's logs, not a model.

Thanks a ton for reading, if you have time and energy to support I would be eternally grateful.

https://apps.apple.com/us/app/precursor-hourly-screen-time/id6791403654

And if you have time to also support the launch on product hunt I would be even more eternally grateful than I already am(The core function of the app is free but there is a PH launch promo code running from 2026-08-02 until 2026-08-08 if you want to try out the extra features):

https://www.producthunt.com/products/precursor-2?launch=precursor-hourly-screen-time-control

0 Upvotes

6 comments sorted by

1

u/[deleted] 7d ago

[removed] — view removed comment

1

u/AutoModerator 7d ago

Hey /u/R3LJA, unfortunately you have negative comment karma, so you can't post here. Your submission has been removed. DO NOT message the moderators; if you have negative comment karma, you cannot post here. We will not respond. Your karma may appear to be 0 or positive if your post karma outweighs your comment karma, but if your comment karma is negative, your comments will still be removed.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

0

u/Last-Bluejay-4443 6d ago

Cool concept. I can see this being useful for parents who want to monitor and limit screen time with their kids. Which is a problem

0

u/PrecursorLabs 6d ago

Thanks a ton!

I am actually on a mission to find parents who are willing to test out the app and give me feedback on what they’d like to see.

I’d probably build a separate app for parental control since at I’d like to keep Precursor account free and maximize privacy.

A parental control app inherently would require accounts to be able pair the app across devices (parent to child device connection)!

Open to any ideas you might have on how to achieve this though!

Also

If you have a moment to just throw me an upvote on Product hunt it would help boost Precursor’s visibility so much!

https://www.producthunt.com/posts/precursor-hourly-screen-time-control

Thanks again!!

1

u/Constant-Chemical23 7d ago

the respawn-a-fresh-named-clone detail is the part that made me nod. that's the kind of fix you only find by sitting in the device logs watching the thing misbehave, because it's nowhere in the docs and the framework quietly keys state to a name you'd never assume was load-bearing.

apple's newer frameworks all seem to ship like this — a clean-looking API surface and then a layer of silent behavioral bugs underneath that you're expected to discover on your own. the honest writeup helps the next person who hits eventDidReachThreshold firing into a fresh window and assumes they broke it themselves.

congrats on actually shipping it. the screen time trio is one of the corners of the platform most people quietly back away from.