Flutter 3.47 introduces standalone design packages and enhanced platform support

Flutter’s latest release separates Material and Cupertino into independent packages, accelerates web and desktop support, and prepares for future architectural flexibility, signalling a significant shift for developers adopting the framework.

Flutter 3.47 marks a significant architectural shift for the framework, with Google separating Material and Cupertino into standalone packages while also broadening desktop, web and tooling support. According to the Flutter release notes, the change is intended to let the design systems evolve on their own cadence, while the core SDK continues to provide the foundations developers already rely on. The company also says the move lays groundwork for a more neutral widget catalogue in future releases.

The most visible change for many teams is the availability of material_ui and cupertino_ui as independent 1.0 packages on pub.dev. Flutter says the packages will now receive fixes and new components on a weekly schedule, rather than waiting for the framework’s broader release cycle. To ease migration, the SDK includes a dart fix command that updates imports, and a MaterialUiCompatibilityBridge for apps that still depend on older SDK-based imports through other packages. Flutter plans to deprecate the bundled design libraries in a November stable release.

The release also continues Flutter’s push towards modern web support. Flutter said it is working to make WebAssembly the default path for web apps and is encouraging developers to test --wasm builds now. That transition comes with a dependency change: projects need to move away from dart:html and towards package:web for JavaScript interop. Flutter 3.47 also adds experimental deferred loading for Wasm builds, which can split larger applications into smaller modules to improve initial load times.

On desktop, Impeller is now the default renderer for macOS, Windows and Linux. Flutter describes Impeller as a newer rendering engine designed to avoid shader-compilation stutters by preparing shaders ahead of time rather than at runtime. The release notes also say wide gamut colour is enabled by default on macOS, and that text rendering on desktop now uses signed distance field techniques for sharper text and cleaner vector edges. Earlier Flutter releases had already been preparing the desktop stack with multi-version support for Windows and Linux, as well as broader desktop-oriented text improvements.

Apple platform work is another major theme. Flutter says it is preparing for Xcode 27, iOS 27 and macOS 27, and has raised the minimum supported OS versions to iOS 15 and macOS 12 for Flutter 3.47 and later. The release also reflects Apple’s new requirement for the UIScene life cycle in UIKit apps, although Flutter says its CLI will handle the migration automatically in most cases. For apps with custom native code or older plugins, manual changes may still be needed.

The release also continues Flutter’s gradual retreat from Intel-based Macs. According to Flutter, automatic testing on Intel hardware has been disabled and the command-line tool now warns when building on Intel hosts or using mixed architectures. Developers can opt into ARM64-only macOS builds with a configuration flag, but Flutter says the fallback path will eventually be removed. The framework is also making more use of Swift Package Manager: Flutter says 92 of the top 100 iOS plugins have already been migrated, while CocoaPods is now considered to be in maintenance mode.

Beyond the headline platform changes, Flutter 3.47 brings a long list of smaller but practical fixes. Android builds now follow a defined dependency matrix, including Java 17, Kotlin Gradle Plugin 2.4.0, Android Gradle Plugin 9.1.0 and Gradle 9.3.1. Flutter also says it has improved Android keyboard handling, clarified iOS code-signing messages, refined window focus behaviour on desktop and added more work to multi-window APIs, including pop-ups and native window handles. The Widget Preview feature has moved to stable, giving developers a faster way to inspect UI components without running a full app.

For teams already on Flutter, the practical next step is straightforward: upgrade, run the migration tools and test against the latest desktop, web and Apple betas where relevant. Flutter’s own message is that the framework is moving towards a more modular future, with design systems, rendering, web support and platform tooling each gaining more independence.

Disclaimer: This content is intended for informational purposes only. Readers are advised to exercise their own judgement, conduct due diligence, or consult a qualified expert before acting on any information provided.