What Are Live Activities?
Live Activities are an iOS feature introduced in iOS 16.1 that let an app show a live, updating view on the Lock Screen and inside the Dynamic Island while something is happening — without the user opening the app.
The mental model is “temporary, glanceable, and tied to an event.” Unlike a widget, which is permanent and refreshes on the system's schedule, a Live Activity only exists while a real event is in progress (ride, game, timer, delivery, workout) and is dismissed afterwards.
Unlike a regular push notification, which appears once and disappears, a Live Activity stays on screen and updates in place.
How Live Activities Work
Under the hood, a Live Activity is a small SwiftUI view defined inside a WidgetKit extension and managed by the ActivityKit framework. There are three pieces:
Activity attributes (static)
Metadata that does not change while the activity runs — the order ID, the team names, the route. Defined as a Swift struct that conforms to ActivityAttributes.
Content state (dynamic)
The values that update over time — current ETA, current score, current step. Updated either locally with Activity.update() or remotely with an APNs push of type "liveactivity".
SwiftUI views
You declare three views: lockScreen, compactLeading/compactTrailing/minimal for the Dynamic Island compact form, and an expanded view for the long-press / pull-down state.
When you call Activity.request(...) from your app, iOS starts the activity and (if requested) hands you a push token. Your server can then push updates to that token, the system merges the new content state, and the views re-render — even when the app is suspended.
Where Live Activities Appear
Lock Screen
Larger, banner-style view. Shown on every iPhone running iOS 16.1+. Best surface for richer details — progress bars, maps, multi-line text, score breakdowns.
Dynamic Island
Compact + expanded views on iPhone 14 Pro and every iPhone 15 / 16 / 17 / 18 model. Three modes: compact (around the camera), minimal (when multiple activities are active), and expanded (long-press).
StandBy mode (iOS 17+)
When an iPhone is on a charger in landscape, Live Activities appear large on the StandBy screen — useful for timers, sports, and travel.
Always-on display
On iPhone 14 Pro and later, Live Activities continue to render on the always-on Lock Screen at a reduced refresh rate.
Sizes, Timing & Limits to Plan For
- Max duration: 8 hours active + up to 4 hours stale on the Lock Screen, then auto-dismissed.
- Payload size: roughly 4 KB for the entire push payload including the content-state JSON.
- Update frequency: APNs has rate limits per device. Use
apns-priority: 5for non-urgent updates; reserve priority 10 for truly time-sensitive ones. - One activity per request: you can have multiple concurrent activities, but the Dynamic Island only shows one at a time.
- Permission: the user can disable Live Activities globally or per-app from Settings.
Best Use Cases
Rides & deliveries
ETAs, driver name and location, order status. Uber, Lyft, DoorDash, Uber Eats all do this.
Live sports & events
Score updates, period/quarter changes, possession indicators. Apple’s Sports app and ESPN are reference examples.
Timers & workouts
Countdown timers, intervals, current exercise, pace. Strava and Apple’s built-in Timer use this.
Travel
Boarding times, gate changes, baggage claim, ride-share to and from the airport.
Music & media (with MusicKit)
Now-playing controls and progress, available via the system MediaPlayer integration.
Productivity
Pomodoro timers, focus sessions, meeting countdowns, build status from CI.
How to Build a Live Activity
- Add a WidgetKit extension target to your iOS app in Xcode.
- Define an
ActivityAttributesstruct with a nestedContentState. - Declare your SwiftUI views inside an
ActivityConfiguration: lock screen, compact leading/trailing, minimal, expanded. - In your app, start the activity with
Activity<YourAttributes>.request(...)and capture the push token if you want server-side updates. - Send updates locally with
Activity.update(using:)or remotely with an APNs push of typeliveactivity. - End the activity with
Activity.end(...)when the event finishes.
In React Native or Expo, the recommended path is a small native module that wraps ActivityKit. Newly handles this end-to-end so you can describe a Live Activity in a prompt and ship a real one to the App Store.
Android Equivalents at a Glance
Android does not have a single feature called “Live Activities,” but it has several primitives that, combined, achieve the same thing:
Ongoing notifications
The closest functional equivalent. See our explainer on Android ongoing notifications.
Foreground services
Keep work alive (location, audio, etc.) and surface a persistent notification.
Live Updates (Material You)
Google’s newer push to make notifications richer and more Live-Activity-like.
At a Glance / Now Playing
System-driven glance UI on Pixels — not app-controlled the way Live Activities are.
For a deep dive, jump to our Android Ongoing Notifications guide.