Return
A zen meditation and focus timer that runs on every Apple screen class from one Xcode project — iPhone, iPad, Apple Watch, Apple TV, and Mac. Twenty-seven languages including Arabic and Hebrew. Sessions log to Apple Health no matter which device you sit with. Shipped April 21, 2026. $2.99 once, owned forever.





What's in the app
- One timer that holds time. Five-to-sixty-minute picker. No countdown coaching, no guided narration, no streak gamification.
- Four themes. Water, Fire, Forest, Silence. Each one is a video loop edited from hundreds of Midjourney generations, paired with audio iterated from dozens of variations until the result can sit behind a timer for twenty silent minutes without ever becoming the thing you notice.
- Three bells. Singing Bowl, Temple Bell, Soft Chime. Each ring count configurable, 1 to 3, with a two-second breathing pause between cycles.
- Four repeat modes. Once, Until Stopped, Until Time, or Repeat N Times.
- Apple Health integration. Mindful Minutes logged from every device that has HealthKit; sessions from Mac and Apple TV log to a pending queue and the iPhone writes them through on next wake.
- iCloud sync. Settings and session history carry across all your Apple devices. Settings on Watch and phone sync through an App Group.
- Twenty-seven languages. Full Arabic and Hebrew with right-to-left layout, Korean, Japanese, Simplified and Traditional Chinese, German, French, Spanish, and 19 more.
Why the studio shipped this
Apple's own Mindfulness app caps built-in Reflect and Breathe sessions at five minutes. The HealthKit API itself has no such cap. It will happily accept any session where the end date comes after the start date. The limit lives in the UI, not the system.
The studio shipped Return because the button to write a forty-five-minute session to Apple Health was just missing. If you already have a practice — and the studio assumes you do — you want a timer that respects the duration you actually sit for, on whichever device is closest to you, without a teacher narrating in your ear.
The full personal case study, including the meditation lineage that shaped the product's intent, lives on blakecrosley.com/work/return. The short version: it's Japanese Zen in its martial current — Takuan, Yagyu, Musashi, Dogen, Hakuin — not the therapeutic mindfulness the big apps ship. Different intent, different texture. The product reflects that.
How it was made
Return is fifty-seven Swift files, about 12,700 lines of code, and zero external dependencies. Pure SwiftUI, AVFoundation, HealthKit, ActivityKit, and WidgetKit.
The naïve way to ship across five Apple platforms is one universal TimerManager with #if branches for every platform difference. The studio didn't take that road. Return ships three timer classes — TimerManager on iOS and macOS, TVTimerManager on tvOS, WatchTimerManager on watchOS — that share state semantics but respect what each platform is actually good at. Live Activities only on iOS. HealthKit only where the API exists. Extended runtime sessions only on Watch.
A single Shared/ folder carries the pieces that all targets need to agree on: the MeditationSession data model, the SessionStore iCloud wrapper, and the SessionHistoryView. Settings sync across Watch and phone through an App Group (group.com.941apps.Return). The rest is platform-specific on purpose.
The clearest example is the one line that decides whether a session has already been logged to Apple Health. iPhone writes directly, so "synced" is true the moment the session ends. Mac and Apple TV can't write to HealthKit at all, so "synced" stays false until the iPhone picks the pending session up later. Same intent, opposite boolean, one #if. The studio keeps coming back to that pattern: the fewest lines that still make the intent legible. When the same boolean means different things on different platforms, write it as different booleans.
Twenty-seven languages, including right-to-left
Return is the first Apple app the studio has shipped in every language Blake cared about. Twenty-seven locales went through a full review pass, including Arabic and Hebrew. All of it lives in one Localizable.xcstrings file, which is less heroic than it sounds — Xcode does most of the work if you agree to stop hand-rolling strings.
SwiftUI treats .leading and .trailing as semantic directions rather than .left and .right as fixed ones. Lay a screen out in semantic directions once, and the same screen mirrors automatically in Arabic, Hebrew, Persian, or Urdu without a dedicated code path. Settings labels flip, the back chevron reverses, switch positions invert. Theme icons (drop, flame, leaf) stay put. The studio didn't write a line of right-to-left code for any of this.
One exception caught at ship time: SwiftUI applies layout direction to Text views too, which meant the first cut of the Arabic and Hebrew screenshots had the timer reading "00:02" instead of "20:00" — Latin digits laid out right-to-left. One .environment(\.layoutDirection, .leftToRight) modifier on every Text view that holds time or numeric content fixes it.
How the themes were really made
Four themes, four ambient loops, three bells. All of it generated. Most of it thrown away.
The videos came from Midjourney. The audio came from ElevenLabs. The work that mattered wasn't the prompting — it was the editing. Looking at a grid of two hundred water drops and picking the one that loops cleanly without a visible seam. Listening to forty variations of a temple bell until one has the right attack and the right decay and doesn't sound like a phone notification.
The studio won't pretend to count the total generations. Hundreds per theme is honest. The discipline isn't in the prompts. It's in throwing away everything that's merely good, and keeping only the ones that can sit behind a timer for twenty silent minutes without ever becoming the thing you notice.
What the studio refused to add
Return is not Calm. It is not Headspace. There is no British narrator easing you into a body scan. There is no cartoon avatar celebrating your streak. There is no subscription that unlocks new guided programs.
What is in Return, kept deliberately small: a 5-to-60-minute picker, four repeat modes, a two-second breathing pause between cycles, one-to-three bell rings at each transition, a choice of three bells, four themes, HealthKit opt-in, and a language picker. That's the entire product.
The cost of being this strict shows up in the settings model. Every user-facing preference is clamped to a valid range by the property itself, not by UI validation. UI validation is another dark pattern if you're not careful. The bellRepeatCount getter can't return anything except 1, 2, or 3. Writing 0 or 47 into the underlying @AppStorage silently clamps back to the allowed range.
Return is $2.99. You pay for it once and you own it. No server costs to support, no subscription to renew, no analytics pipeline watching what you do.
Frequently asked
Is Return free?
Return is a one-time $2.99 purchase. There is no subscription, no free tier with locked features, and no in-app purchases. You pay for it once and you own it.
Which devices does Return support?
Return is one Xcode project that ships to all five Apple screen classes: iPhone, iPad, Apple Watch, Apple TV, and Mac. Settings sync across devices through iCloud. Sessions log to Apple Health from any device that has the API; sessions on Mac and Apple TV log to a pending queue and get picked up by the iPhone next time it wakes.
Is there guided meditation content?
No, and that's intentional. Return is for people who already have a practice — whether Zen, Vipassana, MBSR, or years of self-study. The app is a timer that gets out of your way. If you're brand new to meditation, find a teacher in a room first.
What are the ambient themes?
Four themes. Water (gentle waves and flowing streams), Fire (warm, flickering flames), Forest (woodland ambiance), and Silence (no video, no audio). The water, fire, and forest tiles were generated with Midjourney and edited down from hundreds of variations per theme.
Why does Return let me meditate longer than Apple's Mindfulness app?
Apple's native Mindfulness app caps built-in Reflect and Breathe sessions at five minutes. The HealthKit API itself has no such cap — it accepts any session where the end date is after the start date. Return puts a 5-to-60-minute picker on every device and writes whatever you actually sat for to Apple Health.
Does Return track my meditation sessions?
Sessions log to Apple Health Mindful Minutes when you opt in. Return's own session history shows every session with the device it was logged from. All data lives on your devices and in your private iCloud — the studio never sees any of it.
What data does Return collect?
Nothing. No analytics, no tracking, no third-party SDKs, no IDFA. The studio doesn't know who you are or whether you meditate.
What languages does Return support?
Twenty-seven, including Arabic and Hebrew with full right-to-left layout. All strings live in one Localizable.xcstrings file. Layout uses SwiftUI's semantic .leading and .trailing directions, so right-to-left mirroring is automatic.
Where is the full case study?
Blake's personal case study — the engineering details, the localization gotchas, the editing discipline behind the Midjourney themes, and the Japanese Zen background that shaped the design — lives at blakecrosley.com/work/return. This page is the studio's product overview.