You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Run ./gradlew app:jvmRun -DmainClass=MainKt or ./gradlew app:jsBrowserDevelopmentRun and enter text into the
textfield. Observe that the first CustomRow does not recompose on button click, but the second does.
If contents of lib are moved to app, the issue goes away
JVM behavior has occurred since at least Compose 1.5.12/Kotlin 1.9.22
JS behavior began with Compose 1.6.0/Kotlin 1.9.22
Still present on both targets with Compose 1.6.11 & Kotlin 2.0.0
The text was updated successfully, but these errors were encountered:
Just to emphasize how problematic this bug potentially is, I added the following code to my local project (a web project built using Kobweb):
var msg by remember { mutableStateOf("") }
TextInput(msg, onTextChanged = { msg = it }, ...)
// Sibling element which should NOT be affected by text input changesRow(horizontalArrangement =Arrangement.spacedBy(10.px)) {
var recomposeCount by remember { mutableStateOf(0) }
recomposeCount++Text("Recompose count: $recomposeCount (should stay at 1)")
}
I expected one extra recomposition per character I typed into my text box, which would already have been a little bad, but instead I got a case of infinite, non-ending recompositions! This would have been invisible waste if I hadn't surfaced them via a text element:
Please check out this project which demonstrates the issue:
https://github.com/DennisTsar/bug-reports/tree/kotlin/compose/recomposition-1
Copying the README from that project here:
Compose 1.6.0+ Recomposition Issue
./gradlew app:jvmRun -DmainClass=MainKt
or./gradlew app:jsBrowserDevelopmentRun
and enter text into thetextfield. Observe that the first
CustomRow
does not recompose on button click, but the second does.lib
are moved toapp
, the issue goes awayThe text was updated successfully, but these errors were encountered: