You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

35 KiB

1.4.0 (April 2023)

Common

Features

Fixes

iOS

iOS support is in Alpha now

Desktop

Features

Fixes

Web

Tools

Features

Fixes

API Changes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:


1.3.1 (March 2023)

Common

  • Added support for Kotlin 1.8.10

Fixes

Desktop

Fixes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:


1.3.0 (January 2023)

Common

Fixes

Desktop

Features

Fixes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:

1.2.2 (December 2022)

Desktop

Features

Fixes

Web

Fixes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:

1.2.1 (November 2022)

Common

Fixes

Desktop

Fixes

Web

Fixes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:

1.2.0 (October 2022)

Common

Features

Desktop

Features

Fixes

API changes

Web

Features

Fixes

API changes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:

1.1.1 (Mar 2022)

Desktop

Fixes

API changes

If you use Dispatchers.Swing or Dispatchers.Main in your code, add this dependency into build.gradle.kts:

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:$coroutinesVersion")
}

Also, usage of Dispatchers.Swing or Dispatchers.Main inside internals of Compose is implementation details, and can be changed in the future. If you need to avoid race conditions with Compose UI, you can obtain appropriate coroutine scope via rememberCoroutineScope:

import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.window.application

@OptIn(ExperimentalComposeUiApi::class, androidx.compose.foundation.ExperimentalFoundationApi::class)
fun main() = application {
    val scope = rememberCoroutineScope()
    val someApplicationObject = remember(scope) { SomeApplicationObject(scope) }
    
    DisposableEffect(Unit) {
        SomeGlobalObject.init(scope)
        onDispose {  }
    }
}

1.1.0 (Feb 2022)

Desktop

Features

Fixes

API changes

import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.window.singleWindowApplication

private var time by mutableStateOf(System.nanoTime())
private var frame by mutableStateOf(0)

fun main() = singleWindowApplication {
    if (frame == 0) {
        frame++
    } else if (frame == 1) {
        val duration = ((System.nanoTime() - time) / 1E6).toLong()
        println("First frame millis: $duration")
    }
}

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:

1.0.1 (Dec 2021)

This is basically 1.0.0 that works with Kotlin 1.6.10

1.0.0 (Dec 2021)

Desktop

Features

API changes

Web

API changes

Dependencies

This version of Compose Multiplatform is based on the next Jetpack Compose libraries:

1.0.0-beta (Oct 2021)

Common

  • no Android artifacts are published anymore. Google-published artifacts are referenced instead. This approach eliminates compatibility issues.

Desktop

Features

  • Accessibility support on MacOS
  • Smart rendering fallback logic (no crashes on bad hardware/drivers anymore)
  • Performance improvement of software rendering (up to 100%)
  • Transparent window support
  • clickable and toggleable components have a hoverable indication

API changes

  • DesktopMaterialTheme is deprecated, use MaterialTheme instead
  • WindowSize is deprecated, use DpSize instead
  • Modifier.pointerMoveFilter marked as Experimental, stable alternatives are Modifier.hoverable or Modifier.pointerInput
  • Modifier.mouseScrollFilter marked as Experimental, this API will likely change in the future

API breaking changes

  • Old Window API (AppWindow, AppManager) was removed
  • Modifier.pointerIcon is replaced with Modifier.pointerHoverIcon
  • Tray can be used only inside ApplicationScope now
  • Tray(hint=) replaced with Tray(tooltip=)

Web

Features

  • SVG support

API changes

  • Controlled Inputs were added
  • New API for testing - test-utils was added

1.0.0-alpha (Aug 2021)

Common

  • Desktop, Web, and Android artifacts publish at the same time with the same version

Desktop

Features

API changes

  • new Window API is no longer experimental
  • old Window API is deprecated
  • classes from android.compose.desktop.* moved to androidx.compose.ui.awt.* (ComposeWindow, ComposePanel, etc)
  • svgResource/vectorXmlResource/imageResource replaced by painterResource

API breaking changes

  • Window level keyboard API for the old Window API removed
  • Window(icon: BufferedImage) replaced by Window(icon: Painter)
  • ContextMenu renamed to CursorDropdownMenu

Web

API changes

API breaking changes

M4 (Jun 2021)

M3 (Feb 2021)

M2 (Dec 2020)

M1 (Nov 2020)

  • Initial release