FlowOS Widgets
A menu-bar suite of macOS widgets — anchors, dispatch, music, and the Dodgers, quietly ambient.
The problem
The FlowOS anchors are the whole point — but they live inside an app, which means opening the app to see them. I wanted the anchors to be peripheral — present when I glanced at Notification Center, invisible otherwise. Once one widget was building, it made sense to surface the rest of the ambient data I actually check throughout the day: the morning briefing, what I’m listening to, whether the Dodgers are playing.
The approach
Four widgets, one bundle, one host. Anchors shows today’s commitments with inline check state. Dispatch renders the morning briefing as a compact card. Music shows now-playing from Apple Music and reports back to The Interlude in companion mode. Dodgers tracks the next game with a live score that stays fresh after the Mac wakes from sleep. Each widget is a single SwiftUI view; the host app sits in the menu bar with an anchor icon and a 10-minute auto-refresh timer.
How it works
All four widgets share an App Group container with the FlowOS Native app, so they read from the same data without duplicating sync logic. The Notion client bypasses URL cache on every fetch so widgets never serve stale data, and the Dodgers widget uses a multi-entry timeline plus a backoff timer so post-wake state catches up fast. Widget URLs route through the host — Anchors and Dodgers open FlowOS-Mac via file URL (sidesteps iPhone Mirroring), Dispatch hands off to the default browser. XcodeGen generates the project from a single project.yml.
Results
- Four widgets in one bundle — Anchors, Dispatch, Music, Dodgers
- Menu-bar host app with auto-refresh and a “Reload Widgets” escape hatch
- Deep links from every widget to the right surface — FlowOS-Mac or browser
- Wake-aware refresh — Dodgers stays current after Mac sleep via timer backoff and timeline reload
- Companion mode — Music widget reports now-playing back to The Interlude