Notifications and widgets are often spoken of in the same breath, as if they did the same job differently. They don't. A notification interrupts you, asks something of your attention, and disappears. A widget sits on your home screen and waits, never speaks first, and reveals something only if you happen to look. They occupy opposite ends of an attention spectrum, and conflating them is one of the most common mistakes in habit-app design.
For something as low-stakes as drinking water, the choice between them is obvious. A reminder is a small interruption, deployed sparingly. A widget is an ambient truth, available whenever your eyes drift past the home screen. Drimin leans hard into the widget for that reason.
The glance is its own unit of UI
Mark Weiser called this calm technology back in 1996: information that moves easily from the periphery of attention to the centre and back, without ever demanding a context switch. A wall clock is the canonical example. A weather app that requires three taps to see whether it's raining is the canonical anti-example.
Home-screen widgets are the closest thing modern mobile OSes have to that ideal. They are visible without being unlocked into. They don't push; they sit. They are a static surface that happens to be live.
What Drimin's widget shows, and why
The widget shows three things, in this order of visual weight:
- The orb — same paint as the in-app orb, slightly simplified. The waterline rises with your day's progress.
- A current total in your unit of choice (e.g. "1.6 L of 2.5 L").
- One tap-target: "+ a glass." Tapping it logs your default cup size and updates the orb in the next refresh.
That is deliberately less than what the app shows. A widget that tries to be a dashboard is a widget you'll uninstall in a week. A widget that does one job in one glance is one you'll forget is even an app.
The widget's job is not to replace the app. It's to make the app unnecessary on the days you don't have anything to investigate.
The mechanics, briefly
Android widgets are still backed by the same AppWidgetProvider +
RemoteViews system that shipped with Cupcake in 2009. They are
intentionally limited in what they can render — you don't get a full Compose
tree, you get a constrained subset of layouts and pre-rendered drawables. For
Drimin's orb, that means rasterising the current frame to a bitmap on the Flutter
side, handing it to a native helper, and having the widget render it as an
ImageView. The orb you see on the home screen is the same paint code
that draws the in-app orb; it's just delivered as a frame instead of a live
animation.
Flutter's home_widget package handles most of the bridge. The native
side is a small Kotlin file in android/app/src/main/kotlin/.../widget/
that pulls the latest stats out of shared preferences and rebuilds the view. Tap
handlers go through a PendingIntent that the app's headless background
runner picks up to perform the log.
Refresh cadence matters. Widgets are not real-time canvases — Android batches updates aggressively to save power, and you should respect that. Drimin updates the widget on three triggers: any log made anywhere, the start of a new day, and device boot. That's enough; trying to update every minute is both pointless and wasteful.
Why this beats another notification
A reminder notification competes with every other notification for your attention. It is, by design, an interruption. Even if it is gentle, the cognitive cost of deciding "am I going to act on this now?" is non-trivial. Multiply by ten reminders a day and you have a meaningful amount of mental friction in a tool that was supposed to reduce friction.
A widget reverses the polarity. It says nothing unless you look. When you do look, the orb tells you everything you needed to know — "I'm at 1.6 of 2.5, last sip was a while ago" — in one half-second glance, with no notification to dismiss, no app to open, no context to swap. If the right action is "drink another glass," the tap target is right there. If the right action is "I'm fine, carry on," there's nothing to do.
For more on why Drimin treats notifications as a last resort, see Notifications that respect attention. For the broader design philosophy, see Designing for stillness.
The pixel-budget question
Widgets cost real estate. Real estate on a phone's home screen is the scarcest UI space we have — most users have a few favoured apps in their dock and not much else. Earning a widget slot means earning it.
We think Drimin earns it on three grounds. First, the information is one you actually want to glance at (am I on track today, yes/no). Second, the action is one you take many times a day, so the one-tap target saves real friction. Third, the widget is visually quiet — the orb fits in with most wallpapers because the gradient is desaturated enough not to fight for attention. We tested half a dozen widget designs internally; the one that felt least like an "app on the home screen" won.
What we're still working on
The current widget is a snapshot. A future version will let the orb's wave actually breathe on the home screen, using the much more capable Jetpack Glance framework on Android 12+. The principle, though, won't change: it stays small, it stays quiet, it stays a glance.