Live now · iOS 18 · macOS 15
Native widgets across every Apple surface.
Tap a widget to go straight to the album. Tap play, pause, next or previous and NaviBeat carries it out. Pick which playlists and which radio stations your widgets show. Pin one to the Mac wallpaper, or put Now Playing on your watch face.
NaviBeat widgets: four guardrails
App Group only
Every widget reads from a sandboxed App Group container the host app writes to. No network calls, no background fetches, no analytics SDK. The widget binary itself never opens a socket.
Deep links, not background intents
Tapping Play, Next or Previous opens a navibeat:// link into the app, and the app performs it. We went this way on purpose: Apple's in-widget button intents never reliably registered in Release builds (FB13281659), and a control that silently does nothing is worse than one that brings the app forward. It also means a widget process is never the thing touching your music server.
Cross-platform shared engine
iPhone and Mac widgets share the same App Group layout and the same snapshot wire format, so behaviour you learn on the iPhone holds on the Mac.
Reload budget respected
Widgets only refresh on real state changes (track flip or play/pause), not on every tick. That keeps you well under Apple's daily refresh budget so the widget never freezes mid-day.
Five surfaces
Every widget NaviBeat ships today.
Each surface has a single, opinionated job. None of them try to mirror the whole player: they show what you need at a glance, and they hand you back to the app the moment you want depth.
Home Screen: Now Playing
- Small + Medium sizes
- Cover art ambient backdrop
- Transport row (Medium): Prev / Play-Pause / Next
- Tap to deep-link to Now Playing
Home Screen: Recently Played
- Small: top recent track tile
- Medium: three-row list with cover thumbs
- Per-row deep link to the album
- Deduplicated by track id, max 12 entries
Lock Screen + StandBy
- Accessory Circular: play-state + title initial
- Accessory Rectangular: glyph + title + artist
- Accessory Inline: single-line status row
- StandBy + Always-On render via .vibrant mode
Playlists, Radio, and your watch
- Playlists widget: choose exactly which playlists it shows
- Radio widget: choose exactly which stations it shows
- Apple Watch complication in four shapes
- Now Playing (large): the next tracks, each one tappable
Mac Desktop
- Small + Medium + Large sizes
- Cover art backdrop, full transport row
- Large: Up Next peek (next 3 queued tracks)
- Playlists and Radio widgets too, both configurable
How widgets stay private
Sandboxed by design.
The host app writes a small JSON snapshot of "what is playing" into a per-platform App Group container. The widget process reads that snapshot on every timeline regeneration. There is no IPC layer, no network call, no analytics framework. If you turn airplane mode on, the widgets keep updating on every track flip.
- App Group identifiers:
group.app.navibeat.NaviBeatApp.iosandgroup.app.navibeat.NaviBeatApp.macos. Per-platform on purpose so a misconfigured iPad cannot read the Mac's container or vice versa. - Cover art bytes live as JPEG files inside the container, never embedded in the snapshot JSON (the snapshot stays under a few KB so UserDefaults reads are quick).
- Widget reloads only fire on real track changes or play / pause flips. Tick-by-tick "elapsed seconds" updates persist to the container but do not refresh the widget UI, which keeps NaviBeat well under Apple's daily reload budget.
- Widget controls are plain
navibeat://links into the app, not background intents. Tapping one brings NaviBeat forward and the app performs the action, so a widget process is never the thing touching your music server.
One $5.99 buy. Every widget ships today.
Universal Purchase on the App Store: iPhone, iPad, Mac, Apple TV, and Apple Watch. Widgets are live today on iPhone and Mac.