Flutter 3.47 Splits Material and Cupertino Out of the Core SDK
Flutter 3.47’s headline change is architectural: the Material and Cupertino design systems ship as standalone pub.dev packages (material_ui and cupertino_ui, both hitting 1.0) rather than being baked into the SDK. Decoupling lets the design libraries release on their own weekly cadence instead of waiting for quarterly SDK drops, opens them to community contributions after a months-long freeze, and lays groundwork for a style-neutral core widget catalog. The core SDK still bundles the old libraries for now, but they’re slated for formal deprecation in November’s stable release. A dart fix migration command rewrites imports, and a MaterialUiCompatibilityBridge lets apps adopt the new packages even while some dependencies still reference the legacy SDK paths. Localizations were unbundled the same way.
The release also front-loads Apple’s fall platform churn. Flutter is preparing for Xcode 27, iOS 27, and macOS 27, including the new mandate that all UIKit apps adopt the UIScene lifecycle — apps that don’t will fail to launch when built with Xcode 27. The CLI handles this automatically for most projects, but custom AppDelegate code or legacy-lifecycle plugins need manual migration. Intel Mac support is being wound down (build warnings now, errors later), and 92 of the top 100 iOS plugins have moved to Swift Package Manager as CocoaPods enters maintenance mode.
On performance and web, Impeller becomes the default renderer on desktop, Widget Previews graduate to stable, and the team is steering toward enabling WebAssembly by default for Flutter web. Wasm is opt-in today via a build flag but requires migrating off the legacy dart:html to the package:web JS interop; this release adds experimental deferred loading on Wasm to help split up larger web apps.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.