Back to Writings
Tether™ • Engineering

Designing the Perfect Digital Speed Bump: The Architecture Behind Tether's iOS Shield Interruption

May 28, 2026

Tether is built around a simple, powerful premise: *habit rerouting*. Rather than trying to lock you out of your favorite apps permanently through shame-based trackers or easily bypassed passwords, Tether aims to intercept your doomscrolling exactly when it starts, redirecting that cue to a more rewarding action—calling someone you love.

On iOS, this interaction relies on Apple's **Managed Settings** and **Device Activity** frameworks. When you exceed your daily mindful threshold on a monitored social application, iOS displays a full-screen "Shield Overlay." But translating this design goal into reliable iOS code meant grappling with the severe sandbox limitations Apple imposes on screen-time extensions.

The Direct-Open Trap

Our initial design was straightforward: when a user clicks the primary action button on the Shield Overlay, the overlay should open the Tether app immediately to help them make a quick call. However, we quickly hit the hard realities of iOS App Extension sandboxing.

Inside an iOS App Extension, `UIApplication.shared.open()` is completely unavailable. Apple blocks direct deep-linking from background extension context to prevent background apps from aggressively hijacking the user's foreground experience. Furthermore, fallback solutions like `NSExtensionContext.open` are marked "best-effort" and frequently fail silently in restricted Screen Time sandbox contexts.

Promising an action that iOS cannot guarantee is a poor user experience. We needed a new architectural approach—one that would act as a reliable, frictionless digital speed bump.

The Redesign: IPC State Handoff

To solve this, we redesigned the shield response flow into a multi-step, asynchronous state handoff:

First, the Shield primary action button is designated as a pure dismiss action. Clicking it records a nudge event in on-device storage, unblocks only the current app token, and defers monitoring for a configurable cooldown. Under the hood, this is executed natively in Swift using a custom ShieldActionExtension response: dismissing the screen safely with a .close action.

Second, as soon as the threshold is triggered, the background activity monitor writes to shared UserDefaults, setting a flag: PendingDeepLinkRoute = "circle_contacts". Simultaneously, it sends a highly prioritized, time-sensitive system notification to the user: *"Your inner circle is ready. Want to make a call instead?"*

When the user taps this notification, iOS opens Tether. The main app foregrounds, immediately checks the shared UserDefaults, reads the PendingDeepLinkRoute, and smoothly routes the user directly to tether://nudge?action=call. It's safe, sandboxed, and 100% reliable.

Handling Apple's Token Instability

Another major engineering hurdle was dealing with Apple's token updates. Screen Time groups applications under opaque ApplicationToken structures. During iOS minor version updates or backup restorations, Apple frequently regenerates these tokens (tracked under bug reference FB14237883).

If our shield action tried to compare the active blocked application with a saved list of tokens in local storage, it would periodically fail to unblock the target app. To fix this, our revised Swift extension bypasses local lookups for unblocking entirely. Instead, it extracts the delegate-injected ApplicationToken provided at runtime by the system event and unblocks it directly, ensuring Tether is always bulletproof, even when the OS changes tokens underneath us.

Through careful planning and working *with* iOS sandbox paradigms rather than fighting against them, we built a digital speed bump that is elegant, secure, and respectful of your digital wellness.

Stop scrolling. Start calling.

Tether™ is currently in development for iOS and Android.

Learn more about Tether