Live Activities done right: when to ship, when to skip
Live Activities - and their Dynamic Island companion - feel magical when they fit your app and forced when they don't. We've shipped Live Activities in two apps and chose not to in five others. Here's the framework we use to decide.
What Live Activities actually do
ActivityKit lets your app surface a real-time status to the Lock Screen and Dynamic Island. Not a notification, not a widget - a persistent rendered view that updates while a task is in progress.
Examples: a delivery on its way, a workout in progress, a focus session running. The user can glance at the Lock Screen and know 'how much longer.'
The 8-hour clock and why it matters
Live Activities have a hard expiration: the system kills them after 8 hours, or 12 with a manual extension request. This is non-negotiable.
If your task duration spans days (a multi-day reading streak, a slow-cooking timer), Live Activities are the wrong tool. Use a regular widget that shows progress over the longer horizon.
When they're worth shipping
We've found Live Activities pay back when:
- The task has a clear start, end, and progress signal
- Total duration is between 10 minutes and 6 hours
- The user opens the app to start, then wants to forget about it
- The 'how much longer?' question is the primary thing they'd ask
Pomodoro timers, fasting windows, run/walk sessions, cooking timers: all yes.
When they're not
Skip Live Activities when:
- The user needs to interact frequently (Live Activities have very limited tap targets)
- The data updates more than once per minute (the system will throttle you)
- The duration is unpredictable or ambient (a habit, a journal, a feed)
Most journaling, habit, and reference apps don't need Live Activities. Don't bolt one on for the App Store screenshot.
Two implementations from our catalog
Pomoly's Live Activity shows the current Pomodoro phase, remaining time as a circular ring, and a pause button in the Dynamic Island. We update the timeline at minute boundaries - 25 ticks for a focus session - well within budget.
Intermittent Fasting Kit shows fasting progress on the Lock Screen with a target time. The Dynamic Island shows the elapsed/remaining ratio. We deliberately don't include any tap actions - the moment you start interacting, you're back in the app anyway.
What we'd do differently
We over-engineered Pomoly's first Live Activity with custom drawing in the trailing region. It looked great but ate update budget. The current version uses standard SwiftUI views; engagement metrics didn't change.