Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin Multiplatform (in the KotlinConf 2026 Ke...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Kotlin Multiplatform (in the KotlinConf 2026 Keynote)

Avatar for Márton Braun

Márton Braun

May 21, 2026

More Decks by Márton Braun

Other Decks in Programming

Transcript

  1. IDE Plugin Android Studio Intell" IDEA AGP 9.0 support Compose

    editing Swift features Run configurations
  2. iOS

  3. Swift Export Data classes Nested classes Sealed classes Interfaces Top-level

    functions Companion objects Exceptions Enums Collection types Primitive types Type aliases Lambdas with receivers Extension functions Function overloads Multiple modules Packages
  4. Swift Export Data classes Nested classes Sealed classes Interfaces Top-level

    functions Companion objects Exceptions Enums Collection types Primitive types Type aliases Lambdas with receivers Extension functions Function overloads Multiple modules Packages Value classes varargs Inline functions Suspending functions Flows Functional types Context parameters Exhaustive enums New
  5. Swift Export suspend fun loadUsers(): List<User> try await loadUsers() val

    users: Flow<User> for try await user in users.asAsyncSequence() { print(user.name) } Suspending functions Flows
  6. SPM import Alpha kotlin { swiftPMDependencies { swiftPackage(url("https:!"github.com/googlemaps/ios-maps-sdk.git")) } }

    import swiftPMImport.demo.google.maps.GMSCameraPosition import swiftPMImport.demo.google.maps.GMSMapView val camera = GMSCameraPosition.cameraWithLatitude(48.13677, 11.69221, 6.0f) mapView = GMSMapView.mapWithFrame(frame, camera) Map.ios.kt build.gradle.kts
  7. Kotlin/Native performance 25% less build time 58%less build RAM usage

    Google Docs, linkRelease task from Kotlin 2.2 to 2.4
  8. The latest improvements and APIs Window inset rulers keepScreenOn Modifier

    Retain API Improved shared element transitions Veiled transitions v2 testing APIs Style API Flexbox layout Grid layout mediaQuery API New SlotTable implementation Navigation 3 Unified @Preview annotation Shadow modifiers Visibility change modifier Material 3 Expressive 2D Scroll APIs
  9. The latest improvements and APIs Window inset rulers keepScreenOn Modifier

    Retain API Improved shared element transitions Veiled transitions v2 testing APIs Style API Flexbox layout Grid layout mediaQuery API New SlotTable implementation Navigation 3 Unified @Preview annotation Shadow modifiers Visibility change modifier Material 3 Expressive 2D Scroll APIs Navigation 3
  10. The latest improvements and APIs Window inset rulers keepScreenOn Modifier

    Retain API Improved shared element transitions Veiled transitions v2 testing APIs Style API Flexbox layout Grid layout mediaQuery API New SlotTable implementation Navigation 3 Unified @Preview annotation Shadow modifiers Visibility change modifier Material 3 Expressive 2D Scroll APIs Navigation 3 Navigation 3 Stable
  11. Compose Multiplatform for iOS UIKitView( factory = { UIButton() },

    properties = UIKitInteropProperties( placedAsOverlay = true ) )
  12. Compose Multiplatform for Web Beta HtmlElementView( factory = { document.createElement("iframe").apply

    { setAttribute("src", embedUrl) style.cssText = "width:100%;height:100%" } }, )
  13. Compose Multiplatform for Web Beta HtmlElementView( factory = { document.createElement("iframe").apply

    { setAttribute("src", embedUrl) style.cssText = "width:100%;height:100%" } }, )
  14. Kotlin/JS Suspend functions Type variance support Unified companion syntax Value

    classes Implementable interfaces Statics LongArray as BigInt64Array Default exports Tuples Nested classes New features
  15. Kotlin/JS import { App.tsx export declare function fetchUser(): Promise<User>; module.d.ts

    @JsExport suspend fun fetchUser(): User User.kt fe } from 'shared'; f (shared) Promise<User> fetchUser() To uncover the secrets of Kodee, you just have t… Next Tip Suspend functions
  16. import { fetchUser } from 'shared'; export declare function fetchUser():

    Promise<User>; @JsExport suspend fun fetchUser(): User Kotlin/JS Suspend functions App.tsx module.d.ts User.kt
  17. import { fetchUser } from 'shared'; export declare function fetchUser():

    Promise<User>; @JsExport suspend fun fetchUser(): User let user = await fetchUser(); console.log(user.name); Kotlin/JS Suspend functions App.tsx module.d.ts User.kt
  18. import { getUser } from 'shared'; let user = await

    fetchUser(); console.log(user.name); App.tsx export declare function fetchUser(): Promise<User>; module.d.ts @JsExport suspend fun fetchUser(): User User.kt Kotlin/JS Suspend functions