Store Reviews & Updates
SkillDev toolsStore reviews and in-app updates on the KMP Starter Template — StarterStoreManager (askForReview, checkAppUpdate), rememberStarterStoreManager, and AppUpdateProvider.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Store Reviews & Updates skill
What this skill tells your AI
The instructions your AI receives, as published by devatrii/kmp-starter-template in .agents/skills/kmp-starter/starter-features/store-reviews-updates/SKILL.md and read by ahel’s review.
Request store reviews and check for app updates via StarterStoreManager. Lives in the UI utils store package (starter/ui/utils/.../store/), exposed as a Compose expect/actual.
Where things live
| Piece | Path |
|---|---|
StarterStoreManager (expect class) | starter/ui/utils/src/commonMain/.../store/StarterStoreManager.kt |
rememberStarterStoreManager() | same file |
AppUpdateProvider / rememberUpdateLauncher | starter/ui/utils/src/commonMain/.../store/InAppUpdate.kt |
| Platform impls | StarterStoreManager.android.kt / .ios.kt |
Request a review
Prompt after key actions (e.g. onboarding completion):
@Composable
fun Onboarding(viewModel: OnboardingViewModel) {
val storeManager = rememberStarterStoreManager()
LaunchedEffect(state.isCompleted) {
if (state.isCompleted) storeManager.askForReview()
}
}
- Android:
askForReview()may throw if the review dialog is unavailable. - iOS: uses the native review API.
Check for updates (Android only)
@Composable
fun ManualUpdateCheck(force: Boolean) {
val storeManager = rememberStarterStoreManager()
val updateLauncher = rememberUpdateLauncher()
LaunchedEffect(force) {
storeManager.checkAppUpdate(
launcher = updateLauncher,
force = force,
onUpdateUnAvailable = { /* no update */ },
onUpdateAvailable = { /* update available */ },
onUpdated = { /* updated */ },
onUpdateFailure = { /* failed */ },
)
}
}
checkAppUpdate() is Android-only (iOS has no in-app update API). Prefer AppUpdateProvider over manual checks.
Automatic updates — AppUpdateProvider
Wrap the app so updates are checked automatically:
@Composable
fun MyApp() {
AppUpdateProvider(force = true) {
StarterNavigation(AppScreens.Splash)
}
}
AppUpdateProvider calls checkAppUpdate() internally on Android and skips iOS. force = true blocks usage until the minimum version is installed.
Rules
- Use
askForReview()after onboarding or key actions (not randomly). - Avoid manual
checkAppUpdate(); useAppUpdateProvider. - No new update/review subsystem.
Reference
- Docs:
https://starter.atherio.dev/fundamentals/09-store-reviews-and-updates/ - Source:
starter/ui/utils/src/commonMain/.../store/*
Signals
- GitHub stars
- 162
- Forks
- 28
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
kmp-starter-feature-store-reviews-updates- Source
- github.com/devatrii/kmp-starter-template