Flutter 3.47 Decouples Material Design; iOS 27 Will Crash Unmigrated Apps
iOS 27 turns the UIScene requirement into a hard crash, not a warning — CI pipelines running Xcode 26 today will silently pass, then break overnight when Xcode 27 lands. Separately, the Material/Cupertino split means package maintainers need to ship a major release, and every app team must run the automated migration or risk dependency conflicts.
Flutter 3.47 and Dart 3.13 are foundation-level releases. The design systems `material_ui` and `cupertino_ui` are now standalone packages on pub.dev, decoupled from the quarterly SDK cadence and free to iterate weekly. A compatibility bridge lets apps adopt the new imports immediately even when third-party plugins still reference the old SDK paths. Dart 3.13 stabilizes primary constructors, auto-groups imports during formatting, and introduces FFI tree-shaking so compiled binaries drop unused native symbols. Impeller also becomes the default desktop renderer, eliminating first-frame shader compilation jank by pre-compiling a fixed shader set at build time.
Moving Material and Cupertino to pub.dev turns the design system from a framework component into a framework consumer — a structural shift that lowers the barrier for custom design systems and lets UI iterate independently of rendering engine changes.
The compatibility bridge is a pragmatic escape hatch: it acknowledges that the plugin ecosystem won't migrate in lockstep and prevents the decoupling from becoming a blocking upgrade.
iOS 27's hard crash on missing UIScene is a time-bomb for CI. The danger isn't the migration work itself but the silent pass on current Xcode versions that will flip to failures the moment build infrastructure updates.
FFI tree-shaking via `@RecordUse()` changes the calculus for package authors who bundle native code — unused symbols now get stripped automatically, shrinking binary size without manual pruning.