Update, Maintenance & Changelog
The ops surfaces — a force/soft update gate, a full-screen maintenance takeover, and
an in-app changelog / "What's New" sheet. All driven by RemoteAppConfig, so you trigger
them from your backend without shipping an app update.
/docs/screens/update-light.png/docs/screens/update-dark.pngcore/designsystem/ops/KitUpdateComponents.kt · feature/changelog/ChangelogScreen.kt
The components
KitUpdateSheet(required = true, onUpdate = ::openPlayStore) // force update — non-dismissible
KitUpdateSheet(required = false, onUpdate = ::openPlayStore) // soft update — dismissible
KitWhatsNewSheet(changelog = entries, onDismiss = ::markSeen) // version-bump popup
KitMaintenanceScreen(message = msg) // full-screen takeover
UpdateGate (wrapping the nav host) decides what to show, in order: maintenance → force
update → soft update → auto "What's New".
How it's driven
UpdateManager + ChangelogManager read conventional keys from RemoteAppConfig:
min_supported_version → below this = forced update
latest_version → above current = soft update offer
maintenance_mode → true = maintenance screen
maintenance_message → shown on the maintenance screen
app_changelog → JSON parsed into the What's New sheet
Pick where those live with:
/kit-setup-updates # LOCAL (offline) · Supabase · Firebase
The kit ships LOCAL by default, so the gate compiles and runs offline. Point it at
Supabase or Firebase and flipping maintenance_mode or bumping min_supported_version in
your dashboard hits every installed app on next launch — the kill switch.
In-app changelog
ChangelogScreen (Settings → About → What's new) lists all releases. On a version bump, the
KitWhatsNewSheet shows automatically (suppressed on a fresh install) via a DataStore
lastSeenVersionCode.
Features
- Force update (blocking) + soft update (dismissible)
- Maintenance mode with a custom message
- Auto "What's New" on version bump
- 100% backend-driven — no app update needed to trigger any of it
Configure with
/kit-setup-updates· deep dive: Features → Ops