Flutter SDK · Release ArchiveLast updated: 2026-02-27 · 3.41.2 stable

Every Flutter change,
diff-resolved.

Breaking changes, deprecations, and migration paths — tracked across stable, beta, and main so your CI stays green.

flutter/packages · 3.38.0 diff
+47-23
--- a/packages/flutter/lib/src/material/button.dart
+++ b/packages/flutter/lib/src/material/button.dart
@@ -142,8 +142,9 @@ class ElevatedButton extends ButtonStyleButton {
static ButtonStyle defaultStyleOf(BuildContext context) {
final ThemeData theme = Theme.of(context);
-- final ColorScheme colorScheme = theme.colorScheme;
-- return styleFrom(backgroundColor: colorScheme.primary,
-- foregroundColor: colorScheme.onPrimary,);
++ return ElevatedButton.styleFrom(
++ backgroundColor: theme.colorScheme.primary,
++ foregroundColor: theme.colorScheme.onPrimary,
++ elevation: 2.0,
++ );
}
 
@@ -201,4 +202,6 @@ class _ElevatedButtonDefaultColor extends MaterialStateProperty<Color?> {
-- @Deprecated("Use styleFrom instead")
-- Color? resolve(Set<MaterialState> states) => _color;
++ // Deprecated: resolve() removed in 3.38
++ @override
++ Color? resolve(Set<WidgetState> states) => _color;
final Color _color;
PARSED · HUMAN-READABLE
STABLE
BREAKINGflutter/material

MaterialState → WidgetState migration

All MaterialState references must be updated to WidgetState. Affects ButtonStyle, InputDecoration, and 47 other APIs.

Migration:Run dart fix --apply
Effort: Medium
DEPRECATEDflutter/material

ElevatedButton.resolve() removed

The resolve() method on button color classes is removed. Use styleFrom() pattern instead.

Migration:Replace with styleFrom()
Effort: Low
NEWflutter/material

elevation parameter in styleFrom()

ElevatedButton.styleFrom() now accepts an elevation parameter directly, replacing the custom ButtonStyle wrapper pattern.

Migration:No action required
Effort: None
0
Commits Tracked
across 3.29–3.41
0
Stable Releases
in the last 12 months
0+
Breaking Changes
documented with fixes
0.0%
Coverage Rate
of public API surface
01 // RELEASE_MATRIX

Release Channels

Every stable and beta release since 3.29 — raw data left, impact right.

← RAW DATA
IMPACT ANALYSIS →
3.41.2STABLE2026-02-12
312
COMMITS
3
BREAKING
7
DEPRECATED
18
NEW_APIS
Impeller perf patch
Impeller Adreno 6xx fix
EFFORT

Hotfix addressing Impeller rendering regression on Adreno 6xx GPUs. No API changes.

3.38.0STABLE2025-11-06
825
COMMITS
14
BREAKING
22
DEPRECATED
41
NEW_APIS
Java 17 required · NDK r28
MaterialState → WidgetState
EFFORT

Largest release of 2025. Android teams must migrate to Java 17 and NDK r28 for 16 KB page support. UIScene lifecycle migration required for iOS. Memory leak from 3.29 fixed.

3.38.0-0.3.preBETA2025-10-08
198
COMMITS
11
BREAKING
18
DEPRECATED
35
NEW_APIS
RC for 3.38 stable
Impeller opt-out deprecated
EFFORT

Release candidate. Impeller opt-out deprecated on Android. CupertinoDynamicColor.withAlpha deprecated.

3.35.0STABLE2025-08-20
694
COMMITS
9
BREAKING
15
DEPRECATED
33
NEW_APIS
Stateful hot reload stable on web
Hot reload web: default on
EFFORT

Web stateful hot reload promoted from experimental to stable and enabled by default. Significant DX improvement — no full page reloads during widget edits.

3.35.0-0.2.preBETA2025-07-09
156
COMMITS
7
BREAKING
12
DEPRECATED
28
NEW_APIS
findChildIndexCallback deprecated
findChildIndexCallback → findItemIndexCallback
EFFORT

ListView and SliverList separated constructors: findChildIndexCallback renamed to findItemIndexCallback. dart fix handles most cases automatically.

3.32.0STABLE2025-05-14
581
COMMITS
7
BREAKING
11
DEPRECATED
29
NEW_APIS
Impeller default on Android
Impeller Android: default renderer
EFFORT

Impeller becomes the default renderer on Android, matching iOS. Eliminates shader compilation jank. Teams relying on Skia fallbacks must audit custom shaders.

3.29.0STABLE2025-02-12
435
COMMITS
5
BREAKING
9
DEPRECATED
24
NEW_APIS
CalVer versioning scheme
Version scheme change · memory leak
EFFORT

Flutter adopts modified CalVer. Version numbers now encode release cadence. Memory leak introduced in this release (fixed in 3.38) — if on 3.29–3.37, update immediately.

LIVE UPDATES

Get the Changelog in Your Inbox

Stable drops every ~3 months. Beta drops monthly. We send the diff, not the noise.

02 // BREAKING_CHANGES

What Actually Broke

Every breaking change since 3.29, with before/after and migration difficulty.

BC-001
3.38.0
foundation
CRITICAL
MaterialState renamed to WidgetState across all APIs
dart fix ✓
Medium
BC-002
3.38.0
android
CRITICAL
Java 17 minimum for Android builds
manual
Low
BC-003
3.38.0
ios
HIGH
UIScene lifecycle migration required
manual
High
BC-006
3.32.0
rendering
HIGH
Impeller default on Android — Skia fallback removed
manual
Medium
BC-004
3.38.0
sdk
MEDIUM
flutter.version.json replaces version file
manual
Low
BC-005
3.35.0
widgets
MEDIUM
findChildIndexCallback renamed in list constructors
dart fix ✓
Low
BC-007
3.38.0
cupertino
LOW
CupertinoDynamicColor.withAlpha/withOpacity deprecated
dart fix ✓
None
03 // DOWNLOAD_REPORT

Full Diff Report

Get the complete 3.29–3.41 breaking change report as a PDF — 138 changes, migration steps, and effort ratings. Used by engineering teams at pre-deployment audits.

No spam. Unsubscribe any time. Used by 1,200+ Flutter engineers.