Compose
Multiplatform

Develop stunning shared UIs for Android, iOS, desktop, and web.

Get started
Shared UIs of the iOS, Android, desktop, and web apps

Declarative framework for sharing UIs across multiple platforms. Based on Kotlin and Jetpack Compose.

Developed by JetBrains and open-source contributors.

Supported platforms

  • [object Object] icon
    Alpha
  • [object Object] icon

    via Jetpack Compose

  • [object Object] icon

    Windows, MacOS, Linux

  • [object Object] icon
    Experimental
  • Accelerated UI development

    Build your user interface once, and use it on all platforms – Android, iOS, web, and desktop. Save yourself the effort of keeping different UIs in sync, and get your app into the hands of your users more quickly.

    Android UI skills for other platforms

    Use the same familiar APIs from Jetpack Compose to build user interfaces for all platforms.

    An excellent ecosystem

    Use a wide variety of production-ready Kotlin libraries and frameworks that make it easy to be productive from the get-go and get support from a helpful and welcoming developer community!

    Easy integration with every platform

    Building on top of Kotlin Multiplatform means not having to compromise on using platform-specific features and APIs. Easily access the full capabilities of every platform, just like native applications.

    Component-level reuse

    Build your UIs with customizable widgets that you can use on all of your target platforms. Use premade themes to get started quickly, or create your own visual style down to the very pixel.

    The same code works on all platforms

    Button(

    onClick = {

    logger.info("Pressed!")

    }

    ) {

    Text("Hello $platform")

    }

    Complex components can be created once and shared across platforms

    @Serializable

    data class Friend(val name: String)


    @Composable

    fun FriendCard(name: String) {

    var myFriend by remember {

    mutableStateOf<Friend?>(null)

    }

    LaunchedEffect(name) {

    val friend = ktorClient

    .get("$host/$name.json")

    .body<Friend>()

    myFriend = friend

    }...

    After moving our desktop application to 100% Kotlin, we noticed improved productivity of our team.

    Using a single language means that every developer can make a feature from start to finish without switching contexts. It is faster, less error prone, and improves knowledge sharing among developers. The entire application also uses the same representation for data in memory, skipping the need for extra (de)serialization steps.

    Victor Kropp

    Toolbox team lead, JetBrains

    Try Compose Multiplatform

    Develop stunning shared UIs for Android, iOS, desktop, and web.

    Get started