Skip to content

Merge androidx.compose 1.13.0-alpha01 - #3351

Merged
Igor Demin (igordmn) merged 21 commits into
jb-mainfrom
integration-copy/compose/605f107436e/to-jb-main
Aug 31, 2026
Merged

Igor Demin (igordmn) merged 21 commits into
jb-mainfrom
integration-copy/compose/605f107436e/to-jb-main

Conversation

@igordmn

@igordmn Igor Demin (igordmn) commented Aug 28, 2026 •

Copy link
Copy Markdown

Fixes https://youtrack.jetbrains.com/issue/CMP-10525/Merge-Jetpack-Compose-1.13.0-alpha01

Version increasing: https://jetbrains.team/p/ui/reviews/197

Integration tests adoption: JetBrains/compose-multiplatform#5698

Android minSdk change

Jetpack Compose 1.13.0-alpha01 raised it to 24, we use the same now

Caught by the teamcity check:

Caused by: java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 23 cannot be smaller than version 24 declared in library [androidx.compose.material:material-android:1.13.0-alpha01] /mnt/agent/work/97950249c5c88349/gradle-plugins/compose/build/tmp/test-Gradle[9.3.1]-Agp[9.1.1]/work/.gradle-test-kit/caches/9.3.1/transforms/46ee92e1e37d9796ccf2aeaa8f663be2/transformed/material/AndroidManifest.xml as the library might be using APIs not available in 23 Suggestion: use a compatible library with a minSdk of at most 23, or increase this project's minSdk version to at least 24, or use tools:overrideLibrary="androidx.compose.material" to force usage (may lead to runtime failures)

Release Notes

Migration Notes - Android

  • The minimum supported SDK is raised to 24

@igordmn

Copy link
Copy Markdown
Author

There are 3 temporary commits in the integration branch which I have to revert instead of dropping:
image

(interactive rebase doesn't work well with merge commits after them)

@igordmn Igor Demin (igordmn) changed the title Jetpack Compose 1.13.0-alpha01 androidx.compose 1.13.0-alpha01 Aug 28, 2026
@igordmn Igor Demin (igordmn) changed the title androidx.compose 1.13.0-alpha01 Merge androidx.compose 1.13.0-alpha01 Aug 28, 2026
@igordmn
Igor Demin (igordmn) force-pushed the integration-copy/compose/605f107436e/to-jb-main branch from 9a42ade to 286ae90 Compare August 28, 2026 15:25
@igordmn
Igor Demin (igordmn) marked this pull request as ready for review August 28, 2026 15:49
Comment thread compose/foundation/foundation-layout/build.gradle
@@ -16,7 +16,7 @@

package androidx.compose.runtime.platform

internal expect class SynchronizedObject
@PublishedApi internal expect class SynchronizedObject

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's make sure that's an expected change and does not collied with the plan to move to stdlib in the future

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://android-review.googlesource.com/c/platform/frameworks/support/+/4091011

Looks like it was already published because it needs inline access.

When moving to stdlib, we should keep it if we want compatibility with code that use it.

actual val failurePolicy: TestFailurePolicy,
) {
@Deprecated("Kept for binary compatibility", level = DeprecationLevel.HIDDEN)
actual constructor(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we move such expect to androidMain and remove it from our platforms?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The author asked me should it be in the common, and I answered - yes, because it is a common feature - it has legit common semantics, just needs platform implementation.

Do you agree, or there is something flawed?

Generally, I see 2 approaches about such kind of features:

  • have it in androidMain only, so it doesn't pollute common API.
  • support it as common, but emphasize to user that it is not supported in CMP platforms yet - via API (isSupported, returning null), or via exception/warning.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean only DeprecationLevel.HIDDEN declarations, they shouldn't be in commonMain. The feature itself is fine

@igordmn Igor Demin (igordmn) Aug 31, 2026 •

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why shouldn't they be in commonMain? They provide compatibility for all platforms.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DeprecationLevel.HIDDEN is supposed to be in binary without accessing from code. Having them duplicated in commonMain buys nothing.
Adding it to a platform that previously didn't ship it - does not make sense. For now it's just to make the compiler happy without any compatibility gain

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having them duplicated in commonMain buys nothing.

It just a consequence of the actual keyword, I would just not use it if possible in the first place, but still write it in commonMain because if it is for backward compatibility. There is a chance, that CMP needs it too.

Adding it to a platform that previously didn't ship it

I don't want to spend time to figure out if we shipped it or not. If Android added it in their code -> they shipped it -> we probably too.

Adding it to a platform that previously didn't ship it - does not make sense.

Maybe, but it also doesn't make things worse. So, I don't see a reason to spend time on this.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If Android added it in their code -> they shipped it -> we probably too.

We might not shipped it because it was Android-only before that, but as a general approach I don't want to review commonMain for such things, because they in fact don't affect other platforms.

…ompose/605f107436e/to-jb-main

# Conflicts:
#	compose/animation/animation-core/api/current.txt
#	compose/animation/animation-core/api/restricted_current.txt
#	compose/animation/animation-core/bcv/native/current.ignore
#	compose/animation/animation-core/bcv/native/current.txt
#	compose/animation/animation/api/current.txt
#	compose/animation/animation/api/restricted_current.txt
#	compose/animation/animation/bcv/native/current.txt
#	compose/foundation/foundation-layout/api/current.txt
#	compose/foundation/foundation-layout/api/restricted_current.txt
#	compose/foundation/foundation-layout/bcv/native/current.txt
#	compose/foundation/foundation-layout/src/commonStubsMain/kotlin/androidx/compose/foundation/layout/WindowInsets.commonStubs.kt
#	compose/foundation/foundation-layout/src/commonStubsMain/kotlin/androidx/compose/foundation/layout/WindowInsetsPadding.commonStubs.kt
#	compose/foundation/foundation/api/current.txt
#	compose/foundation/foundation/api/restricted_current.txt
#	compose/foundation/foundation/bcv/native/current.ignore
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/content/MediaType.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/content/TransferableContent.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/gestures/BringIntoViewSpec.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/lazy/layout/Lazy.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/lazy/layout/PrefetchScheduler.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/text/BasicTextField.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/text/TextFieldKeyInput.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/text/input/internal/TextInputSession.commonStubs.kt
#	compose/foundation/foundation/src/commonStubsMain/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManager.commonStubs.kt
#	compose/material/material/src/commonStubsMain/kotlin/androidx/compose/material/AlertDialog.jvmStubs.kt
#	compose/material/material/src/commonStubsMain/kotlin/androidx/compose/material/Menu.commonStubs.kt
#	compose/material/material/src/linuxx64StubsMain/kotlin/androidx/compose/material/InternalMutatorMutex.linuxx64Stubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/BlendMode.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/Canvas.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/Paint.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/Path.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/PathIterator.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/PathMeasure.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/RenderEffect.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/Shader.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/TileMode.commonStubs.kt
#	compose/ui/ui-graphics/src/commonStubsMain/kotlin/androidx/compose/ui/graphics/layer/GraphicsLayer.commonStubs.kt
#	compose/ui/ui-test-junit4/src/jvmStubsMain/kotlin/androidx/compose/ui/test/junit4/DesktopComposeTestRule.jvmStubs.kt
#	compose/ui/ui-test-junit4/src/jvmStubsMain/kotlin/androidx/compose/ui/test/junit4/v2/DesktopComposeTestRule.jvmStubs.kt
#	compose/ui/ui-test/api/current.txt
#	compose/ui/ui-test/api/restricted_current.txt
#	compose/ui/ui-test/bcv/native/current.ignore
#	compose/ui/ui-test/bcv/native/current.txt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/Actions.commonStubs.kt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/ComposeUiTest.commonStubs.kt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.commonStubs.kt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/Mouse.commonStubs.kt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/Trackpad.commonStubs.kt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/platform/Synchronization.commonStubs.kt
#	compose/ui/ui-test/src/commonStubsMain/kotlin/androidx/compose/ui/test/v2/ComposeUiTest.commonStubs.kt
#	compose/ui/ui-text/bcv/native/current.ignore
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/Paragraph.commonStubs.kt
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/ParagraphIntrinsics.commonStubs.kt
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/TextStyle.commonStubs.kt
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/input/PlatformImeOptions.commonStubs.kt
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/platform/Synchronization.commonStubs.kt
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/style/LineBreak.commonStubs.kt
#	compose/ui/ui-text/src/commonStubsMain/kotlin/androidx/compose/ui/text/style/TextMotion.commonStubs.kt
#	compose/ui/ui-text/src/linuxx64StubsMain/kotlin/androidx/compose/ui/text/intl/Locale.linuxx64Stubs.kt
#	compose/ui/ui-unit/src/commonStubsMain/kotlin/androidx/compose/ui/unit/FontScaling.commonStubs.kt
#	compose/ui/ui-util/src/commonStubsMain/kotlin/androidx/compose/ui/util/Trace.commonStubs.kt
#	compose/ui/ui-util/src/linuxx64StubsMain/kotlin/androidx/compose/ui/util/InlineClassHelper.linuxx64Stubs.kt
#	compose/ui/ui/api/current.ignore
#	compose/ui/ui/api/current.txt
#	compose/ui/ui/api/restricted_current.ignore
#	compose/ui/ui/api/restricted_current.txt
#	compose/ui/ui/bcv/native/current.ignore
#	compose/ui/ui/bcv/native/current.txt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/autofill/ContentDataType.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/autofill/ContentType.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/autofill/FillableData.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/draganddrop/DragAndDrop.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/input/key/Key.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/input/key/KeyEvent.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/input/pointer/InternalPointerEvent.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/input/pointer/PointerEvent.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/input/rotary/RotaryScrollEvent.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/platform/CompositionLocals.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/platform/PlatformClipboardManager.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/platform/PlatformTextInputMethodRequest.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/platform/PlatformTextInputSession.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/platform/Synchronization.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/viewinterop/InteropView.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/window/Dialog.commonStubs.kt
#	compose/ui/ui/src/commonStubsMain/kotlin/androidx/compose/ui/window/Popup.commonStubs.kt
#	compose/ui/ui/src/linuxx64StubsMain/kotlin/androidx/compose/ui/input/pointer/SuspendingPointerInputFilter.linuxx64Stubs.kt
Igor Demin (igordmn) and others added 4 commits August 31, 2026 18:53
We already reset them in jb-main, but this branch brought the old wrongly resolved conflicts

```
git checkout --no-overlay androidx/compose-ui/1.13.0-alpha01 -- \
  'compose/**/api/**' \
  'compose/**/bcv/**' \
  'compose/**/**StubsMain/**' \
  ':(exclude)**/api/desktop/**' \
  ':(exclude)**/api/android/**' \
  ':(exclude)**/**.klib.api'
```
We already reset them in jb-main, but this branch brought the old wrongly resolved conflicts

```
  git checkout --no-overlay androidx/compose-material3/1.5.0-alpha26 -- \
  'compose/material3/**/api/**' \
  'compose/material3/**/bcv/**' \
  'compose/material3/**/**StubsMain/**' \
  ':(exclude)compose/material3/adaptive' \
  ':(exclude)compose/material3/material3-xr' \
  ':(exclude)compose/material3/material3-xr-adaptive' \
  ':(exclude)**/api/desktop/**' \
  ':(exclude)**/api/android/**' \
  ':(exclude)**/**.klib.api'
```
We already reset them in jb-main, but this branch brought the old wrongly resolved conflicts

```
git checkout --no-overlay androidx/compose-material3-adaptive/1.3.0 -- \
  'compose/material3/adaptive/**/api/**' \
  'compose/material3/adaptive/**/bcv/**' \
  'compose/material3/adaptive/**/**StubsMain/**' \
  ':(exclude)**/api/desktop/**' \
  ':(exclude)**/api/android/**' \
  ':(exclude)**/**.klib.api'
```
@igordmn

Igor Demin (igordmn) commented Aug 31, 2026 •

Copy link
Copy Markdown
Author

Ivan Matkov (@MatkovIvan), it looks like I have messed with stubs. Restored them here:
image

and in the navigation PRs.

The reason is that these PRs brought pre-reset stub versions that were wrongly resolved conflicts.

@igordmn
Igor Demin (igordmn) merged commit 9a25717 into jb-main Aug 31, 2026
38 of 39 checks passed
@igordmn
Igor Demin (igordmn) deleted the integration-copy/compose/605f107436e/to-jb-main branch August 31, 2026 18:49
Igor Demin (igordmn) added a commit to JetBrains/compose-multiplatform that referenced this pull request Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants