Skip to content
divij.
← Back
Case study · 2021 – now

Gratitude

A mindfulness app for journaling, affirmations and vision boards. I’ve owned its Android app since 2021, first as Android Developer and, since 2023, as Senior Android Developer.

gratefulness.me ↗
installs
1M → 6M+
installs
revenue
10×
revenue
retention for widget users
+25%
retention for widget users
Kotlin
100%
Kotlin
01 · Growth

From one million installs to six

I joined Gratitude in 2021 and took full ownership of its Android app. At the time it had about a million installs.

Since then the app has grown past six million installs, 150K five-star ratings and 100M journal entries, and revenue has grown 10×. That growth came from steady work on the basics: a faster, more stable app, features users asked for, and releases we could ship with confidence.

02 · The Kotlin rewrite

Moving the whole app from Java to Kotlin

The app I inherited was written in Java. I migrated all of it to Kotlin and brought it up to modern Android practice along the way.

The result was a faster, more stable app and a codebase that is far easier to build on, which made everything that followed possible.

03 · Widgets

Rebuilding every widget in Jetpack Glance

Gratitude’s widgets bring journaling prompts, affirmations, vision board images and progress straight to the home screen. The original versions were built with XML RemoteViews, and every design change took manual work and fragile workarounds.

With Narendra Aanjna, I rebuilt the whole widget suite in Jetpack Glance. It took under a month and about half the development time we would have spent before. The new widgets pick up dynamic colour, resize freely, support more configuration and show personalised previews in the widget picker.

We also added in-app pinning, so people can add a widget at the right moment without hunting through the system picker. When a package refactor removed some widgets from home screens, we used stored flags to invite those users to pin the new ones.

Today 10% of daily users have a widget. They log about 1K journal entries a week straight from the home screen, and they show 25% higher retention.

Read it on the Android Developers Blog ↗
04 · Speed and quality

Fewer crashes, faster releases

I spend a lot of time on performance and stability: baseline profiles to speed up cold starts, the CPU and memory profilers to find bottlenecks, lifecycle-aware flow collection in Compose, and quicker crash triage with App Quality Insights.

I also made the release process faster and more reliable. The time this freed up went into new features, such as AI image generation for vision boards, built with Compose previews to match the design exactly.

Read it on the Android Developers Blog ↗
05 · Listening to users

Calls, not dashboards

Some of my most useful work starts with a conversation. I talk to users directly, by call and by email, to understand what they need.

Then I work closely with design and product to turn that feedback into features that feel calm, smooth and joyful to use.

06 · Architecture

Built to scale

As the app grew, I reworked its architecture and build system so it stays maintainable and fast to work on, and so every release ships with confidence.

Want the same for your Android app?

hello@divijgupta.dev