Flutter 3.47 and Dart 3.13: current state, breaking changes and migration (2026)
Flutter 3.47 and Dart 3.13: current state, breaking changes and migration (2026)
Flutter 3.47.6 / Dart 3.13.5 is current. Material/Cupertino are moving to standalone packages, iOS min is 15, Impeller is default on desktop, AGP 9 built-in Kotlin and UIScene are mandatory, and dot shorthands are in the language.
Flutter 3.47 / Dart 3.13: what changed since 2025
As of: 2026-10
Current versions
- Flutter 3.47.6 (stable hotfix, 2026-10-01), bundling Dart 3.13.5. Flutter 3.47.0 shipped 2026-08-12 with Dart 3.13.0.
- Previous stables: 3.44 (2026-05-18, Dart 3.12), 3.41 (2026-02-11, Dart 3.11), 3.38 (2025-11-12, Dart 3.10), 3.35 (2025-08-14, Dart 3.9).
Dart language changes an older model will miss
- Dart 3.10: dot shorthands, so the type name can be left out when the context type is known:
MainAxisAlignment a = .center;. Analyzer plugins are supported. - Dart 3.12: private named parameters and experimental primary constructors. Pub workspaces can be nested.
- Dart 3.13: primary constructors for enums and const constructors. Native build hooks gain user-defined config and link hooks. Wasm gets deferred loading.
Flutter 3.47 changes
- Material/Cupertino are split out into the
material_uiandcupertino_uipackages (1.0). Using them is optional in 3.47. The in-SDK libraries are frozen and will be formally deprecated in an upcoming stable release.
dependencies:
material_ui: ^1.0.0
cupertino_ui: ^1.0.0
// before: import 'package:flutter/material.dart';
import 'package:material_ui/material_ui.dart';
Automated migration: dart fix --apply --code=migrate_design_widgets. If a dependency still uses the in-framework widgets, wrap the app in MaterialUiCompatibilityBridge.
- Minimum OS versions raised: iOS 13 -> 15 and macOS 10.15 -> 12.
- Impeller is now the default renderer on macOS, Windows and Linux, replacing Skia.
dart:htmlis no longer supported on web. Migrate topackage:web/dart:js_interop.- Widget Previews are now stable.
- Removed:
describeEnum. Useenum.name.
Breaking changes from 3.35-3.44 that still bite
- Android: built-in Kotlin (3.44+, AGP 9). The
kotlin-androidplugin does not work with AGP 9+. Removeapply plugin: 'kotlin-android'and setandroid.builtInKotlin=trueinandroid/gradle.properties. On 3.44-3.46 you can delay withandroid.builtInKotlin=false, but that opt-out will be removed. - iOS UIScene lifecycle (3.38+). Apps built with the iOS 27 SDK / Xcode 27 that have not adopted UIScene fail to launch. Move plugin registration into
FlutterImplicitEngineDelegate:
@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
}
}
Also add UIApplicationSceneManifest with FlutterSceneDelegate to Info.plist. From 3.41, flutter run / flutter build ios migrate unmodified AppDelegates automatically. Do not access FlutterViewController in didFinishLaunchingWithOptions, because it crashes.
- 3.38: the default Android page transition is now
PredictiveBackPageTransitionBuilder, and a SnackBar with an action no longer auto-dismisses. - 3.35:
DropdownButtonFormField.valueis deprecated in favor ofinitialValue.Radiowas redesigned. Flutter sets defaultabiFilters.$FLUTTER_ROOT/versionis replaced bybin/cache/flutter.version.json. - 3.41:
findChildIndexCallbackis deprecated in favor offindItemIndexCallback, andcontainsSemanticsin favor ofisSemantics. - 3.44:
onReorderandcacheExtentare deprecated, andIconDatais nowfinal.
Store requirements
Since 2026-08-31, Google Play requires new apps and updates to target API 36 (Android 16).
What to do now
flutter upgradeto 3.47.x and setenvironment: sdk: ^3.13.0.- Migrate Android to built-in Kotlin and iOS to UIScene before building with Xcode 27.
- Raise the iOS deployment target to 15, then run
dart fix --apply. - Plan the
material_ui/cupertino_uiimport migration ahead of the deprecation.
Sources
- https://docs.flutter.dev/release/release-notes
- https://flutter.dev/blog/whats-new-in-flutter-3-47
- https://docs.flutter.dev/release/breaking-changes
- https://docs.flutter.dev/release/breaking-changes/material-ui-and-cupertino-ui
- https://docs.flutter.dev/release/breaking-changes/migrate-to-built-in-kotlin
- https://docs.flutter.dev/release/breaking-changes/uiscenedelegate
- https://raw.githubusercontent.com/flutter/flutter/stable/CHANGELOG.md
- https://storage.googleapis.com/flutter_infra_release/releases/releases_macos.json
- https://dart.dev/resources/whats-new
- https://developer.android.com/google/play/requirements/target-sdk