{"slug": "compose-multiplatform-1-12-0-released", "title": "Compose Multiplatform 1.12.0 Released", "summary": "JetBrains released Compose Multiplatform 1.12.0, introducing an experimental Model Context Protocol (MCP) server for AI coding agents in Compose Hot Reload, automatic font fallback for web, and a v2 API for desktop window and dialog state management. The MCP server lets agents trigger reloads, take screenshots, inspect the semantic tree, simulate clicks and text input, and read application logs to verify their own edits. The v2 API provides finer control over window positioning and sizing, including screen selection, custom positioning logic, and explicit asynchronous state changes.", "body_md": "## Kotlin\n\nA concise multiplatform language developed by JetBrains\n\n[Multiplatform](/kotlin/category/multiplatform/)\n\n[Releases](/kotlin/category/releases/)\n\n# Compose Multiplatform 1.12.0 Released\n\nCompose Multiplatform 1.12.0 is out! This version brings new tooling for AI assistants, improvements to web resource management, and finer control over desktop window states.\n\nHere are the highlights of this release:\n\n[MCP server for AI agents in Compose Hot Reload](#mcp-server-for-ai-agents-in-compose-hot-reload)[Automatic font fallback for web](#automatic-font-fallback-for-web)[v2 version of the window and dialog API for desktop](#window-and-dialog-v2)\n\nFor a complete overview of the changes, check out [What’s new in Compose Multiplatform 1.12.0](https://kotlinlang.org/docs/multiplatform/whats-new-compose-112.html) or the [release notes on GitHub](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.12.0).\n\n[Get Started with Compose Multiplatform](https://kotlinlang.org/docs/multiplatform/compose-multiplatform.html)\n\n## MCP server for AI agents in Compose Hot Reload\n\nCompose Hot Reload now ships with an experimental Model Context Protocol (MCP) server that connects AI coding agents to your running application.\n\nUsing the MCP server, an agent can trigger reloads, take screenshots, inspect the semantic tree, simulate clicks and text input, and read application logs. In practice, this means the agent can verify the results of its own edits. It can confirm that the reload succeeded, inspect the rendered UI, catch a runtime exception, and iterate – all without you describing what’s on screen.\n\nFor the full list of available tools and instructions on connecting your agent, see the [Compose Hot Reload documentation](https://github.com/JetBrains/compose-hot-reload#mcp-server-for-ai-agents).\n\n## Automatic font fallback for web\n\nCompose Multiplatform for web now handles characters that your application’s fonts don’t cover. When it encounters an unresolved character during rendering, it downloads the matching Noto font subset on demand and recomposes the affected text. As a result, Japanese, Arabic, Devanagari, and emoji render correctly without you having to bundle fonts for them.\n\n## Window and dialog v2\n\nThis release introduces an experimental v2 API for `WindowState`\n\nand `DialogState`\n\nin the `androidx.compose.ui.window.v2`\n\npackage. It gives you finer control over how windows and dialogs are positioned and sized. You can:\n\n- Select the screen a window appears on.\n- Provide custom positioning and sizing logic, including logic based on the content’s intrinsic size.\n- Set minimum and maximum window sizes.\n- Position dialogs relative to their parent window.\n\nThe v2 API also makes the asynchronous nature of window state changes explicit: It distinguishes the state you request from the state the window currently has.\n\nFor example, to center a window and give it a fixed size, use `WindowPositionProvider`\n\nand `WindowSizeProvider`\n\n:\n\n```\nval windowState = rememberWindowState(\n    initialBoundsProvider = WindowBoundsProvider(\n        positionProvider = WindowPositionProvider.CenteredOnScreen,\n        sizeProvider = WindowSizeProvider.Fixed(DpSize(400.dp, 200.dp))\n    )\n)\n```\n\nWith the v2 API, you can also use `WindowSizeProvider.Unconstrained`\n\nto size the window to its content initially, while still letting that content expand with `fillMaxSize()`\n\nwhen the user enlarges the window:\n\n```\nWindowBoundsProvider(\n    positionProvider = WindowPositionProvider.CenteredOnScreen,\n    sizeProvider = WindowSizeProvider.Unconstrained\n)\n```\n\nSee the [Window and dialog v2 documentation](https://kotlinlang.org/docs/multiplatform/compose-desktop-top-level-windows-management.html#window-and-dialog-api-v2) for the full details.\n\nUpdate your dependencies, try out the new APIs, and let us know what you think about Compose Multiplatform 1.12.0.\n\nFor everything that didn’t make it into this post, check out the [full release notes](https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.12.0) or [What’s new](https://kotlinlang.org/docs/multiplatform/whats-new-compose-112.html).\n\n#### Subscribe to Kotlin Blog updates", "url": "https://wpnews.pro/news/compose-multiplatform-1-12-0-released", "canonical_source": "https://blog.jetbrains.com/kotlin/2026/08/compose-multiplatform-1-12-0/", "published_at": "2026-08-26 13:28:41+00:00", "updated_at": "2026-08-26 14:14:49.352434+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["JetBrains", "Compose Multiplatform", "Compose Hot Reload", "Model Context Protocol (MCP)"], "alternates": {"html": "https://wpnews.pro/news/compose-multiplatform-1-12-0-released", "markdown": "https://wpnews.pro/news/compose-multiplatform-1-12-0-released.md", "text": "https://wpnews.pro/news/compose-multiplatform-1-12-0-released.txt", "jsonld": "https://wpnews.pro/news/compose-multiplatform-1-12-0-released.jsonld"}}