finds.dev← search

// the find

1998code/iOS16-Live-Activities

★ 419 · Swift · MIT · updated Apr 2026

SwiftPizza App for Apple ActivityKit & WidgetKit & Dynamic Island.

A working demo app showing how to implement iOS Live Activities, Dynamic Island, and ActivityKit on iOS 16+. Uses a pizza delivery scenario to cover all four Dynamic Island presentation modes (expanded, compact, minimal) plus lock screen layout. Aimed at iOS developers who need a concrete reference beyond Apple's own documentation.

The offline keep-alive section is genuinely useful — `CLLocationManager` and silent `AVAudioSession` as background keep-alive channels to fire precise `activity.update()` calls without APNs is non-obvious and not in Apple's docs. The image-sharing breakdown (multi-target catalog vs SPM vs embedded framework) gives you the tradeoffs Apple's docs gloss over, including the SPM dedup caveat about `.static` vs `.dynamic` that bites people in production. The `ProgressView(timerInterval:)` trick for frame-by-frame smooth fill is correctly identified as the only primitive that actually interpolates — saves you the trial-and-error of trying `TimelineView`. All four Dynamic Island presentations are implemented in runnable code, not just screenshots.

This is pure demo, not a library — there's nothing to import, just code to copy. The project was written targeting the iOS 16.1 beta era and some patterns have been superseded (e.g. `ActivityConfiguration` API surface has evolved through iOS 16.2, 17, and 18). The push-based update flow (APNs token handling, server-side push payload structure) is entirely absent, which is how most production Live Activities actually update. No test coverage whatsoever — the demo works but there's no way to verify the keep-alive logic fires at the right time without running it on a real device.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →