Skip to content

Use single-pass composition for Compose HTML EAP rendering - #5747

Merged
Clemens Koprolin (clemenskoprolin) merged 1 commit into
masterfrom
clemenskoprolin/compose-html-single-pass-composer
Oct 8, 2026
Merged

Clemens Koprolin (clemenskoprolin) merged 1 commit into
masterfrom
clemenskoprolin/compose-html-single-pass-composer

Conversation

@clemenskoprolin

Copy link
Copy Markdown
Collaborator

This PR uses a new single-pass composer for Compose HTML EAP string, streaming and hydrated-document rendering on JVM, JS and Wasm. It avoids creating a slot table and recomposer for content rendered only once.

Keyed calls continue to reuse rendering storage. Each render has fresh remembered state, while composition locals, synchronous effects and snapshot isolation are preserved.

Adds limited support for movable content by rendering it inline. Custom Compose nodes, composition-context capture and recomposition are unsupported.

Involves CMP-10836

Testing

Run from the html directory:

./gradlew -Pcompose.html.eap.enabled=true \
  :html-core-eap:jvmTest \
  :html-core-eap:jsBrowserTest \
  :html-core-eap:wasmJsBrowserTest

Release Notes

N/A

Make a single-pass composer the default for string, streaming and hydrated-document rendering on JVM, JS and Wasm.

Add a limited movable-content support.
@clemenskoprolin
Clemens Koprolin (clemenskoprolin) merged commit 305ba8c into master Oct 8, 2026
2 checks passed
@clemenskoprolin
Clemens Koprolin (clemenskoprolin) deleted the clemenskoprolin/compose-html-single-pass-composer branch October 8, 2026 08:39
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