Перейти к содержанию
Innovialabs

Виджеты на экране iOS и Android: когда они нужны приложению

Основы3 мин

Коротко

Виджет показывает одну актуальную вещь без открытия приложения и обновляется по правилам системы, а не в реальном времени; он полезен, когда у пользователя есть повод заглядывать часто — статус, баланс, расписание, прогресс.

Коротко: что такое виджет

Виджет — это небольшой блок приложения на главном экране (а в iOS ещё и на экране блокировки), который показывает одну полезную информацию без открытия приложения. Это не мини-версия приложения, а «окошко» с самым нужным.

Live Activities в iOS — отдельный формат: живая карточка на экране блокировки и в Dynamic Island для события, которое длится ограниченное время, — доставка, поездка, матч. В Android похожую задачу обычно решают постоянным уведомлением с прогрессом.

Виджет нужен приложению, если есть ответ на вопрос: что пользователь хочет видеть, не открывая приложение, несколько раз в день или неделю?

Что виджеты умеют и чего не умеют

УмеютНе умеют
Показывать текст, цифры, картинки, простые графикиРаботать как полноценный интерфейс
Открывать нужный экран приложения по нажатию (deep link)Принимать ввод с клавиатуры
Простые действия: кнопки, переключатели (в современных версиях систем)Проигрывать видео и сложную анимацию
Иметь несколько размеровОбновляться непрерывно в реальном времени

Технические ограничения

iOS: WidgetKit

  • Виджеты пишутся на SwiftUI с помощью WidgetKit, даже если основное приложение сделано на Flutter или React Native.
  • Содержимое строится как timeline — набор заранее подготовленных состояний с временем показа. Система сама решает, когда их отрисовать.
  • У каждого виджета есть бюджет на обновления: если просить обновлять слишком часто, система начнёт пропускать запросы.
  • Данные из приложения передаются через общую область хранения (App Group).

Android: App Widgets и Jetpack Glance

  • Классические виджеты используют RemoteViews — ограниченный набор элементов интерфейса.
  • Jetpack Glance позволяет описывать виджеты в стиле Compose, но под капотом всё равно получаются RemoteViews со своими ограничениями.
  • Периодическое обновление через updatePeriodMillis не может быть чаще примерно раза в полчаса. Для другого графика используют WorkManager или обновляют виджет из приложения при изменении данных.

Live Activities

  • Работают через ActivityKit, обновляются из приложения или через специальные push-уведомления.
  • Ограничены по времени и объёму данных — это формат для конкретного события, а не постоянная панель.

Для кросс-платформенных приложений виджет — это отдельный нативный код под каждую платформу. Его стоит закладывать в оценку отдельно.

Где виджет полезен

Тип приложенияЧто показывать
Доставка, таксиСтатус заказа или поездки (лучше Live Activity)
Финансы, банкБаланс или лимит — со скрытием сумм по желанию пользователя
Задачи, заметки, календарьБлижайшие дела, быстрая запись
Здоровье, фитнес, привычкиПрогресс за день, отметка выполнения
ТранспортБлижайшие рейсы на выбранной остановке
ОбучениеСлово дня, серия занятий подряд
Погода, курсы валютТекущие значения

Где виджет обычно не нужен: приложения, которые открывают раз в месяц, и виджеты-«баннеры» с рекламой акций — их быстро удаляют с экрана.

Как виджеты влияют на вовлечённость

Виджет напоминает о приложении каждый раз, когда человек разблокирует телефон, и сокращает путь к ключевому действию. Но эффект есть только при реальной пользе: если на виджете устаревшие или бесполезные данные, его убирают.

Что стоит измерять:

  • сколько пользователей добавили виджет;
  • сколько сессий начинается с нажатия на виджет;
  • как отличается удержание у тех, кто пользуется виджетом, и у остальных.

Помните, что пользователи, добавившие виджет, изначально более вовлечены — сравнение не доказывает причинно-следственную связь само по себе.

Частые ошибки

  • Переносят в виджет весь экран приложения — получается мелко и нечитаемо.
  • Рассчитывают на обновление «каждую минуту» и удивляются устаревшим данным.
  • Показывают личные данные на экране блокировки без возможности их скрыть.
  • Не делают пустое состояние: что видит пользователь до входа в аккаунт.

Частые вопросы

Да, но сам виджет пишется нативно: на SwiftUI для iOS и на Kotlin для Android. Основное приложение передаёт ему данные через общее хранилище, для этого есть готовые пакеты-мосты.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.