Welcome to Flutter 3.29! This release is packed with enhancements that refine the development experience, improve performance, and introduce new features across the framework, engine, DevTools, and web. With over 104 contributors actively shaping this release, Flutter 3.29 stands as a testament to the dedication of the global developer community.
From Cupertino improvements to Material 3 updates, WebAssembly advancements, and significant engine optimizations, this release continues Flutter’s mission of enabling fast, beautiful, and high-performing applications. Let’s dive into what’s new!
Framework Enhancements
Cupertino Updates
Flutter 3.29 brings several refinements to the Cupertino widget set to improve native fidelity and user experience:
-
CupertinoNavigationBar & CupertinoSliverNavigationBar now support a
bottom
widget, commonly used for a search field or segmented control. -
CupertinoSliverNavigationBar includes a new
bottomMode
property, allowing developers to configure whether the bottom widget hides when scrolled or remains visible. -
New Scrolling Behavior: When partially scrolled,
CupertinoSliverNavigationBar
now smoothly snaps between expanded and collapsed states. -
Larger Static Navigation Bar: A new
CupertinoNavigationBar.large
constructor displays a large title by default. - CupertinoSheetRoute & showCupertinoSheet: This new API introduces a native-style iOS modal sheet with drag-to-dismiss gestures.
-
Improved Dark Mode Fidelity: Thanks to community contributions,
CupertinoAlertDialog
now matches native iOS appearance more closely. - Better Text Selection Behavior: Inverted text selection handles on iOS now swap order, and selection magnifier borders match the current theme.
Material Design 3 Updates
-
New Page Transition:
FadeForwardsPageTransitionsBuilder
replacesZoomPageTransitionsBuilder
, offering smoother transitions aligned with Android's latest design. -
Updated Progress Indicators:
CircularProgressIndicator
andLinearProgressIndicator
now match Material Design 3’s latest specifications. -
Slider Enhancements: The new M3
Slider
features updated track and handle shapes, improving usability. -
Bug Fixes & Improvements:
- Keyboard navigation correctly triggers
DropdownMenu.onSelected
. - Improved
TabBar
elastic animations. -
RangeSlider
now properly aligns thumbs with divisions and rounded corners. - Added
mouseCursor
support toChip
,Tooltip
, andReorderableListView
.
- Keyboard navigation correctly triggers
Text Selection Enhancements
Flutter now offers more control over text selection with new APIs:
-
SelectionListener
andSelectionListenerNotifier
provide access to selection details, including start and end offsets. -
SelectableRegionSelectionStatusScope
allows checking whether a selection is actively changing or finalized.
Accessibility Improvements
- The
Form
widget now announces only the first error detected when screen readers are enabled. - Screen readers now properly announce dropdown menu labels.
Flutter for Web: WebAssembly & WebGL Enhancements
Flutter’s WebAssembly (wasm) support has been improved to provide better flexibility:
- No more special HTTP headers required! Flutter web apps built with wasm can now run on single-threaded environments by default, while multi-threading remains available via headers.
-
Improved Image Handling:
- WebGL backend optimizations reduce UI jank by decoding images asynchronously.
-
Image.network
now seamlessly supports CORS images.
Flutter Engine Enhancements
Impeller Vulkan Stability Improvements
- Fixed a reproducible flickering issue and visual jitter reported on older Vulkan-capable devices.
- Disabled Android Hardware Buffer swapchains until further validation.
- MediaTek/PowerVR devices now default to Impeller OpenGLES, improving compatibility.
- Android emulators now use Impeller GLES backend by default.
Impeller OpenGLES Support on Android
- Devices lacking Vulkan drivers now automatically fall back to Impeller on OpenGLES, ensuring 100% compatibility with Flutter-supported Android devices.
Impeller on iOS
- Skia has been fully removed from the iOS backend.
- The
FLTEnableImpeller
opt-out flag is no longer available. - Future updates will further reduce binary size by eliminating Skia dependencies.
New Features in Impeller
-
Backdrop Filter Optimizations: The new
BackdropGroup
widget andBackdropFilter.grouped
constructor enable better performance with multiple blurs. - ImageFilter.shader: A new constructor allows custom shaders for widgets, improving animation and rendering capabilities.
Dart Threading Changes on Mobile
- Dart code now runs on the main thread instead of a separate UI thread, improving platform interoperability.
- Enables synchronous calls between Flutter and native code, reducing message serialization overhead.
DevTools & IDE Enhancements
New DevTools Inspector
- Improved widget tree visibility with a condensed layout.
- A redesigned widget properties view for better inspection.
- Auto-refresh support for hot-reload and navigation events.
On-Device Widget Selection Improvements
- Widget selection mode remains active until explicitly exited.
- A new on-device exit button simplifies interaction.
Logging Tool Enhancements
- Logs now display metadata, including severity, category, zone, and isolate.
- Added filtering support based on severity level.
- Improved performance and initial load times.
Breaking Changes & Deprecations
Discontinued Package Support (April 30, 2025)
The following packages will no longer receive official support:
ios_platform_images
css_colors
palette_generator
flutter_image
flutter_adaptive_scaffold
flutter_markdown
Developers interested in maintaining these packages are encouraged to fork and continue development.
Flutter Gradle Plugin Migration
- Projects created before 3.16 must migrate from script-based application of the Flutter Gradle plugin.
- If you see the warning: “You are applying Flutter’s main Gradle plugin imperatively”, follow this migration guide.
Removal of the Web HTML Renderer
- HTML renderer has been officially removed from Flutter web.
- Developers should transition to CanvasKit or WebAssembly rendering.
Web Image Handling Enhancements
- New
webHtmlElementStrategy
flag allows better control over<img>
element behavior in web apps.
Material Theme Normalization
-
ThemeData.dialogBackgroundColor
has been deprecated in favor ofDialogThemeData.backgroundColor
. -
iconAlignment
has been removed fromButtonStyleButton
after integration intoButtonStyle
.
Conclusion
Flutter 3.29 is a major milestone, bringing better performance, refined UI components, and enhanced developer tools. The community's contributions continue to push the framework forward, making Flutter an even more powerful choice for cross-platform development.
Try out the new features, provide feedback, and share your experiences. The future of Flutter is bright, and we can’t wait to see what you build next! 🚀
For a complete list of changes, check out the official Flutter 3.29 release notes.
Original Published: What’s New in Flutter 3.29
Top comments (0)