{"id":126632,"date":"2026-05-08T17:01:25","date_gmt":"2026-05-08T17:01:25","guid":{"rendered":"https:\/\/christiancorner.us\/index.php\/2026\/05\/08\/how-gratitude-boosted-user-retention-by-25-with-widgets\/"},"modified":"2026-05-08T17:03:12","modified_gmt":"2026-05-08T17:03:12","slug":"how-gratitude-boosted-user-retention-by-25-with-widgets","status":"publish","type":"post","link":"https:\/\/christiancorner.us\/index.php\/2026\/05\/08\/how-gratitude-boosted-user-retention-by-25-with-widgets\/","title":{"rendered":"How Gratitude Boosted User Retention by 25% with Widgets"},"content":{"rendered":"<p>\n<\/p>\n<div>\n<meta content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhSdjAlGaiV6qMhXE4xPzSXSgqPkrtDp2e1wBy8H5GB-oS9466IlHbp-jYprmhB4wZv03-mNNOdpTwvgwbZstQ8B-6Z9Sp_1j9eBZ6LimJKDTrFFbO-bE768PAFxBSQDSJfJP9ppgeoAo8SVwFl8R9VrvweAveLeRadFkTmPoN5XLAgawWJ_zEdJo5czsM\/s1234\/AANDDM_Gratitude_Meta.png\" style=\"clear: right; float: right; margin-bottom: 1em; margin-left: 1em;\"\/><\/p>\n<p><i>Posted by Ash Nohe and Amrit Sanjeev, Android Developer Relations Engineers<\/i><\/p>\n<div><i><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/blogger.googleusercontent.com\/img\/a\/AVvXsEgC3S4hQI2oFTu_5W_j7Re6dG0QMxsEMS8KvtGyNuJqFqMTqcPKs65yz9RNPxL8RLcldyADMDJFBRCcRTLNU3qcOzNwrMw21MDij19RebEAKDR8tUfvWQBwOVI5cPJW7KgAZgdh8zXWrVWvmlau_738BM-Fffg6yJm28n-Ty8V8RiIEj5K_8PZJHYekP4Y\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img decoding=\"async\" alt=\"\" data-original-height=\"720\" data-original-width=\"1280\" src=\"https:\/\/blogger.googleusercontent.com\/img\/a\/AVvXsEgC3S4hQI2oFTu_5W_j7Re6dG0QMxsEMS8KvtGyNuJqFqMTqcPKs65yz9RNPxL8RLcldyADMDJFBRCcRTLNU3qcOzNwrMw21MDij19RebEAKDR8tUfvWQBwOVI5cPJW7KgAZgdh8zXWrVWvmlau_738BM-Fffg6yJm28n-Ty8V8RiIEj5K_8PZJHYekP4Y=s16000\"\/><\/a><\/div>\n<p><\/i><\/p>\n<p>Practicing gratitude can reduce symptoms of depression and anxiety, and improve mental health and life satisfaction.<sup>1<\/sup>. Consistent gratitude practice can lead to sustained improvement over the months<sup>2<\/sup>. mindfulness app <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.northstar.gratitude&amp;hl=en_US\">Thankfulness<\/a> Encourages consistency through micro daily journaling, affirmations, and vision boards. The app has logged over 6 million downloads, 150 thousand 5-star ratings, and 100 million journal entries.<\/p>\n<p>Developers Divij Gupta and Narendra Anjana developed widgets for each main user journey of their app. Their goal was to meet users in their everyday moments without requiring the overhead of a full app session.<\/p>\n<p>By displaying interactive journaling prompts, affirmations, vision board images and metrics directly on the user&#8217;s home screen, the team lowered the barrier of entry for daily reflection and reported a 25% increase in retention for widget users and ~1K weekly journal entries from widgets. This increase in user loyalty translates into tangible health outcomes for users: consistent habit formation that supports long-term mental well-being.<\/p><\/div>\n<blockquote style=\"border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;\">\n<p>&#8220;The widgets helped us make the app more present in users&#8217; daily routines by providing quick inspiration, reminders, and reflections right on the home screen. This increased engagement and made it easier for users to stay consistent with their mindfulness practices.&#8221; &#8211; Divij Gupta<\/p>\n<\/blockquote>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjZz08QE2_imlZmD6d7dCIeZIeWjGKb0CwZaTQETj-VDi0TXHzYl1qn_cjMZ5yJiLRZq3Y9JOiF4bjvV3CnkSaGvGj6Qz0FKMXJHBxORrgBzNTz3mj1Gzu7xEd6kVTdShk1RyHjcblHOqLM2ubBOMjxZIv2JZuXwUFY-NMxRZM8ZVOmS_xG6aBIdOJsuc4\/s1280\/AANDDM_Gratitude_01.png\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img decoding=\"async\" border=\"0\" data-original-height=\"720\" data-original-width=\"1280\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjZz08QE2_imlZmD6d7dCIeZIeWjGKb0CwZaTQETj-VDi0TXHzYl1qn_cjMZ5yJiLRZq3Y9JOiF4bjvV3CnkSaGvGj6Qz0FKMXJHBxORrgBzNTz3mj1Gzu7xEd6kVTdShk1RyHjcblHOqLM2ubBOMjxZIv2JZuXwUFY-NMxRZM8ZVOmS_xG6aBIdOJsuc4\/s16000\/AANDDM_Gratitude_01.png\"\/><\/a><\/div>\n<p><\/p>\n<h2 style=\"font-size: 1.75rem; font-weight: 700; margin-top: 40px;\">Challenge: Modernize without reducing retention<\/h2>\n<p>While the impact of widgets was obvious, Gratitude&#8217;s native XML-based RemoteView implementation created technical debt. As the app design system evolved toward Material 3, it became harder to align older widgets with the modern UI. Every visual update requires manual XML overhead and brittle workarounds, slowing down developers.<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiXMmCJ_VjwU1r406UM7HADpfr_g0wI9pmJBoOyCPS7eG8zLy3HHFWL5dE5yzaPk9AMzlLH11CwuEf-x3OOG8M1iGIAgdKYhNB6n63KhDHmZYi_zqTewVocHYAP4dtzN09mfKMSXZPar2qd1s1tPUPfhus4Ej10bH736KjX6_YSx0BzafeUdgS3poNxFWM\/s1280\/AANDDM_Gratitude_02.png\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img decoding=\"async\" border=\"0\" data-original-height=\"720\" data-original-width=\"1280\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiXMmCJ_VjwU1r406UM7HADpfr_g0wI9pmJBoOyCPS7eG8zLy3HHFWL5dE5yzaPk9AMzlLH11CwuEf-x3OOG8M1iGIAgdKYhNB6n63KhDHmZYi_zqTewVocHYAP4dtzN09mfKMSXZPar2qd1s1tPUPfhus4Ej10bH736KjX6_YSx0BzafeUdgS3poNxFWM\/s16000\/AANDDM_Gratitude_02.png\"\/><\/a><\/div>\n<p><\/p>\n<div><\/p>\n<h2 style=\"font-size: 1.75rem; font-weight: 700; margin-top: 40px;\">Solution Part 1: Migrating from XML to Jetpack Glance<\/h2>\n<p>To modernize its widgets, the team turned to <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/glance\">jetpack look<\/a>.<\/p>\n<p>he consulted first <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/design\/ui\/widget\">widgets on android<\/a> design pages and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/design\/ui\/mobile\/guides\/widgets\/layouts\">Canonical widget layout<\/a> Understanding best practices for displaying information within a limited amount of space.<\/p>\n<p>Then, they moved their widget suite to Jetpack Glance. This declarative framework enabled developers to move from planning to shipping in less than a month, saving approximately 50% of development time, and saw two additional benefits:<\/p>\n<ul style=\"text-align: left;\">\n<li>Replacing restrictive XML layout with declarative code made the codebase easier to read, maintain, and reduced developer effort.<\/li>\n<li>Jetpack Glance allowed the team to more easily implement <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/glance\/theme\">dynamic color<\/a>flexible <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/glance\/build-ui#sizemode.exact\">resize<\/a>and extended configuration options. These features ensure that widgets harmonize with the user&#8217;s unique home screen layout.<\/li>\n<\/ul>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEic2TALbS6ugDBekgD3_oRnhpqNwUVQb8ojb7HXmYEBcZgSxfWXI7BS8puLeAo80NDJe-ECsOcjs6DKlSzOsgR6DA0Qz51uflbwbYyDFcimB4PMmk9N-xlT7niIp2zJ2OXCcAnzW7nqmX5SxfVE-IgpwF2EIhVZkf_m9klyqPX7c_X9N9sk_4Ga_JBCLlA\/s1280\/AANDDM_Gratitude_03.png\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img decoding=\"async\" border=\"0\" data-original-height=\"720\" data-original-width=\"1280\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEic2TALbS6ugDBekgD3_oRnhpqNwUVQb8ojb7HXmYEBcZgSxfWXI7BS8puLeAo80NDJe-ECsOcjs6DKlSzOsgR6DA0Qz51uflbwbYyDFcimB4PMmk9N-xlT7niIp2zJ2OXCcAnzW7nqmX5SxfVE-IgpwF2EIhVZkf_m9klyqPX7c_X9N9sk_4Ga_JBCLlA\/s16000\/AANDDM_Gratitude_03.png\"\/><\/a><\/div>\n<p>The following GIF shows two gratitude widgets and adaptive sizes:<\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhWMfVzMksvsevkBLEmHuqGjCKKHll0wvQch6S6gqes5pmneIyfCU580UbF2ooXTzD7d1Kf4Qi7oNqVM4_ZG50KFBwlSqMQt7snCGVV1i8BfyCAvxXzacVTIsgFjYrUzfX9vG9RZedkccO_9MxAuZU4UL_QWeDgu31lqGSAN02zpKF0Y-7cAy9A3B8ztZs\/s1080\/GratitudeAdaptiveWidgets.gif\" style=\"margin-left: 1em; margin-right: 1em;\"><img fetchpriority=\"high\" decoding=\"async\" border=\"0\" data-original-height=\"1080\" data-original-width=\"482\" height=\"640\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhWMfVzMksvsevkBLEmHuqGjCKKHll0wvQch6S6gqes5pmneIyfCU580UbF2ooXTzD7d1Kf4Qi7oNqVM4_ZG50KFBwlSqMQt7snCGVV1i8BfyCAvxXzacVTIsgFjYrUzfX9vG9RZedkccO_9MxAuZU4UL_QWeDgu31lqGSAN02zpKF0Y-7cAy9A3B8ztZs\/w286-h640\/GratitudeAdaptiveWidgets.gif\" width=\"286\"\/><\/a><\/div>\n<p>While Glance simplified the UI, the team noted that testing of different OEM launchers was also necessary to ensure layout consistency across different devices.<\/p>\n<p>The team also implemented <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/glance\/generated-previews\">generated widget preview<\/a> So that users can see personalized preview. He noted that testing the generated previews could be slow, as the preview rate is limited to conserve battery. To bypass rate limiting for testing, use the adb command:<\/p>\n<p><code>adb shell device_config put systemui\u00a0<\/code><\/p>\n<div><code>generated_preview_api_reset_interval_ms 0<\/code><\/p>\n<p>All their efforts resulted in a gratitude widget <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/docs\/quality-guidelines\/widget-quality\">high quality and differentiated<\/a>.<\/p>\n<p><strong>Solution Part 2: Promote New Widget to App<\/strong><\/p>\n<p>The developers then used<a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/glance\/pin-in-app\"> In-App Widget Pinning<\/a> 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 the bottom sheet of gratitude for adding the widget from within the app:<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjYSftgbMBJSFMsZiusz8VNsuJjwl4vlBqNN087CuYFbzpRc14eA_5sp48XiIMbryPfZ5IoJQqJz_WcAtkdeYSk5be1QMTgx-0YnFmMF99Ae79mlYcwi9j2pfmoLLCmCYDAVFSfLpN9uSATakHkWAWdT1mvF4u5sgVRnCcY2Wfzyq4xoVOTYT6A4Xmxrqk\/s1080\/GratitudeInAppFlow.gif\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" border=\"0\" data-original-height=\"1080\" data-original-width=\"486\" height=\"640\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjYSftgbMBJSFMsZiusz8VNsuJjwl4vlBqNN087CuYFbzpRc14eA_5sp48XiIMbryPfZ5IoJQqJz_WcAtkdeYSk5be1QMTgx-0YnFmMF99Ae79mlYcwi9j2pfmoLLCmCYDAVFSfLpN9uSATakHkWAWdT1mvF4u5sgVRnCcY2Wfzyq4xoVOTYT6A4Xmxrqk\/w288-h640\/GratitudeInAppFlow.gif\" width=\"288\"\/><\/a><\/div>\n<\/div>\n<div>The team also reworked the widget packages, changing widget receiver paths and removing widgets from users&#8217; home screens. Using previously stored user flags to identify widget users, they triggered another <code>requestPinGlanceAppWidget<\/code> Instantly inviting widget users to use the new modern widgets. <\/div>\n<blockquote style=\"border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;\">\n<p><b>developer tip<\/b>: To retain widgets installed when migrating from Remote View to Jetpack Glance, make sure that your <code>GlanceAppWidgetReceiver<\/code> Uses your previous class name and package. <code>AppWidgetProvider<\/code> In Android manifest. If a new class name or package location is needed, follow Gratitude&#8217;s lead by using in-app pinning to help users restore their widgets.<\/p>\n<\/blockquote>\n<p>The strategy is working, e.g. <b>10% of total DAU<\/b> Widgets have been adopted.<\/p>\n<p><strong>conclusion <\/strong><\/p>\n<p>This gratitude story shows that widgets can be tools for habit formation. By implementing quick actions to self-reflect directly from the home screen, the team improved user loyalty. Gratitude reduced technical debt and modernized its widgets by adopting Jetpack Glance, and encouraged users to add widgets to their apps.<\/p>\n<blockquote style=\"border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;\">\n<div>\n<div>\n<p style=\"text-align: left;\"><i>&#8220;Our experience with Jetpack Glance has been excellent. The Compose-based approach feels more modern, flexible, and in line with the way we build the rest of our UI today. It allows us to express widget layouts more naturally, reuse familiar Compose components, and iterate on UI changes much faster. Many of the UI hurdles we previously encountered with Remote View are no longer an issue, making it easier to create widgets like these that better match the design and feel of our app.&#8221; \u2013 <strong>Divij Gupta<\/strong><\/i><\/p>\n<\/div>\n<\/div>\n<\/blockquote>\n<div>\n<p><strong>launch<\/strong><\/p>\n<p>To get started with Jetpack Glance and learn about the technologies mentioned in this post, check out these guides:<\/p>\n<p><strong>Check out other widget case studies:<\/strong><\/p>\n<p>1: Diniz, G., Korkes, L., Trist\u00e3o, L.S., Pellegrini, R., Belodi, P.L., and Bernardo, W.M. (2023). Effects of gratitude interventions: A systematic review and meta-analysis. Einstein (S\u00e3o Paulo), 21, eRW0371. <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/doi.org\/10.31744\/einstein_journal\/2023RW0371\">https:\/\/doi.org\/10.31744\/einstein_journal\/2023RW0371<\/a><\/p>\n<p>2: Bohlmeijer, E., Kraus, J., Schottnes-Dijkstra, M., and ten Klooster, P. (2022). Gratitude as mood mediates the effects of a 6-week gratitude intervention on mental well-being: Post hoc analysis of a randomized controlled trial. Front. Psychol., 12, 799447. <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/doi.org\/10.3389\/fpsyg.2021.799447\">https:\/\/doi.org\/10.3389\/fpsyg.2021.799447<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Posted by Ash Nohe and Amrit Sanjeev, Android Developer Relations Engineers Practicing gratitude can reduce symptoms of depression and anxiety, and improve mental health and life satisfaction.1. Consistent gratitude practice can lead to sustained improvement over the months2. mindfulness app Thankfulness Encourages consistency through micro daily journaling, affirmations, and vision boards. The app has logged<\/p>\n","protected":false},"author":1,"featured_media":126636,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58],"tags":[9334,5985,15817,6032,22556],"class_list":{"0":"post-126632","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-devotionals","8":"tag-boosted","9":"tag-gratitude","10":"tag-retention","11":"tag-user","12":"tag-widgets"},"_links":{"self":[{"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/posts\/126632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/comments?post=126632"}],"version-history":[{"count":1,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/posts\/126632\/revisions"}],"predecessor-version":[{"id":126637,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/posts\/126632\/revisions\/126637"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/media\/126636"}],"wp:attachment":[{"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/media?parent=126632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/categories?post=126632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/christiancorner.us\/index.php\/wp-json\/wp\/v2\/tags?post=126632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}