RORK LABJP
TOOLING — Rork's developer repos keep moving: rork-xcode was updated on July 16, rork-device on July 15, and rork-plist on July 13OPUS46 — Claude Opus 4.6 is live in Rork, and Rork Max is built to assemble apps on top of Claude CodeSIM — A cloud iOS simulator runs in the browser, with one click to install on a device and two clicks to publish to the App StoreMAX — Rork Max emits pure Swift rather than React Native, reaching iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and even iMessageNATIVE — That opens up HealthKit, ARKit and LiDAR, NFC, Dynamic Island, Live Activities, 3D through Metal, and on-device inference with Core MLSEED — Rork raised a $15M seed led by Left Lane Capital, with Peak XV and a16z Speedrun joining the roundTOOLING — Rork's developer repos keep moving: rork-xcode was updated on July 16, rork-device on July 15, and rork-plist on July 13OPUS46 — Claude Opus 4.6 is live in Rork, and Rork Max is built to assemble apps on top of Claude CodeSIM — A cloud iOS simulator runs in the browser, with one click to install on a device and two clicks to publish to the App StoreMAX — Rork Max emits pure Swift rather than React Native, reaching iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and even iMessageNATIVE — That opens up HealthKit, ARKit and LiDAR, NFC, Dynamic Island, Live Activities, 3D through Metal, and on-device inference with Core MLSEED — Rork raised a $15M seed led by Left Lane Capital, with Peak XV and a16z Speedrun joining the round
Articles/Dev Tools
Dev Tools/2026-04-28Advanced

Implementing Screen Time Control Apps with Rork Max — Family Controls / DeviceActivity / ManagedSettings

A complete walkthrough for shipping a Screen Time-style app with Rork Max — covering Family Controls authorization, DeviceActivity scheduling, and ManagedSettings shielding via custom native modules and a DeviceActivityMonitor extension.

Rork Max229ScreenTime APIFamily Controls2DeviceActivityManagedSettings2iOS Development13Native Modules5

Premium Article

Screen Time-style apps — focus timers, parental controls, social-media detox tools — are one of the few iOS categories where new winners launch on the App Store almost every month. While building a "lock specific apps during focus hours" feature for one of my own Rork projects, I hit a wall that almost every Rork developer hits in this space: the default Rork Max template cannot reach Apple's three Screen Time frameworks (Family Controls, DeviceActivity, ManagedSettings) at all.

The reason is simple. All three frameworks require the special Family Controls entitlement, which Apple grants only after a manual review request, and they only work in concert with an App Extension that runs in the background. Rork Max is essentially a polished React Native + Expo runtime, so anything outside of the prebuilt Expo modules requires you to write a custom native module yourself.

This guide walks through the full path I followed to ship a focus-time app on Rork Max — entitlement request, native module bridge, extension target, App Group plumbing, App Store review tactics — based on what actually worked, not what the documentation implies should work.

Why Rork Defaults Cannot Ship a Screen Time App

Out of the box, Rork Max bundles the standard Expo SDK modules: camera, notifications, location, secure storage, and so on. None of the three Screen Time frameworks ride on that train. Specifically:

  • The FamilyControls framework refuses to even compile without the com.apple.developer.family-controls entitlement on your provisioning profile
  • The DeviceActivity framework's "fire a callback when this time window starts" mechanism is delivered as an App Extension target — not in your main app — because the OS calls it when your app is not running
  • ManagedSettings, which actually applies the shield, depends on shared state between the main app and the extension via an App Group container

For a typical "swipe through screens" app, Rork's Vibe Coding loop covers 95% of what you need. Screen Time work, however, crosses three boundaries at once: OS-level permissions, extension targets, and shared data. Trying to fake any of these layers is the fastest way to lose a weekend. The pragmatic move is to set up the right architecture from day one — Rork main app, Swift native module, Extension target, App Group — and never look back.

Architecture: The Three Frameworks at a Glance

Before we start writing code, let's pin down what each framework actually does. Confusing them is the most common source of "why won't this work" sessions later.

  • FamilyControls is the consent and selection layer. It owns the prompt that asks the user to grant Screen Time access, and it owns FamilyActivityPicker, the SwiftUI component that lets the user pick which apps and categories to govern. The user's choice comes back as a FamilyActivitySelection — a privacy-preserving opaque token, not a list of bundle IDs
  • DeviceActivity is the scheduling layer. It says "when this time window opens, wake up an extension" or "when this app has been used for 30 minutes today, notify me." The extension runs even when your main app is terminated
  • ManagedSettings is the enforcement layer. Hand a FamilyActivitySelection to a ManagedSettingsStore, and the OS immediately blocks those apps with a system shield UI

So the architecture is a three-stage rocket: pick targets (FamilyControls) → register schedule (DeviceActivity) → block on cue (ManagedSettings).

How This Maps to a Rork Project

Here's the layout I settled on, which I'd recommend as a starting point:

  • Main app (Rork Max build): React Native UI, calls into Swift via the custom Expo module
  • Native Module (Swift): bridges authorization requests, picker presentation, schedule registration, and shield management to JS
  • DeviceActivityMonitor Extension (Swift): a separate target. The OS wakes it up at schedule boundaries; it pulls the saved selection from shared storage and applies the shield
  • App Group: group.{your-bundle-id}.shield added to both targets, used as the single source of truth for the user's blocklist via UserDefaults(suiteName:)

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Anyone stuck on why Rork Max alone cannot ship a Screen Time app will walk away with a working three-framework integration — Family Controls, DeviceActivity, ManagedSettings — embedded as a custom Expo module.
You'll have copy-pasteable Swift modules for FamilyActivityPicker presentation, DeviceActivityCenter scheduling, and a dedicated DeviceActivityMonitor extension with App Group data sharing — no more guessing about entitlements or extension targets.
You'll know how to dodge the five most common shipping pitfalls (FamilyActivitySelection privacy boundaries, App Group misnaming, jetsam crashes in extensions, child-mode simulator failures, App Review rejections) and submit a build that actually clears review.
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Dev Tools2026-04-08
Rork Max + EAS Build Custom Native Module Errors: Complete Fix Guide
Comprehensive guide to fixing EAS Build errors when adding custom native modules to Rork Max apps. Covers Config Plugin creation, iOS Podfile conflicts, Android Gradle errors, Hermes compatibility, and native initialization issues.
Dev Tools2026-04-05
Rork Max × Swift Concurrency: The Complete Implementation Guide — Mastering async/await, Actors, and Structured Concurrency
A practical deep-dive into Swift Concurrency for Rork Max developers. From async/await fundamentals to Actor isolation, Structured Concurrency, TaskGroup, and AsyncStream — learn to write production-quality concurrent Swift code with confidence.
Dev Tools2026-03-29
Developing SwiftUI Native Apps with Rork Max
Learn how to build native Swift/SwiftUI apps with Rork Max's AI engine. Generate production-ready code for iPhone, iPad, Apple Watch, and Vision Pro without writing code manually.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →