Home Screen Widgets on iOS and Android: When an App Needs One
Basics4 minInnovialabs editorial team
In short
A widget shows one up-to-date thing without opening the app and refreshes on the system's terms, not in real time; it is worth building when users have a reason to check often — a status, balance, schedule or progress.
In short: what a widget is
A widget is a small block of your app on the home screen (and, on iOS, the lock screen too) that shows one useful piece of information without opening the app. It is not a mini version of the app but a window onto what matters most.
Live Activities on iOS are a separate format: a live card on the lock screen and in the Dynamic Island for an event that lasts a limited time — a delivery, a ride, a match. On Android a similar job is usually done by an ongoing notification with progress.
An app needs a widget if you can answer one question: what does the user want to see, without opening the app, several times a day or week?
What widgets can and cannot do
| Can | Cannot |
|---|---|
| Show text, numbers, images, simple charts | Work as a full interface |
| Open a specific screen in the app on tap (deep link) | Accept keyboard input |
| Simple actions: buttons, toggles (in current OS versions) | Play video or complex animation |
| Come in several sizes | Update continuously in real time |
Technical constraints
iOS: WidgetKit
- Widgets are written in SwiftUI using WidgetKit, even if the main app is built with Flutter or React Native.
- Content is built as a timeline — a set of prepared states with display times. The system decides when to render them.
- Each widget has an update budget: if you ask to refresh too often, the system starts skipping requests.
- The app shares data with the widget through a shared container (App Group).
Android: App Widgets and Jetpack Glance
- Classic widgets use RemoteViews — a limited set of UI elements.
- Jetpack Glance lets you describe widgets in a Compose-like style, but under the hood it still produces RemoteViews with their limits.
- Periodic updates via
updatePeriodMilliscannot run more often than roughly every half hour. For other schedules, use WorkManager or update the widget from the app when data changes.
Live Activities
- They run on ActivityKit and are updated from the app or through dedicated push notifications.
- They are limited in duration and data size — a format for a specific event, not a permanent panel.
For cross-platform apps, a widget is separate native code for each platform. Budget for it separately.
Where a widget helps
| App type | What to show |
|---|---|
| Delivery, taxi | Order or ride status (better as a Live Activity) |
| Finance, banking | Balance or limit — with an option to hide amounts |
| Tasks, notes, calendar | Upcoming items, quick entry |
| Health, fitness, habits | Today's progress, mark as done |
| Transport | Next departures from a chosen stop |
| Learning | Word of the day, current streak |
| Weather, exchange rates | Current values |
Where a widget usually isn't needed: apps opened once a month, and "banner" widgets advertising promotions — people remove them from the screen quickly.
How widgets affect engagement
A widget reminds people about the app every time they unlock the phone and shortens the path to the key action. But it only works when it is genuinely useful: if the widget shows stale or pointless data, it gets removed.
What to measure:
- how many users added the widget;
- how many sessions start with a tap on the widget;
- how retention differs between widget users and everyone else.
Keep in mind that users who add a widget are more engaged to begin with — the comparison alone does not prove cause and effect.
Common mistakes
- Cramming a whole app screen into a widget — it ends up tiny and unreadable.
- Expecting "every minute" updates and being surprised by stale data.
- Showing personal data on the lock screen without a way to hide it.
- No empty state: what the user sees before signing in.