You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
๐งฉ Feature Request: Home Screen Widget โ "Deal of the Day"
Summary
Add a home screen App Widget built with Jetpack Glance that surfaces today's top free game or best deal directly on the Android launcher โ no app open required. This dramatically increases daily engagement and puts GameVault's core value on the user's home screen 24/7.
User Story
As a gamer, I want a home screen widget that shows me today's best free game or top deal at a glance, so I never miss a time-sensitive offer even when I'm not actively using the app.
Motivation
GameVault's core value is time-sensitive discovery โ free games and giveaways expire. A widget solves the fundamental problem that users must remember to open the app. Competing deal apps (IsThereAnyDeal, Epic Games) invest heavily in widgets precisely because they are the highest-retention surface on Android.
๐ Increases daily active opens (widget tap โ app deep-link)
โฐ Surfaces urgency passively ("Expires in 4 hours" visible on home screen)
๐ฏ Differentiates GameVault in Play Store listings (widget support shown in screenshots)
updatePeriodMillis="0" โ updates are driven by WorkManager, not the system timer (avoids battery drain).
5. Data Flow
Widget data is sourced from Room (already integrated) โ the widget never makes direct network calls.
WorkManager (periodic, every 6h)
โโโถ Fetches latest free game / best deal from API
โโโถ Writes to Room cache
โโโถ Calls GlanceAppWidgetManager.update() to refresh widget
Widget displays top free game with thumbnail, title, and platform
"Claim Now" / "View Deal" tap opens the correct game detail screen via deep-link
Widget data refreshes every 6 hours via WorkManager (not updatePeriodMillis)
Widget shows a loading skeleton on first install before data is available
Widget shows a graceful fallback if Room cache is empty ("Open GameVault to load deals")
Widget preview image added for the widget picker (@xml/game_vault_widget_info)
All three variants (Small, Medium-Deal, Medium-Giveaway) implemented
Countdown timer on Variant C updates every minute
Hilt injection works correctly in WidgetUpdateWorker
WidgetDataRepository unit tested with in-memory Room
Play Store screenshots updated to show the widget
Effort Estimate
High โ 2โ4 weeks
Glance has its own Composable scope (different from regular Compose), WorkManager + Hilt wiring requires care, and widget UI must be tested across multiple launcher apps and Android versions.
Impact: High
Home screen widgets are the highest-engagement surface on Android. A well-designed widget is a daily reminder of the app's value without requiring any user action.
๐งฉ Feature Request: Home Screen Widget โ "Deal of the Day"
Summary
Add a home screen App Widget built with Jetpack Glance that surfaces today's top free game or best deal directly on the Android launcher โ no app open required. This dramatically increases daily engagement and puts GameVault's core value on the user's home screen 24/7.
User Story
Motivation
GameVault's core value is time-sensitive discovery โ free games and giveaways expire. A widget solves the fundamental problem that users must remember to open the app. Competing deal apps (IsThereAnyDeal, Epic Games) invest heavily in widgets precisely because they are the highest-retention surface on Android.
Widget Variants
Variant A โ Small (2ร2): Free Game Spotlight
Shows the current top free game with thumbnail, title, and a "Claim" button.
Variant B โ Medium (4ร2): Deal of the Day
Shows the best deal with original price, sale price, savings badge, and store name.
Variant C โ Medium (4ร2): Expiring Giveaway
Shows a giveaway with a live countdown timer emphasizing urgency.
Technical Design
1. Dependencies
2. Widget Receiver & Provider
3. AndroidManifest.xml Registration
4. Widget Info XML
updatePeriodMillis="0"โ updates are driven by WorkManager, not the system timer (avoids battery drain).5. Data Flow
Widget data is sourced from Room (already integrated) โ the widget never makes direct network calls.
6. Deep-Link on Widget Tap
Tapping the widget opens the app directly to the game detail screen:
Handle the deep-link in
MainActivity:Widget Data Repository
A lightweight
WidgetDataRepositoryreads from Room to avoid duplicating network logic:WorkManager Scheduling
New Files to Create
Files to Modify
AndroidManifest.xml<receiver>forGameVaultWidgetReceiverapp/build.gradle.ktsdi/AppModule.kt(or newWidgetModule.kt)WidgetDataRepository, inject into Worker viaHiltWorkerFactoryMyApp.ktWidgetUpdateWorkeron startupui/MainActivity.ktIntentextras from widget tapgradle/libs.versions.tomlglance,glance-material3,work-runtime-ktxversionsHilt + WorkManager Integration
Hilt injection in Workers requires
HiltWorkerFactory:Add to
AndroidManifest.xml:Definition of Done
GameVaultWidgetrenders correctly on Android 12+ launcher (Pixel & Samsung tested)WorkManager(notupdatePeriodMillis)@xml/game_vault_widget_info)WidgetUpdateWorkerWidgetDataRepositoryunit tested with in-memory RoomEffort Estimate
High โ 2โ4 weeks
Glance has its own Composable scope (different from regular Compose), WorkManager + Hilt wiring requires care, and widget UI must be tested across multiple launcher apps and Android versions.
Impact: High
Home screen widgets are the highest-engagement surface on Android. A well-designed widget is a daily reminder of the app's value without requiring any user action.
Related Issues
WorkManagerinfrastructure)Labels:
enhancementยทwidgetยทglanceยทworkmanagerยทhigh-impact