Flutter 3.44 arrived at Google I/O 2026 and it is one of the more consequential releases in the framework’s history. It is not the feature count that makes it significant – it is that three of the changes alter how Flutter projects are structured, built, and depended upon. If you have not upgraded yet, this is the release to read carefully before running the command.
Here is what actually matters, and what will break.
Material and Cupertino are leaving the core framework
This is the structural headline, and it is easy to miss among the AI announcements.
Both the Material and Cupertino libraries have been frozen. The updates shipped in 3.44 are the final set these libraries will receive while they live inside the core framework. From here they move out into standalone, independently versioned packages named material_ui and cupertino_ui.
By the next stable release, the in-framework versions will be deprecated and a migration path to the new packages will open up.
The reasoning is sound. Tying two large, opinionated design systems to the framework’s release cadence has held both back – Material could not iterate faster than Flutter, and Flutter could not cut a release without dragging Material’s surface area along with it. Decoupling lets each move at its own speed.
The practical consequence is that every Flutter app in existence will eventually need a migration plan. Start thinking about it now rather than when the deprecation warnings appear.
Despite the freeze, the libraries did get meaningful polish in this release:
CupertinoMenuAnchor, a new widget built on theRawMenuAnchorfoundation, brings a more native-feeling menu experience to iOSMenuAnchorgained Material 3 animations, disabled by default and enabled by settinganimatedto true, plus ahoverOpenDelayparameter onSubmenuButtonCarouselViewnow supports infinite scrolling, along with anonIndexChangedcallback and aleadingItemproperty on its controllerShapedInputBorderlets Material widgets build an input border from anyShapeBorder, which is how you get an iOS-style superellipse border on a Material fieldCupertinoSheetRoutenow handles scrollable content properly during the drag animation
Swift Package Manager is the new default on iOS and macOS
CocoaPods is no longer the default dependency manager for iOS and macOS builds. Swift Package Manager takes over, and the Flutter CLI performs the migration on your Xcode project automatically the next time you build or run.
The immediate win is that Ruby and CocoaPods disappear from the required toolchain. Anyone who has debugged a broken gem install on a fresh machine or a CI runner will appreciate what that removes.
Add-to-app also improves. A new command packages your Flutter module as a Swift Package for consumption in a native iOS project:
flutter build swift-package
If a plugin in your dependency tree still requires CocoaPods, the CLI prints a warning and falls back for that dependency. You can disable SwiftPM entirely in pubspec.yaml if it breaks your project, but treat both of these as temporary. CocoaPods support is being removed eventually, and the opt-out flag will go with it. Packages that support SwiftPM now score higher on pub.dev, which should accelerate ecosystem adoption.
If you maintain a plugin, adding SwiftPM support is now your responsibility. Anyone who migrated during the 2024 pilot needs to also add FlutterFramework as a dependency in Package.swift.
Hybrid Composition++ fixes Android platform views
Embedding native Android components – web views, maps, anything backed by a SurfaceView – has always meant choosing between frame rate and fidelity. Older rendering modes produced tearing during scrolls, broken text input, or heavy CPU overhead.
Hybrid Composition++ takes a different approach. Rather than routing native views through offscreen buffers or making the Flutter engine process them, it hands layer compositing to the Android OS directly, using Vulkan hardware buffer swapchains and SurfaceControl transactions to keep the Flutter UI synchronised with the native views.
The result is smooth scrolling and accurate touch input, plus reliable SurfaceView support.
It is opt-in for now and will become the default later. There are no new APIs to learn – existing platform views just upgrade. Enable it with the --enable-hcpp flag on your run command, or add the configuration to AndroidManifest.xml. Note that HCPP carries Android API and hardware requirements, so not every device will use it even when you opt in.
Canonical now leads Flutter Desktop
Canonical has taken over as lead maintainer and Strategic Steward for Flutter Desktop, owning the roadmap and maintaining the Linux, Windows, and macOS embedders.
Progress on the experimental windowing APIs is already visible. Tooltip windows now work across Linux, macOS, and Windows. Popup windows landed on macOS with the other two platforms to follow. Material’s showDialog creates a genuine separate child dialog window on platforms that support windowing. Linux gained content-sized views, which lets a window size itself from its contents.
These remain on the main channel and are not production ready.
Windows also picked up stylus input support, including rotation and pressure sensitivity, contributed by a community member. If you build note-taking or drawing apps, that is a significant unlock.
Breaking changes you need to handle
This is the section to read twice.
Android Gradle Plugin 9.0 handles Kotlin natively. As of AGP 9.0, the Android build system understands Kotlin without help. Manually applying the Kotlin Gradle Plugin now creates a conflict and causes your build to fail. App developers need to remove KGP from their Android build files. Plugin authors need to do the same and set a minimum Flutter constraint of 3.44 in pubspec.yaml.
The Flutter team added temporary backwards compatibility so existing projects keep building, but support for manually applying KGP is going away. If your app depends on a plugin that still applies KGP, your build fails and only the plugin author can fix it.
ABI filtering moved. Flutter now configures ABI filters once in the base defaultConfig block rather than per build type. Because AGP 9 merges the default configuration with build types and flavors instead of overriding it, custom abiFilters in a specific build type or flavor now require an extra flag at build time:
flutter build apk -Pdisable-abi-filtering=true
Deprecations to schedule:
ReorderableListView.onReorderis deprecated foronReorderItem, which supplies anewIndexthat correctly accounts for the item being removed before reinsertion- The
builderandpageBuilderparameters onshowCupertinoSheetandCupertinoSheetRouteare deprecated forscrollableBuilder - The
--web-hot-reloadflag is deprecated - The
plugin_ffitemplate is deprecated in favour of the standard plugin template with FFI support RawMenuAnchorcallback ordering changed
Rosetta is no longer required on Apple Silicon. Every macOS command-line tool, including the iOS device communication binaries, runs natively on ARM. The flip side: support for Intel x86 Macs ends in a future release. If your team still builds on Intel hardware, start planning the migration.
AI tooling and agentic workflows
A large portion of this release targets developers working with coding agents.
Agentic Hot Reload is the headline. The MCP server and your coding agent now automatically discover and connect to running Dart and Flutter applications. Ask an agent to change some UI and it writes the code and triggers the hot reload itself, with no manual setup. Agents can also now search inside package dependencies safely, without needing full access to your local pub cache, and the MCP tool definitions have been consolidated to cut token costs.
Agent Skills for Dart and Flutter give agents task-oriented domain knowledge for jobs like adding integration tests or setting up localization, following recommended practice rather than improvising.
On the app side, Genkit Dart entered preview as an open-source framework for building AI-powered and agentic apps, with a model-agnostic API covering Google, Anthropic, and OpenAI. It offers type-safe structured output, tool calling, multi-turn conversations, and observability, and runs either server-side or inside a Flutter app.
Generative UI continues to build momentum. The Flutter GenUI SDK, which lets an AI compose real interface components rather than returning walls of markdown, has seen package downloads climb sharply since the start of the year. The team is a project partner on the emerging A2UI protocol, an open standard defining how an agent and a client collaborate on UI composition and state.
Full LiteRT-LM support is also coming to the flutter_gemma package, which will abstract hardware differences and run on-device models with GPU and NPU acceleration across all six stable Flutter platforms.
Rendering, web, and everything else
Impeller received several Vulkan improvements, including better cache memory management and more efficient GPU and CPU synchronisation when frames drop. Circle rendering was rewritten around signed distance functions, fixing cases where circles came out aliased. Perspective matrix handling was corrected, which fixes shadow and perspective projection behaviour.
Fragment shaders got a quality-of-life upgrade. You can now bind uniforms by name instead of calculating manual offsets:
void setUp(ui.FragmentShader shader) {
shader.getUniformFloat('foobar').set(1.234);
}
The shader compiler also warns you when a shader will not work on Skia, so cross-platform rendering problems surface before deployment.
On web, Flutter now honours the browser’s prefers-reduced-motion setting out of the box and reports form validation errors to screen readers immediately using aria-description. The engine handles autofill in iOS 26 Safari by reusing DOM forms across focus shifts, and --base-href works on flutter run as well as production builds.
Accessibility improved more broadly. iOS apps can now read user preferences for auto-playing animated images, auto-playing video previews, and non-blinking cursors through AccessibilityFeatures. Progress indicators accept percentage strings as a semantics value so screen readers announce something human-readable rather than a raw decimal. The Slider semantics node now reflects its real size and position.
DevTools switched to WASM by default and got faster analysis on projects with many files. Widget Previews rewrote preview detection around the Dart Analysis Server, cutting IDE memory usage by up to half, and added filtering by group, name, and URI.
Android also gained display corner radii support. Flutter can query the device’s physical and logical corner radii and expose them through MediaQuery, so your layouts stop getting clipped on aggressively rounded screens.
Upgrading
Dart 3.12 ships alongside this release. When you are ready:
flutter upgrade
Handle the AGP 9 and Kotlin Gradle Plugin change first – it is the one that stops builds outright. Then work through the deprecations at your own pace, and start planning for the Material and Cupertino package migration before the next stable release makes it urgent.
The full announcement is on the Flutter blog, and the breaking changes page carries migration guidance for everything listed above.

Leave a Reply