Flutter Stabilizes, MAUI Drops Mono, and uni-app x Ships a Custom iOS Renderer
Hello everyone, I'm Lao Liu
The keyword for the cross-platform world in July is catch-up and breakthroughs after major releases. Flutter continues to issue hotfixes to stabilize the 3.44 ecosystem, KMP enters the 2.4.20-Beta cycle, uni-app x welcomes its biggest update since May, iOS Steam Mode goes live, and .NET MAUI officially replaces Mono with CoreCLR in Preview 6. Let's take a look at the specific changes in each framework.
1. July Cross-Platform Tech Overview
The cross-platform world in July continued the June theme of "steady progress," but with different focuses:
① Flutter A series of hotfixes, ecosystem continues to converge
After the release of the major version 3.44, the Flutter team issued four more hotfixes in July (3.44.3 → 3.44.6), fixing a range of issues from SwiftPM concurrent compilation to Android app bundle packaging. The overall rhythm is a "catch-up season after a major release," with no new features but steadily improving stability.
② KMP 2.4.20-Beta1 kicks off a new feature cycle
The Kotlin team released 2.4.20-Beta1 on June 24, bringing practical improvements like coroutine stack recovery and klib incremental compilation enabled by default. The Build Tools API has also been extended to JS/Wasm/Metadata targets.
③ uni-app x iOS Steam Mode officially goes live
This is one of the biggest surprises this month. Following the HarmonyOS Steam Mode in May, uni-app x released the iOS Steam Mode in July, claiming a "rendering system faster than native." It also released the uni-ui x component library, bytecode compilation, and other major updates.
④ .NET MAUI CoreCLR takes full control, Mono exits the stage of history
Preview 6 is a watershed version for MAUI. CoreCLR becomes the sole runtime for mobile, and Mono officially retires. Additionally, CollectionView2 finally lands on Windows, and the Shell architecture on Android is reimplemented using Handlers.
2. Flutter: 3.44 hotfixes continue iterating, now at 3.44.6
Flutter release notes: https://docs.flutter.dev/release/release-notes
From late June to July, no new feature versions were released for the Flutter stable channel, but hotfixes have been ongoing. From 3.44.2 on June 12 to 3.44.6 in mid-July, the latest version is 3.44.6 (released around July 10), with the Dart version synced at 3.12.x.
2.1 July Hotfix List
3.44.3 Fixed crashes in Animated PNG rendering, SwiftPM concurrent compilation, and Android GLES fence texture destruction, among other issues.
3.44.4 Fixed a bounds checking issue for
FlAccessibleTextFieldon the Linux platform.3.44.5 Fixed an issue where
libapp.sowas not included when using flavors in Android app bundles, text shadow rendering position offsets, and crashes during rotation or closing under Impeller/Vulkan.3.44.6 (released last week) Fixed a crash on Linux caused by a missing
CMakeCache.txtwhen native assets were enabled, and a crash during Android instrumented test runs.
2.2 Lao Liu's Commentary
The hotfix frequency for the 3.44 series maintains its usual pace; there have been six hotfixes since the release of 3.44.0. But looking at the fixes, they are mostly for edge cases and scenario-specific crashes; the core functionality remains stable. Recommendation: Individual projects and tech enthusiasts can confidently upgrade to 3.44.6. Enterprise projects should stick to the "observe for two months" strategy. It has been about two months since the 3.44.0 release; if the team can't wait, they can start evaluating the upgrade.
3. KMP (Kotlin Multiplatform): 2.4.20-Beta1 Released, Coroutine Stack Recovery and Incremental Compilation
Kotlin release notes: https://kotlinlang.org/docs/whatsnew-eap.html
Following June's 2.4.0-RC2, the Kotlin team released Kotlin 2.4.20-Beta1 on June 24, starting the EAP cycle for 2.4.20. The current stable Kotlin version that KMP depends on is 2.4.10. In this update, improvements directly related to KMP focus on build efficiency, debugging experience, and multi-platform target coverage.
3.1 Key Changes Related to KMP
① Coroutine Stack Recovery Improved cross-platform coroutine debugging experience for KMP
The standard library adds the StackTraceRecoverable interface, allowing custom exceptions to retain specific attributes (like line numbers, error codes) during the stack recovery process of kotlinx.coroutines. In KMP projects, coroutines are the core mechanism for sharing code across platforms; this improvement can effectively enhance the debugging efficiency of complex coroutine chains.
② KMP/Native klib incremental compilation enabled by default
Starting from 2.4.20-Beta1, incremental compilation for KMP's klib artifacts is enabled by default. If only some modules have changed, only the affected parts are recompiled, significantly shortening debug build times. This is particularly critical for multi-module KMP projects.
③ KMP/JS Brand new browser testing DSL
The testing infrastructure for Kotlin/JS, as KMP's Web target, has finally been upgraded. Replacing Karma, which has been deprecated for two years, the new DSL is based on Mocha + Webpack (to be replaced by Vite later) + Playwright, supporting Chromium/Firefox/WebKit engines.
④ KMP Build Tool Unification BTA extended to JS/Wasm/Metadata
The BTA (Build Tools API), previously only supporting JVM, now begins to cover Kotlin/JS, Kotlin/Wasm, and Kotlin metadata targets. This means the KMP build tool ecosystem is moving towards unification, allowing future third-party build tools to handle all KMP targets more consistently.
⑤ KMP/Wasm
require() call changes and initialization order alignment
If a KMP project involves Wasm targets, note that top-level require() calls in @JsFun will now report errors and need to be migrated to @JsModule or import() expressions. Also, the initialization order of companion objects is now aligned with JVM, improving cross-platform consistency.
3.2 Lao Liu's Commentary
The two most relevant updates for KMP in 2.4.20-Beta1 are klib incremental compilation and BTA extension. The former is a tangible improvement to the build efficiency of multi-module KMP projects; the latter, while leaning towards infrastructure, is a key step in the long-term unification of the KMP build tool ecosystem. Coroutine stack recovery also helps with KMP cross-platform coroutine debugging. Judging by the pace from 2.4.0 to the 2.4.20-Beta, the Kotlin team is accelerating iteration. KMP developers should try this Beta version in their development environment, focusing on the actual effects of incremental compilation.
4. React Native: 0.86 runs stably, no new version yet
React Native blog: https://reactnative.dev/blog
RN did not release a new version in July; 0.86 has been stable since its release on June 11. The most recent article on the RN blog is still the 0.86 release announcement.
If you haven't upgraded to 0.86 yet and are plagued by Android 15+ keyboard avoidance or status bar occlusion issues, it's worth upgrading immediately.
5. uni-app x: iOS Steam Mode Launched, 5.14/5.15 Dual Version Releases
uni-app x release notes: https://doc.dcloud.net.cn/uni-app-x/release.html
In June, uni-app x was marked as "No updates," but July saw a major explosion! Two consecutive versions, 5.14 (July 2) and 5.15 (July 9), were released.
5.1 Version 5.14: iOS Steam Mode + Bytecode Compilation
This is the biggest update since May, with core changes:
① [Important] iOS Steam Mode Launched
Following the HarmonyOS Steam Mode in May, the iOS Steam Mode is officially released. The official claim is a "rendering system faster than native." Coupled with the previously supported Steam Mode on Android, uni-app x has taken a big step towards unifying its rendering engine across three platforms.
② [Important] Compilation to Bytecode
Steam Mode supports compilation to bytecode, greatly improving compilation speed. This is a tangible improvement for the development experience of large projects.
③ [Important] uni-ui x Component Library Released
A brand new uni-ui x component library provides official UI component support for uni-app x projects.
④ Added a large number of APIs and components
- Sensor APIs: compass, accelerometer, gyroscope
- Contacts API (contact), Calendar API (calendar)
- iOS/Android:
pickercomponent,uni.loginfor WeChat login,uni.sharefor WeChat sharing, biometric authentication - Web platform:
list-viewsupports thescroll-into-viewattribute - HarmonyOS Steam Mode: tabBar,
sticky-section,rich-textdynamic Slot allocation, CSScubic-beziersupport, etc.
⑤ Numerous Bug Fixes
Covering all platforms including Android, iOS, HarmonyOS, and Web, involving almost all common components like swiper, list-view, scroll-view, input, textarea, web-view, canvas, etc.
5.2 Version 5.15: Bug Fixes
- Fixed an issue where the
canvascomponent'stoDataURLcall was abnormal on some devices in iOS Steam Mode. - Fixed a conditional judgment issue in Android VDOM mode where uppercase Boolean types were recognized as objects.
5.3 Lao Liu's Commentary
This wave of updates for uni-app x is very significant. The launch of iOS Steam Mode means uni-app x has taken another step forward on the path of self-developed rendering engines, with Steam Mode support now available on all three platforms (Android/iOS/HarmonyOS). Bytecode compilation is also very practical for improving compilation speed in large projects. Coupled with the release of the uni-ui x component library, the uni-app x ecosystem is rapidly maturing. If your project needs to cover both Apps and Mini Programs simultaneously, it's worth paying close attention to.
6. .NET MAUI: Preview 6 Released, CoreCLR Fully Replaces Mono
.NET MAUI blog: https://devblogs.microsoft.com/dotnet/category/maui/
There are two major events for MAUI this month: .NET 11 Preview 6 (June 29) and the milestone announcement of CoreCLR replacing Mono (July 14).
6.1 CoreCLR Officially Becomes the Sole Runtime
On July 14, David Ortinau published an article announcing: Starting from Preview 6, CoreCLR is the sole runtime for .NET MAUI on mobile. The compilation option to choose Mono has been removed; whether Android, iOS, or Mac Catalyst, everything runs on CoreCLR.
Key data:
- iOS/Mac Catalyst: Overall performance is faster than Mono.
- Android: Startup speed and package size are within 10% of Mono.
- Supports full .NET diagnostic tools (
dotnet-trace,dotnet-counters). - Infrastructure for NativeAOT on Android is in place.
- Blazor WebAssembly is unaffected and continues to use Mono.
6.2 MAUI Updates in Preview 6
① CollectionView2 Lands on Windows
Previously, Windows lacked support for CollectionView2; Preview 6 fills this gap.
② Handler-based Shell Architecture on Android
Shell navigation on Android is reimplemented using the Handler architecture, improving performance and maintainability.
③ Removal of Compatibility Package
The Microsoft.Maui.Controls.Compatibility package has been officially removed, further cleaning up historical baggage.
④ Other Improvements
- HybridWebView now supports AOT.
- Geolocation adds a minimum distance filter.
- Android MediaPicker supports result recovery.
6.3 Other Noteworthy Updates
- SkiaSharp 4.0 Stable (June 9): 4.148.0 is the first stable version of SkiaSharp v4.
- Android minimum version raised to API 24, API 37 is officially stable (continuing from June's content).
6.4 Lao Liu's Commentary
CoreCLR fully replacing Mono is a watershed moment in .NET MAUI's history. This means mobile and cloud/desktop share the same runtime, with fully unified performance, diagnostic tools, and ecosystem. For C# full-stack teams, MAUI's technical value in the .NET 11 era is rapidly increasing. However, the official team also honestly asks developers to "measure for themselves," as performance may vary in different scenarios. Teams with the capacity are advised to run their own apps on Preview 6 for validation.
7. Summary of This Month's Cross-Platform Tech Changes
| Framework | June Status | July Status | Key Changes |
|---|---|---|---|
| Flutter | 3.44.2 | 3.44.6 | Four consecutive hotfixes, stability continuously improving |
| KMP | 2.4.0-RC2 | 2.4.20-Beta1 | Coroutine stack recovery, klib incremental compilation, JS testing DSL |
| React Native | 0.86 | 0.86 (No change) | No new version released |
| uni-app x | No updates | 5.14 / 5.15 | iOS Steam Mode, bytecode compilation, uni-ui x component library |
| .NET MAUI | Preview 5 | Preview 6 | CoreCLR replaces Mono, CollectionView2 on Windows |
Lao Liu's Suggestions
- Flutter users 3.44.6 is quite stable; individual projects can upgrade. Enterprise projects are advised to evaluate next month.
- KMP users 2.4.20-Beta1 is worth trying in a development environment, paying special attention to the build speed improvements from klib incremental compilation.
- RN users 0.86 is stable enough; just wait for the next major version.
- uni-app x users iOS Steam Mode is worth experiencing immediately; bytecode compilation significantly improves compilation speed.
- MAUI users The CoreCLR migration in Preview 6 is a major change; it is recommended to verify compatibility in a test environment.
The wheels of technology roll forward; only by continuous learning can one always stay at the table.
🤝 If students who have read this far are interested in client-side or Flutter development, feel free to contact Lao Liu; let's learn from each other.
🎁 DM to get a free copy of the "Flutter Development Handbook" compiled by Lao Liu, covering 90% of application development scenarios. It can serve as a knowledge map for learning Flutter.
💬 : laoliu_dev
📂 Lao Liu has also organized his historical articles in a GitHub repository for easy reference.