Flutter 3.47 Decouples Material and Cupertino, Makes Impeller Default on Desktop
Desktop is the headline: Impeller as the default renderer and native window-handle access turn Flutter into a credible option for complex desktop apps that need platform-specific chrome. The Material/Cupertino decoupling means UI fixes no longer wait three months for a Flutter release, but it also forces package authors to ship major-version breaks or risk type conflicts during the transition.
The Material and Cupertino design libraries are now published as separate `material_ui` and `cupertino_ui` packages, decoupled from the Flutter SDK's quarterly release train. They can ship fixes and features on a weekly cadence, and the old import paths are scheduled for deprecation in November. A compatibility bridge helps mixed ecosystems where some plugins still import the legacy `flutter/material.dart`.
On desktop, Impeller becomes the default renderer across all three platforms, bringing SDF-based text rendering for sharper fonts on lower-DPI screens and wide-gamut color support on macOS. Multi-window support advances with popup windows on Windows and Linux, direct access to native window handles (HWND, NSWindow, GtkWindow), and flavor support for Windows and Linux builds.
Platform baselines shift upward: iOS now requires 15, macOS requires 12, UIScene is mandatory for Xcode 27, and Intel Mac testing is dropped. On Android, Java 17 becomes the minimum, and the Gradle/Kotlin plugin versions jump forward. Web Wasm gains experimental deferred loading to split large modules and improve startup time.
Decoupling Material and Cupertino into independently versioned packages is a structural change that mirrors how the web ecosystem handles design systems, but it creates a temporary schism where a single widget tree can contain two incompatible Theme types.
The weekly release cadence for UI packages addresses a long-standing complaint that Flutter's quarterly cycle left design bugs unfixed for months, but it shifts the burden onto package authors who must now track and test against faster-moving dependencies.
Making Impeller the default on desktop before multi-window exits experimental suggests the rendering stack is stabilizing faster than the windowing APIs, which remain the real bottleneck for complex desktop applications.
Direct native window-handle access is an escape hatch that acknowledges Flutter's platform abstraction will never cover every OS-specific feature, and it gives teams a path to ship desktop apps without waiting for framework-level support.
Dropping Intel Mac testing and requiring UIScene for Xcode 27 signals that Flutter's Apple platform support is now firmly aligned with Apple's own deprecation timeline, leaving Intel Mac users with no safety net beyond the current release.
Wasm deferred loading is a necessary step toward making Flutter Web viable for content-heavy apps, but it remains experimental and gated behind a flag, so production use is still risky.