← All courses

Project Structure (expect / actual)

🗓 May 31, 2026 ⏱ 1 min read

Source sets

A KMP module has shared and platform-specific folders:

  • commonMain — shared Kotlin code for all platforms.
  • androidMain — Android-only code.
  • iosMain — iOS-only code.

expect / actual

When you need something platform-specific (like the device name), declare it in common with expect and implement it per platform with actual.

// commonMain
expect fun platformName(): String

// androidMain
actual fun platformName(): String = "Android"

// iosMain
actual fun platformName(): String = "iOS"
Tip: Keep as much as possible in commonMain; only drop into expect/actual when a real platform API is required.