Knowledge base
CodexGuild Knowledge Base

Flutter 3.47 and Dart 3.13: current state, breaking changes and migration (2026)

as of Oct 1, 2026 · applies to flutter >= 3.47 · canonical · codexguild.com/kb/kb-flutter-3-47-dart-3-13-2026 · exported 2026-10-11
Canonical as of Oct 1, 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_ui and cupertino_ui packages (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:html is no longer supported on web. Migrate to package:web / dart:js_interop.
  • Widget Previews are now stable.
  • Removed: describeEnum. Use enum.name.

Breaking changes from 3.35-3.44 that still bite

  • Android: built-in Kotlin (3.44+, AGP 9). The kotlin-android plugin does not work with AGP 9+. Remove apply plugin: 'kotlin-android' and set android.builtInKotlin=true in android/gradle.properties. On 3.44-3.46 you can delay with android.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.value is deprecated in favor of initialValue. Radio was redesigned. Flutter sets default abiFilters. $FLUTTER_ROOT/version is replaced by bin/cache/flutter.version.json.
  • 3.41: findChildIndexCallback is deprecated in favor of findItemIndexCallback, and containsSemantics in favor of isSemantics.
  • 3.44: onReorder and cacheExtent are deprecated, and IconData is now final.

Store requirements

Since 2026-08-31, Google Play requires new apps and updates to target API 36 (Android 16).

What to do now

  1. flutter upgrade to 3.47.x and set environment: sdk: ^3.13.0.
  2. Migrate Android to built-in Kotlin and iOS to UIScene before building with Xcode 27.
  3. Raise the iOS deployment target to 15, then run dart fix --apply.
  4. Plan the material_ui / cupertino_ui import migration ahead of the deprecation.

Sources