Благодаря функции благодарности удержание пользователей виджета увеличилось на 25%.
3 минуты чтения
Практика благодарности может уменьшить симптомы депрессии и тревоги, а также улучшить психическое здоровье и удовлетворенность жизнью¹. Последовательная практика благодарности может привести к устойчивым улучшениям, которые сохраняются в течение нескольких месяцев². Приложение для развития осознанности Gratitude поощряет последовательность с помощью коротких ежедневных записей в дневнике, аффирмаций и досок визуализации. Приложение скачали более 6 миллионов раз, оно получило 150 тысяч пятизвездочных оценок и содержит 100 миллионов записей в дневнике.
Developers Divij Gupta and Narendra Aanjna developed widgets for each of their app's core user journeys. Their goal was to meet users in their everyday moments without requiring the overhead of a full app session.
Размещая интерактивные подсказки для ведения дневника, аффирмации, изображения для доски визуализации и показатели непосредственно на главном экране пользователя, команда снизила порог входа для ежедневных размышлений и сообщила о 25-процентном увеличении удержания пользователей виджета и примерно 1000 еженедельных записей в дневнике, сделанных с помощью виджета . Это повышение лояльности пользователей приводит к ощутимым результатам для их здоровья: формированию устойчивых привычек, поддерживающих долгосрочное психическое благополучие.
“Widgets helped us make the app more present in users' daily routines by providing quick inspiration, reminders, and reflections directly on the home screen. This increased engagement and made it easier for users to stay consistent with their mindfulness practices.” – Divij Gupta

Задача: модернизировать систему, не снижая уровень удержания клиентов.
While the impact of widgets was clear, Gratitude's original XML-based RemoteViews implementation created technical debt. As the app's design system evolved toward Material 3, the legacy widgets became increasingly difficult to align with the modern UI. Every visual update required manual XML overhead and brittle workarounds, slowing developer velocity.

Решение, часть 1: переход с XML на Jetpack Glance
Для модернизации своих виджетов команда обратилась к Jetpack Glance .
Сначала они обратились к странице дизайна виджетов на Android и к стандартным макетам виджетов, чтобы понять лучшие практики отображения информации в ограниченном пространстве.
Then, they migrated their widget suite to Jetpack Glance. This declarative framework enabled the developers to move from planning to shipping in less than a month , saving about 50% development time , and saw two additional advantages:
- Замена ограничительных XML-шаблонов декларативным кодом упростила чтение и сопровождение кодовой базы, а также снизила трудозатраты разработчиков.
- Jetpack Glance allowed the team to more easily implement dynamic colors , flexible resizing , and expanded configuration options. These features ensure the widgets harmonize with a user's unique home screen layout.

На следующем GIF-изображении показаны два виджета благодарности и функция адаптивного изменения размера:

Хотя Glance упростил пользовательский интерфейс, команда отметила, что тестирование на различных лаунчерах от разных производителей также имеет важное значение для обеспечения единообразия расположения элементов на разных устройствах.
The team also implemented Generated Widget Previews so users can see personalized previews. They noted that testing Generated Previews could be slow, as the previews are rate limited to preserve battery. To bypass the rate limiting for testing, use the adb command:
adb shell device_config put systemui generated_preview_api_reset_interval_ms 0
Благодаря всем их усилиям виджет «Благодарность» стал высококачественным и выделяющимся на фоне конкурентов .
Решение, часть 2: продвижение новых виджетов в приложении.
The developers then used in-app widget pinning to increase widget discoverability and widget installs. Asking users to install widgets at a contextually relevant moment within the app helps users find their widgets without needing to go through the system widget picker. The following GIF shows Gratitude's bottom sheet to add widgets from within the app:
The team also refactored widget packages, which changed widget receiver paths and caused widgets to be deleted from users' home screens. Using previously stored user flags to identify widget users, they triggered another requestPinGlanceAppWidget prompt inviting widget users to use the new modernized widgets.
Developer Tip: To maintain widget installs while migrating from RemoteViews to Jetpack Glance, ensure your GlanceAppWidgetReceiver uses the same class name and package as your previous AppWidgetProvider in the Android Manifest. If a new class name or package location is required, follow the Gratitude's lead by using in-app pinning to help users restore their widgets.
Стратегия работает, поскольку 10% от общего числа активных пользователей в день уже используют виджеты.
Заключение
This Gratitude story shows that widgets can be tools for habit formation. By implementing quick actions to self-reflect right from the home screen, the team improved user loyalty. Gratitude reduced technical debt and modernized their widgets by adopting Jetpack Glance, and prompted users to add widgets within their app.
«Наш опыт работы с Jetpack Glance оказался превосходным. Подход, основанный на Compose, кажется гораздо более современным, гибким и соответствует тому, как мы создаем остальную часть нашего пользовательского интерфейса сегодня. Он позволяет нам более естественно выражать макеты виджетов, повторно использовать знакомые компоненты Compose и гораздо быстрее вносить изменения в пользовательский интерфейс. Многие ограничения пользовательского интерфейса, с которыми мы ранее сталкивались при использовании RemoteViews, больше не являются проблемой, что упростило создание виджетов, которые лучше соответствуют дизайну и пользовательскому опыту нашего приложения». – Дивидж Гупта
Начиная
Чтобы начать работу с Jetpack Glance и узнать о технологиях, упомянутых в этой статье, ознакомьтесь с этими руководствами:
- Обзор реактивного ранца
- Виджеты на странице дизайна Android
- Канонические макеты виджетов
- Предварительный просмотр сгенерированных виджетов
- Уровни качества виджетов
- Закрепление виджетов в приложении
- Динамичные цвета
- Изменение размера
- Действия по настройке
См. другие примеры использования виджетов:
- Приложение «Контакты» от Google создало новый виджет на 25% быстрее, используя Jetpack Glance.
- SoundCloud с помощью Jetpack Glance создал виджет «Понравившиеся треки» всего за 2 недели.
1: Диниз Г., Коркес Л., Тристан Л.С., Пелегрини Р., Беллоди П.Л. и Бернардо В.М. (2023). Эффекты вмешательства благодарности: систематический обзор и метаанализ. Эйнштейн (Сан-Паулу)., 21, eRW0371. https://doi.org/10.31744/einstein_journal/2023RW0371
2: Bohlmeijer, E., Kraiss, J., Schotanus-Dijkstra, M., & ten Klooster, P. (2022). Gratitude as mood mediates the effects of a 6-weeks gratitude intervention on mental well-being: post hoc analysis of a randomized controlled trial. Front. Psychol., 12, 799447. https://doi.org/10.3389/fpsyg.2021.799447
Примеры из практикиUltrahuman is a consumer health-tech startup that provides daily well-being insights to users based on biometric data from the company's wearables, like the RING Air and the M1 Live Continuous Glucose Monitor (CGM).
Amrit Sanjeev , Trevor Johns • 2 мин чтения
Примеры из практикиМиссия Tinder — способствовать установлению и развитию настоящих связей, делая знакомства простыми и увлекательными для каждого нового поколения одиноких людей.
Ajesh Pai , Ulises Uriel Verduzco Díaz , Tracy Agyemang • Чтение 4 минуты
Примеры из практикиWith the majority of Android apps adopting Kotlin as their main language of choice, kotlinx.coroutines has become a de-facto standard for asynchronous programming. The library offers a well-designed and structured way of managing concurrent flows that is native to Kotlin.
Jonathan Starup , Andrei Shikov • чтение на 7 минут
Получайте еженедельно самые свежие новости о разработке Android прямо на свою электронную почту.




