Building Tranquil: Reclaiming Focus with Swift and ScreenTime
- iOS
- Swift
- Product
Tranquil is a focus and screen-time app I co-founded. The pitch is simple: help people take back control of their phones, block distracting apps, schedule focus sessions, take intentional breaks, and actually see their habits. The implementation is anything but simple, because the moment you want to block apps on iOS, you enter Apple's ScreenTime world.
The frameworks that make it possible
- FamilyControls, to request authorization and let users pick which apps and categories to manage.
- ManagedSettings, to actually apply the shields that block selected apps.
- DeviceActivity, to schedule when those shields turn on and off and to monitor usage.
What's genuinely great about it
Apple gives you real, OS-level power here. You can shield apps in a way users can't trivially bypass, and you can do it while respecting privacy, the app selection is opaque to you as the developer by design. For a focus app, that's exactly the trust model you want.
What's painful about it
It's also one of the more unforgiving corners of iOS. A lot of the logic runs in extensions with tight constraints, debugging is awkward, and the documentation assumes you already know how the pieces fit together. You spend real time just getting authorization, app selection, and scheduling to talk to each other reliably across app launches and reboots.
The product lesson
The biggest lesson wasn't technical. It was that a focus app lives or dies on how it feels in the two seconds when someone tries to open Instagram and hits your shield. Too harsh and they delete your app; too soft and it doesn't work. Tuning that moment, the copy, the friction, the option to take an intentional break, mattered more than any single API. Building Tranquil made me a better product thinker, not just a better Swift developer.
The hard part of a focus app isn't blocking apps. It's blocking them in a way people thank you for.
Working on something I could help with?
Get in touch