kmp-desktop

Creates Kotlin Multiplatform ViewModels with explicit SavedStateHandle for Desktop/JVM using Koin and lifecycle provisioning.

1|Updated Nov 26, 2025
One-click install
npx skills add https://github.com/niltsiar/kotlin_multiplatform_pokedex --skill kmp-desktop
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: kmp-desktop
Source: https://github.com/niltsiar/kotlin_multiplatform_pokedex/tree/main/.agents/kmp-desktop
Command: npx skills add https://github.com/niltsiar/kotlin_multiplatform_pokedex --skill kmp-desktop

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Desktop/JVM Kotlin Multiplatform apps often struggle with ViewModel lifecycles, missing CreationExtras on Desktop, and DI wiring. This skill provides patterns to reliably implement ViewModels with explicit SavedStateHandle handling and desktop lifecycle provisioning.

Core Features & Use Cases

  • Explicit SavedStateHandle creation for Desktop/JVM when using Koin's koinViewModel and parametersOf.
  • Desktop lifecycle provisioning via ProvideDesktopLifecycle to enable ViewModel support across the desktop host.
  • Koin module wiring that takes SavedStateHandle as a parameter and injects it into the ViewModel, enabling state restoration and platform consistency.
  • Cross-platform guidance to align Desktop patterns with Android/iOS code for cohesive architecture.

Quick Start

Configure your Desktop module to manually create a SavedStateHandle and wire your ViewModel with koinViewModel using parametersOf.

Frequently Asked Questions about kmp-desktop

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I pass SavedStateHandle to a ViewModel in Kotlin Multiplatform Desktop?

To pass SavedStateHandle to a Desktop ViewModel, manually create the handle and inject it using Koin's koinViewModel with parametersOf. This bypasses missing CreationExtras on Desktop.

Why does my KMP ViewModel fail to restore state on Desktop?

Your KMP ViewModel fails to restore state on Desktop because CreationExtras are missing. You must explicitly provide a SavedStateHandle via Koin parametersOf to enable reliable state restoration.

Can I use Koin to wire ViewModels across jvmMain and Android shared code?

Yes, you can use Koin to wire ViewModels across jvmMain and Android by defining modules that accept SavedStateHandle as a parameter. This aligns Desktop patterns with Android/iOS code for cohesive architecture.

What's the best way to provide lifecycle support for Kotlin Multiplatform Desktop ViewModels?

The best way to provide lifecycle support for KMP Desktop ViewModels is using ProvideDesktopLifecycle. This enables ViewModel support across the desktop host, ensuring reliable lifecycle management and state restoration.

When do I need to manually configure SavedStateHandle for Desktop/JVM apps?

You need to manually configure SavedStateHandle for Desktop/JVM apps when using Koin's koinViewModel and parametersOf. Manual creation is required because Desktop platforms lack the automatic CreationExtras found in Android.