Repository navigation
Description
For years, Flutter's Framework team has been reviewing "notable commits" in our weekly staff meeting at Google. The notable commits are a lightly curated list of the pull requests that have landed in the previous week. The goal is to celebrate our progress and the developers who have contributed to that progress. Unfortunately, many of those developers have not been in the weekly staff meeting's conference room, they come from other teams within Google and the wider Flutter community.
Each list typically covers about one week and is not comprehensive. Its focus is on commits to Flutter's framework "flutter/flutter" repo that involved the Framework team as pull-request authors or reviewers. That's not strictly true however, we all contribute to many repos - not the least of which is "flutter/packages" - and you'll find evidence of that here. And not all of the commits listed here necessarily involved someone from the Framework or Engine team. One final observation about the participants in the list below is the large number of contributions that have come from the Flutter community. We are blessed with a an active and generous developer community. Each week's notable commits list is a tribute to everyone who has helped advance Flutter, not just Google's Framework team.

Activity
Piinks commentedon Jan 24, 2026
January 01, 2026 to January 23, 2026
Details
Happy New Year! 🎆 The Flutter team and community have kicked off 2026 with a bang, landing 390 commits in the first few weeks of the year. This report highlights significant improvements in the Cupertino library, new widget capabilities like customizable Hero transitions, and expanded tooling support. We are also incredibly excited to welcome 12 new contributors who have made their first mark on the project!
Framework & Material
#180100 Customizable Hero Transitions
The
Herowidget now supports customizable animation curves, allowing for more expressive and unique shared element transitions.\#181320, #180273 Expansible Widget Enhancements
Added a
togglemethod toExpansibleControllerand introduced comprehensive API samples and documentation for theExpansiblewidget, making it easier to use.#177337, #180724 Cupertino Refinements
CupertinoSheetRoutenow supports native-like scrolling and dragging. Additionally,CupertinoFocusHalonow supports superellipse shapes, matching Apple's design language more closely. 🍏#181074 DropdownMenu Flexibility
Reverted a breaking change to allow
DropdownMenuto support non-nullable types more gracefully, restoring flexibility for developers.#180577 BottomNavigationBar Accessibility
Added semantics labels to
BottomNavigationBaritems, improving the experience for users with screen readers. ♿#180667 CarouselView Control
Introduced
leadingIndextoCarouselControllerand anonItemChangedcallback toCarouselView, giving developers precise control over carousel state.#177678, #180722 RawTooltip
Added
RawTooltip, a lower-level widget with a smaller API surface, providing a foundation for building custom tooltips without the opinionated defaults of the materialTooltip.Engine & Platform
#179219 Android Display Corner Radii
Added support for querying display corner radii on Android, enabling UI adaptations for rounded screen corners.
#180041 Reduced Motion on Web
Implemented support for
prefers-reduced-motionon the web, automatically disabling animations when the user requests it.#175805 Web Template Variables
Added a
--web-defineflag to inject template variables intoindex.htmlduring build time, simplifying environment configuration for web apps. 🌐Tooling & Ecosystem
#180140 Widget Preview IDs
Registered DTD streams and services now include a UUID, improving the reliability of the Widget Preview feature in IDEs.
#177888 Auto-Generated ExportOptions
The Flutter tool now auto-generates
ExportOptions.plistfor manual iOS code signing, streamlining the build process for iOS developers.#180689 Feature Flags Manifest Logic
Fixed logic to correctly locate the project root when searching for the FeatureFlags manifest, improving robustness of the tool.
First-time Contributors
A massive welcome to our 12 new contributors! 🚀 Your contributions are vital to the health of the project.
RenderSliver.getMaxPaintRect.RouteSettingstoshowCupertinoSheet.Piinks commentedon Feb 6, 2026
January 24, 2026 to February 06, 2026
Details
This week, 12 new contributors joined us for a total of 214 changes. We are marching towards 3.41.0 with significant macOS improvements, new Cupertino widgets, and better tooling!
Framework & Widgets
#174695 Cupertino apps get a native-style menu system with the new
CupertinoMenuAnchorwidget. 🍎#176494
MenuAnchornow supports Material Design 3 animations, making menus feel more responsive. ✨#181455
AnimatedCrossFadegains anonEndcallback, perfect for chaining animations.#177895
SizeTransitionnow supports analignmentproperty, giving you more control over the animation origin.#177220 Designers will love the new
RoundedSuperellipseInputBorderfor smoother, more organic shapes. 🟢#181373
DropdownMenuFormFieldnow exposes more customization options like leading/trailing icons and focus nodes.#181475
ThemeModenow has cleanerisDark,isLight, andisSystemgetters.#180752 Easily clear form errors without resetting values using the new
clearErrorAPI onFormFieldState.Platform (macOS & Android)
#181769 macOS apps now support the Display P3 wide color gamut, ensuring vibrant and accurate colors. 🎨
#180895 Native tooltip windows are now implemented on macOS.
#181124
FlutterFragmentnow supports Android's predictive back gesture. 🔙#180287 Fixed a macOS issue where old windows would persist after a hot restart.
Tooling & Ecosystem
#180531 The minimum required Xcode version is now 15, with Xcode 16 recommended. 🛠️
#181533 Debug symbols are now split into separate
.dsymfiles for native assets on macOS and iOS, reducing app size.#181884 The web hot reload flag is deprecated as it is now enabled by default.
First-time Contributors
We welcome 12 new contributors this week!
ThemeMode.WidgetTesterCallbackfor clarity.alignmentproperty toSizeTransition.MediaQueryDatatoOverlayPortal.Piinks commentedon Feb 20, 2026
February 07, 2026 to February 20, 2026
Details
A total of 211 changes were merged to the framework, engine, and packages since the last report.
Framework
TabBarScrollControllerto theTabBarwidget, allowing for more granular control over tab scrolling and programmatic synchronization with other scrollable components. 🖱️Stepperwidget now supportsheaderPaddingandcontentPaddingproperties, enabling developers to fine-tune the layout and spacing of their stepped processes for better visual alignment. 📏ignorePointerproperty has been added toRawTooltip, giving developers the ability to control whether tooltips should be transparent to hit testing, which is particularly useful for overlay management. 🎯ScrollCacheExtentclass to modernize how cache extents are specified and fixes a critical bug whereshrinkWrap: truecould cause applications to crash due to invalid cache calculations. 🛠️Scaffoldhandles status bar tap events on iOS by performing a hit-test before scrolling, fixing a potential crash when multiple scaffolds are present. 📱coloranddecorationto a widget, explaining that one is a shorthand for the other and how to fix the conflict. 💡Web
--web-defineflag is now correctly respected duringflutter build web, ensuring that custom environment variables are properly substituted inindex.htmlandflutter_bootstrap.js. 🌐aria-description, ensuring that users of assistive technologies receive immediate feedback when form fields contain errors. ♿Tool
flutter build swift-packagecommand has been introduced to help developers create a Swift package for embedding Flutter apps into native iOS/macOS applications, simplifying the "Add-to-App" workflow. 🚀flutter running-appscommand uses mDNS to discover and list all currently running Flutter applications on the network, making it easier to manage multiple debug sessions. 🔍UIScenewarnings and provides a guided message to help developers migrate their applications to the modern iOS lifecycle.Platform
CheckStateAPIs introduced in Android API 36, ensuring accurate state reporting for checkboxes and switches. 🤖Engine
getUniformMatXandgetUniformMatXArrayon desktop and mobile platforms, enabling more complex custom shaders and visual effects. 🎨First-time Contributors
Welcome to 13 new first-time contributors!
DateRangePickerignoredDatePickerTheme.dayShape.textInputPlugininFlutterView.AlignmentGeometrysupport inExpansionTile.Stepperwidget.--web-defineflag in web builds.Piinks commentedon Feb 28, 2026
February 21, 2026 to February 27, 2026
Details
This week saw 182 changes land in the Flutter repository, including several highly requested features and developer experience improvements that are expected to be part of the upcoming 3.34.0 release. We are especially excited to welcome 11 first-time contributors to the project!
Framework
Textwidgets with asemanticsIdentifiercreate their own semantic element instead of being absorbed by ancestors likeDialog, improving accessibility auditing.SizedBox.square()constructorSizedBox.square()constructor for creating square boxes with a singledimensionparameter. 📐StretchingOverscrollIndicatorwhen it is disposed or used in a zero-size environment.Material
RawAutocompletethat occurred when attempting to hide an options view that was already hidden.MenuAnchorto respect software keyboard constraints, ensuring menus are not obscured by the keyboard. ⌨️WidgetStatesControllersupport toExpansionTile, allowing developers to listen to and control its interactive states.ModalBottomSheetentrance and exit animations usingAnimationStyle.CarouselViewto useCustomScrollViewunder the hood, enabling better integration with other slivers.Impeller & Graphics
float32inImage.toByteData(), enabling higher precision image processing.Tooling & Platforms
arm64if dependencies require it when using Xcode 26, ensuring smoother builds on the latest Apple tools.awaitingFuturereturns insideasyncbodies withintryblocks.fl_view_new_sized_to_content()for Linux, allowing views to automatically size themselves based on Flutter's content.flutter precache, showing exactly what's being downloaded and how much is left. 📦First-time Contributors
A big welcome to our newest contributors!
positionInlineChildrenassertion.RawAutocompletecrash.WidgetStatesControllersupport toExpansionTile.Piinks commentedon Mar 6, 2026
February 27, 2026 to March 06, 2026
Details
This week saw 116 commits land in the Flutter repository. Highlights include major performance improvements for large pinned tables, native desktop windowing for dialogs, and the activation of Swift Package Manager by default on master and beta channels. We also welcomed five first-time contributors to the project!
Framework
#181861 Native desktop windowing for dialogs
A new
useWindowingflag inMaterialAppenablesshowDialogto open content in a separate, native desktop window on supported platforms, providing a more platform-integrated experience. 🪟#180563 Performance boost for large pinned tables
Scrolling in
TableViewwith pinned rows or columns is now significantly smoother thanks to an optimized layout logic that only processes visible children. ⚡#181326 Display corner radii support for predictive back
Predictive back transitions on Android 12+ now respect the device's actual display corner radii, ensuring a seamless and modern feel during navigation. 📱
#180753 Improved focus highlight mode on Android
Flutter now correctly identifies key events from Android software keyboards, preventing them from incorrectly triggering traditional focus highlights and preserving the touch-first UX. ⌨️
#181795 Fixed semantics identifier absorption
Text.semanticsIdentifieris now correctly isolated in its own semantic node, preventing it from being absorbed by ancestor nodes and improving the reliability of accessibility testing. 🔍#182331 Optimized Scaffold FAB animations
A targeted refactor in
Scaffoldreduces unnecessary work during Floating Action Button transitions, improving performance during common layout animations. 🚀API & Architecture
#182934 Mixed color space support in Color.lerp
Interpolating between colors in different spaces (like sRGB and Display P3) now automatically converts to the wider gamut, ensuring accurate and vibrant color transitions. 🎨
#182791 New VM services for accessibility evaluation
Added new VM service extensions that allow developers to trigger automated accessibility audits, paving the way for better integrated A11y testing tools. ♿
#182847 Float32 support for Image.toByteData
High-precision image data can now be exported in float32 format in the Impeller backend, enabling advanced rendering and compute workflows that require high dynamic range. 🖼️
Platform & Tooling
#165323 Stylus support on Windows
Windows applications now correctly identify and handle stylus input as a distinct device kind, supporting pressure sensitivity and other stylus-specific data. 🖊️
#182923 SwiftPM enabled by default
Swift Package Manager is now the default dependency manager for iOS and macOS projects on the master and beta channels, simplifying the plugin ecosystem. 📦
#182506, #182394, #182375 Enhanced SwiftPM migration guidance
New warnings and detailed diagnostic messages provide clear, actionable steps for developers when plugins or projects require migration to Swift Package Manager. 🛠️
#182826 UIScene migration warnings for iOS plugins
The engine now warns developers when iOS plugins have not yet migrated to the modern
UIScenelifecycle, ensuring better long-term platform compatibility. 🍎#183187 Fixed perspective shadows in Impeller
Convex path shadows now render correctly under perspective transformations in the Impeller backend, fixing long-standing visual artifacts. ✨
#181402 New diagnostic for invisible ink splashes⚠️
A new debug-mode assertion warns developers when a
ListTileis wrapped in a way that would hide its background or ink splash effects, preventing silent UI issues.First-time Contributors
Welcome to the Flutter community! We’re thrilled to have your first contributions land this week:
maskValueforTextDecorationand makes the class final.settings.gradle.ktstemplate for better compatibility.TableViewwhen using pinned rows or columns.Piinks commentedon Mar 13, 2026
March 06, 2026 to March 12, 2026
Details
This week in Flutter, we saw 105+ commits landing in the repository, with a major focus on accessibility and foundational work for advanced window management. We are also excited to welcome one new contributor!
Accessibility
This change adds support for a new accessibility event in Android 16, ensuring that checkboxes and switches announce their state changes (checked, partially checked, or unchecked) more accurately for users of screen readers. ♿️📱
Framework & Core
#182903 New SatelliteWindowController interface for advanced window management
Introduces the
SatelliteWindowControllerandSatelliteWindowwidget, laying the foundation for sophisticated multi-window support and advanced desktop windowing capabilities in Flutter. 🛰️🪟#180411 New scrollCacheExtent property for PageView
Allows developers to specify a cache extent for
PageView, enabling pre-rendering of off-screen pages to ensure smoother swiping and transitions. 🏎️📄https://github.com/user-attachments/assets/4f99875d-05f9-4224-a203-5b1d9274f7c9
#180375 Optimized semantics calculation with geometry dirty nodes
Improves performance by tracking "geometry dirty nodes," allowing Flutter to recalculate only the necessary parts of the semantics tree when layouts change, rather than clearing the entire geometry from the updated node to the nearest boundary. ⚡️🔍
Tooling & Platform UX
#181889 Shader support for asset transformers
Brings shader compilation closer to the existing asset model by allowing
transformersto be declared for shader entries inpubspec.yaml. This ensures that transformed shader sources are consistently used during builds and hot reloads. 🛠️✨#182661 Fixed keyboard flicker when switching focus on iOS
Addresses a long-standing issue where the keyboard would briefly dismiss and reappear when switching focus between multiple text fields on iOS, providing a much smoother user experience. ⌨️🍎
https://github.com/user-attachments/assets/751dd6b9-cfc0-401c-a924-c359ae5bc179
#183593 Fix for macOS plugin relative paths in Xcode
Fixes a build-time regression where relative paths for macOS plugins in Xcode were incorrectly calculated, ensuring more reliable builds for macOS desktop applications. 🏗️🖥️
#182643 Superellipse clipping support for backdrop filters
Implements
ClipRSuperellipsefor backdrop filters on platform views, allowing developers to use modern, smooth rounded corners (superellipses) in their designs. 🎨📐Material Design
Ensures that context menus and other positioned menus begin their opening animation directly from where the user clicked, rather than from a fixed anchor point, resulting in a more natural and responsive feel. 🖱️📍
https://github.com/user-attachments/assets/52597be3-2bfe-441c-a924-c359ae5bc179
Engine & Performance
#180072 GLES3 shader support for Impeller Linux and custom embedders
Enables the use of GLES3 shaders in the Impeller engine for Linux and other custom embedders, improving rendering capabilities and performance on supported hardware. 🚂🐧
#182963 Fix for Android plugin auto-registration race condition
Corrects a timing issue in
FlutterFragmentActivitywhere plugins could incorrectly attempt auto-registration during activity recreation, leading to more stable plugin lifecycles on Android. 🤖🩹Documentation & Policy
Adds clear expectations and documentation regarding the use of AI tools when contributing to the Flutter repository, ensuring high standards for code quality and ownership. 📝🤖
First-time Contributors
We are thrilled to welcome a new contributor this week!
Piinks commentedon Mar 20, 2026
March 14, 2026 to March 20, 2026
Details
This week, the Flutter community landed 129 changes, moving us toward the upcoming 3.44.0 release. We are thrilled to welcome 7 first-time contributors! This week's highlights include significant accessibility improvements, more flexible desktop windowing, and a smoother developer experience across all platforms.
Framework & Widgets
Web scrolling is now more reliable and less likely to "swallow" events, ensuring that pointer signals are only handled when necessary and allowing the browser to perform default actions. 🖱️
App performance and code consistency get a boost by favoring
const BorderRadius.alloverBorderRadius.circular, enabling more widespread use of constant constructors. 📐Bottom sheets now animate more smoothly even when interrupted by user interaction, fixing a visual glitch during transitions. 📉
NavigationRailis now more flexible on large screens, allowing developers to customize how destinations are distributed vertically using standardMainAxisAlignment. 📏Accessibility
Developers can now automatically verify that non-text controls, like icons and buttons, meet accessibility color contrast standards with a new evaluation tool. 🎨
Accessibility for screen reader users is improved by ensuring that the "expanded" state of popup and dropdown menus is correctly updated and announced. 🔊
Tooling & Platform
Desktop developers can now create undecorated windows, enabling more flexible and custom UI designs where Flutter renders all window decorations. 🖼️
The Widget Inspector now correctly respects system safe area insets, ensuring that control buttons remain accessible and visible on devices with notches or gesture navigation. 🛡️
Android builds are more future-proof as the Flutter tool has migrated profile build type creation and ProGuard configuration to the modern Android Gradle Plugin DSL. 🤖
Plugin authors will now receive helpful prompts to ensure their plugins are compatible with Swift Package Manager, streamlining dependency management for iOS and macOS. 📦
Native plugin development is now more powerful as plugins can now easily communicate and access registered instances of other plugins on both Android and iOS. 🔗
Integrating Flutter into existing iOS apps is now easier and more secure with automatic code-signing for XCFrameworks, meeting modern Apple privacy requirements. 🔐
iOS developers using AdMob will see improved scrolling performance and stability in lists on iOS 18.2 thanks to refined WebView detection. 📱
Multi-window support on Linux is now more robust with the addition of a dedicated platform OpenGL context, preventing shader compilation failures. 🐧
Engine & Graphics
Graphics on the web take a leap forward with new MSAA (Multi-Sample Anti-Aliasing) support in Impeller, resulting in smoother edges and reduced aliasing. ✨
Android users will experience fewer visual glitches and better stability thanks to a fix for a race condition during surface resizing and viewport metric updates. 🏎️
First-time Contributors
Welcome to our newest contributors! We're excited to have you as part of the Flutter community.
flutter downgrade.Piinks commentedon Mar 27, 2026
March 21, 2026 to March 27, 2026
Details
Another productive week for Flutter, featuring improved desktop startup smoothness, expanded Windows ARM64 support, significant tooling enhancements for artifact downloads and web development, and important accessibility fixes for both Web and Android. This week saw a total of 106 commits from 37 contributors.
Framework & Widgets
#183454 Show windows only after the first frame is ready
Ensures Flutter windows on desktop only become visible after the first frame is fully rendered, preventing a flash of uninitialized content during app startup. 🖼️
#183963 Migrate Material examples to use dot shorthand syntax
Updates many framework examples to utilize Dart's new dot shorthand syntax for improved readability and more concise code. ✨
#184078 Pipe ScrollCacheExtent through more scroll views
Exposes the
cacheExtentproperty on additional scrollable widgets likeListView.customandGridView.custom, enabling more consistent performance tuning across the framework. 🏎️#184083 Ensure SelectableRegion passes constraints to children unmodified
Fixes a bug where
SelectableRegionon the web would cause children to shrink by incorrectly loosening layout constraints, ensuring consistent layout across platforms. 🕸️#183109 Add scrollPadding property to DropdownMenu
Adds
scrollPaddingtoDropdownMenuto matchTextFieldbehavior, allowing developers to control the spacing around the menu when it scrolls into view, such as when the on-screen keyboard appears. ⌨️#182991 Correctly dismiss Slider value indicators
Fixes a bug where custom Slider value indicators would remain visible after an interaction was completed. 🎚️
#181345 Mark IconData as final and mustBeConst
Enhances type safety and enables more effective icon tree shaking by enforcing that
IconDatainstances are immutable and defined as constants. 🛡️Engine & Performance
#184096 Optimize simple shape path logic in Impeller
Improves Impeller performance by moving simple shape path optimization logic earlier into the display list builder, reducing overhead during rendering. ⚡
#184037 Fix Gaussian blur clipping with negative scales in Impeller
Resolves a rendering issue where Gaussian blurs could be incorrectly clipped when applying a negative scale (such as during a mirroring transformation). 🌫️
#184131 Use atomic writes for engine stamps
Prevents potential race conditions during the Flutter build process by ensuring engine stamps are written atomically to the file system. 🏗️
Tooling & Platform
#183724 Filter out extension processes during LLDB attachment on iOS 17+
Fixes an issue where
flutter runon iOS 17+ could hang by attempting to attach the debugger to an embedded extension (like WidgetKit) instead of the main application process. 📱#176385 Restore Windows ARM64 support on beta and stable
Re-enables Windows ARM64 engine builds for the beta and stable channels, now that full ARM64 support is available in the stable Dart SDK. 💻
#182709 Add base-href support to flutter run for web
Simplifies development for web applications hosted in subfolders by bringing the
--base-hrefflag to theflutter runcommand, matching the existing functionality influtter build web. 🌐#182836 Add visual progress bar to artifact downloads
Introduces a much-requested visual progress bar, including download speed and ETA, when the Flutter tool downloads engine artifacts and other dependencies. 📥
Accessibility
Ensures that Flutter's progress indicators are correctly identified as progress bars by Android TalkBack, providing a more accurate experience for users of assistive technology. ♿
First-time Contributors
Welcome to our newest contributor!
Piinks commentedon Apr 3, 2026
March 28, 2026 to April 03, 2026
Details
The Flutter repository has been busy this week with 141 changes from 37 contributors. We are excited to welcome 4 new contributors this week!
Framework and Widgets
#182009 Add alwaysSizeToContent argument to Overlay.
alwaysSizeToContentoption toOverlay, providing more flexibility for sizing overlays based on their content even within finite constraints. 🖼️#175710 feat: add infinite carousel support
#184421 Fix line breaks being lost when copying after selection gesture in SelectableRegion
SelectableRegionby ensuring line height calculations include newline character regions, fixing issues where copying text lost line breaks. 📋Desktop and Platforms
#182348 Implement tooltip windows on Linux
#182371 Implement popup windows for macOS
#175406 [Windows] Restore and enable IAccessibleEx implementation
IAccessibleEx, allowing UI automation tools to better identify and interact with Flutter widgets. ♿️#183072 [Android] Use EdgeToEdge.enable/WindowCompat for edge-to-edge mode instead of deprecated View flags
#183650 [ios] Add opt-in inline prediction text input support
Web
Tooling and DX
#184518 [ Widget Preview ] Handle collections and records in custom preview annotations
@Previewannotations. 🚀#184473 [ Widget Preview ] Use analysis server for widget preview detection
#183785 [ Tool ] Migrate
flutter analyzeto use LSPflutter analyzecommand has been migrated to use the Language Server Protocol (LSP), ensuring more consistent and efficient analysis. 🔍#183668 Add plugin version to SwiftPM package symlink directory
#184495 Enable SPM by default on Stable
#183747 Warn about slow SwiftPM downloads and centralize SwiftPM cache
#184219 Improve error message when
dart-definecontent are notbase64 encodedand add more test casesdart-definevalues are incorrectly formatted. 🛠️Engine and Rendering
First-time Contributors
Welcome to our newest contributors!
13 remaining items
Piinks commentedon Aug 17, 2026
August 08, 2026 to August 14, 2026
This week, 158 commits landed in the Flutter repository.
A special welcome to our newest contributor!
Below are the notable changes that landed this week:
Accessibility
Fixes map mutability issues in the accessibility inspector service extension, preventing runtime modification errors when inspecting semantics trees during debugging sessions. 🔍♿
Framework & Core Libraries
Enables
RawTooltipto dynamically respond toAnimationStyleupdates and properly applyreverseCurveanimations during dismissal, providing smoother and more customizable tooltip transitions. 🎨✨Ensures
Toggleablewidgets (such as Checkbox, Radio, and Switch components) respect custom reaction animation durations and curves, giving developers finer control over interaction timing and feedback. 🔘⚡Resolves a critical routing bug where popping multiple routes using
popUntilWithResultwould unintentionally discard the returned result, ensuring navigation results are reliably passed back to caller routes. 🧭📦Engine & Performance
ClipPathoptimizations to backdrop clips as wellExtends
ClipPathgeometry optimizations to backdrop filter clips, reducing unnecessary render rasterization and compositor workload when applying blur or filter effects to custom clipped shapes. ⚡✂️Web Platform
Ensures system mouse cursor updates apply across all active web views in multi-view web applications rather than just the primary view, eliminating frozen or unresponsive mouse cursor styling across secondary windows and embeds. 🖱️🌐
Synchronizes the
flutter-first-framebrowser event with completion of web scene rasterization, preventing premature HTML splash removal and eliminating blank frame flashes on startup under SkWasm and CanvasKit. 🌐🎬Unifies underlying
MaskFilterandColorFiltergraphical primitives into shared Web engine abstractions, ensuring identical shader and blur behavior across CanvasKit and Skwasm renderers. 🎨🌐Android Platform
Safely catches
NoSuchFieldErrorexceptions when querying system bold text accessibility settings on modified or non-compliant Android vendor ROMs, preventing app startup crashes. 🤖🛡️Offloads package manager querying and APK label resolution in
ProcessTextPluginto a backgroundTaskQueue, preventing main-thread binder stalls and Android ANRs when opening text selection menus. 🤖⚡Tooling & Developer Experience
Introduces the
--[no-]xcode-cleanoption toflutter clean, allowing developers to skip slow Xcode DerivedData workspace purging for significantly faster daily cleaning cycles. 🍎🧹Adds actionable warnings and diagnostic guidance when Flutter tooling cannot locate iOS device support symbols in Xcode, speeding up troubleshooting for physical device debugging. 📱🔍
Automatically raises legacy CocoaPod pod deployment targets to match Xcode's minimum supported deployment version during iOS/macOS builds, preventing build failures on newer Xcode toolchains. 🛠️🍏
Adds the
--presetoption toflutter test, allowing developers and CI pipelines to execute predefined test configurations declared indart_test.yaml. 🧪📋Updates
icon_tree_shakerto completely eliminate Material and Cupertino font assets when an application uses zero icons from those families, further reducing output app bundle sizes. 🌲📦flutter_analyzer_plugin#175679)"Lands the new
flutter_analyzer_pluginfoundation, enabling custom Dart analysis server rules and specialized diagnostics directly tailored for Flutter projects. 🔎🚀Fixes a thread deadlock in Debug Adapter Protocol (DAP) handlers when a debuggee process exits prematurely, ensuring IDE debugging sessions terminate cleanly without hanging. 🐞⚡
First-time Contributors
We would like to extend a warm welcome to our new contributor this week! Thank you for your impactful contribution:
justinmc commentedon Aug 21, 2026
August 14, 2026 to August 21, 2026
This week, 109 commits landed in the Flutter repository.
A special welcome to our new contributors: @sawirricardo, @Boulea7!
Below are the notable changes that landed this week:
Framework & Core Libraries
Adds a convenient
useLogicalPixelsoption toResizeImage, allowing developers to easily size image caches in logical pixels without worrying about device pixel ratio math. 🖼️📐Provides precise, structured error states when
dumpsys meminfofails, giving developers clearer guidance when investigating memory usage on Android devices. 🧠💡Native support for the numeric-password input variation across platforms, making simple PIN code input fields a breeze! 🔢🔑
Engine & Performance
Resolves rendering artifacts when drawing heavily-stroked circles in Impeller, improving our vector tessellation quality. ⭕️🔧
Web Platform
Resolves HTML custom element sizing bugs where Web platform elements wouldn't respect layout constraints, ensuring a robust integration layout. 🌐📏
Eliminates letter jittering and unwanted subpixel text stretching on the Web platform, significantly boosting typography crispness! 📝✨
Android Platform
Completely eliminates the pesky 1-pixel edge clipping rounding error in Android Platform Views. 📱🎯
--enable-software-renderingin the embeddingThe software rendering flag is now fully respected by the Android embedding, resolving unexpected behaviors on devices requiring GPU fallbacks. 🤖⚙️
Desktop Platforms
Improves accessibility on the Linux desktop environment by ensuring heading syntax is properly parsed by the AtkText interface for screen readers. 💻♿
Smooths out size constraints and placement offsets for Linux popups, letting them gracefully fit all system viewpoints. 💬🐧
Softens Linux compositor requirements so aging GPU hardware without precise framebuffer blitting extensions can still power a Flutter interface. 🖥️🎨
Preemptively adapts code to appease macOS 15.4 compiler constraints and tightens VSYNC tracing metrics. 🍎🛠️
Tooling & Developer Experience
Ensures that script-based locales (like
zh-Hant) correctly preserve translation inheritance, saving developers from copying fallback translations multiple times! 🌍🔄The Web resident runner now gracefully catches unexpected toolchain port closures, instead of crashing the process abruptly. 🏃♂️🛡️
Polishes the debugging workflow by handling errors defensively when Chrome spawns, meaning smoother DevTools launches. 🔎🐛
First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
justinmc commentedon Aug 28, 2026
August 21, 2026 to August 28, 2026
This week, 150 commits landed in the Flutter repository.
A special welcome to our new contributors: @shawnridgeway-google!
Below are the notable changes that landed this week:
Framework & Core Libraries
This fixes a scrolling issue where revealing pinned slivers could jump or calculate positions incorrectly. Now, pinned elements reveal with smoother, more natural calculations using the leading scroll offset instead of defaulting to infinity. 📌✨
ScrollPhysics is now fully reactive! By introducing
shouldUpdate, the framework smartly determines when physics need to be rebuilt, reducing unnecessary rebuilds and making scroll behaviors much more responsive to state changes. ⚙️⚡️The
prompt_suggestionicon now properly mirrors itself for users in Right-to-Left (RTL) languages. This ensures accessibility and proper layout are maintained for international users! 🌐⏪Navigator.pushNamed<T>()type checkingType safety for named routes has been improved! The
Navigator.pushNamed<T>()method now accurately performs type checking, preventing runtime mismatches when working with returned route arguments. 🛡️🧭Resolved an issue where a missing window title could cause unexpected behavior on windowing environments. Flutter now gracefully handles these cases, ensuring stable window rendering under all configurations! 🪟🔧
Animations between HSV and HSL colors are now visually seamless! The interpolation logic has been updated to traverse the shortest angular path on the color wheel, eliminating awkward, long-way-around color transitions. 🎨🌈
Engine & Performance
A rendering fix for complex visual effects—bounded blurs that are translated no longer produce visual artifacts or clipping! Shadows and blurs now render accurately even when moved. 🌫️✨
Desktop Platforms
Fixed a critical crash on macOS caused by invalid text input ranges during IME tracking. Text input on desktop is now more stable and resilient. 📝💥
Windows has officially been transitioned to use OpenGL ES 3! This paves the way for better graphics support and performance improvements on Windows desktop targets. 🖥️🎮
Multisample anti-aliasing (MSAA) is back and working correctly on the Linux embedder! Your desktop apps will look crisp and have smooth edges once again. 🐧📐
Introduced a new subsurface view renderer variant (
FlViewRendererSubsurface) for Linux. This gives embedders more robust control over window surfaces, improving layering and rendering pipelines on desktop! 🖼️🔧Tooling & Developer Experience
Running Flutter tools on highly-secured Windows environments just got easier. The tooling now detects and gracefully handles scripts or executables blocked by Windows Application Control policies. 🛡️💻
You can now bypass the default ADB log filtering when running apps on Android! Passing
--no-adb-log-filteringensures that you'll see every granular log message on your device, a huge win for deep debugging. 📱🔎Internationalizing paths on Windows is now fully supported. By wiring up UTF-8 processing in filesystem APIs, Flutter now gracefully handles paths with non-ASCII characters directly at the engine level! 📂🌐
Switching channels when you have local modifications is now a breeze! You can use
flutter channel <name> --forceto instantly discard uncommitted changes and forcefully change your Flutter SDK channel. 🔄🔥No more opaque "SOCKET" connections in the Network panel. Now WebSockets are fully supported and give all the details you'd expect.
First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
justinmc commentedon Sep 4, 2026
August 28, 2026 to September 04, 2026
This week, 118 commits landed in the Flutter repository. A special welcome to our new contributors: @ibrahimcetin, @AllinGaming, @papmodern, @anazr9, @AfzalivE, @ik020! Below are the notable changes that landed this week:
Framework & Core Libraries
Introduces a placeholder feature for DecorationImage for smoother loading states. 🖼️⏳
Adds a new transition option to cross-fade images seamlessly over their placeholders. 🌅✨
Custom mouse cursors are now supported on RawScrollbar for better hover feedback. 🖱️🎨
Engine & Performance
Corrects text deletion logic so it no longer splits emojis and other UTF-16 surrogate pairs. 📝✂️
Resolves rendering artifacts where styled shapes would get abruptly clipped when rotated and blurred. 🎨✨
Optimizes backdrop grouping to operate on their union, improving rendering performance and accuracy. 🖼️🏎️
Web Platform
Improves Web accessibility by ensuring VoiceOver correctly navigates child focus directions. 🌐🗣️
Fixes subtle semantics offset issues in WebKit browsers by properly resetting the anchor. 🍏🔗
Android Platform
Prevents the engine from scheduling frames after detachment, improving app lifecycle stability on Android. 🤖🛑
iOS Platform
Enhances iOS text entry by correctly supporting accented characters typed from external hardware keyboards. ⌨️🍏
Resolves corrupted bounds for semantics within OverlayPortal, enhancing screen reader accuracy. 🗺️🗣️
Desktop Platforms
Fixes a potential null-dereference crash when updating popup positions on Windows desktops. 🪟💥
Tooling & Developer Experience
Improves the web developer experience by holding server requests during the initial compile, preventing premature load failures. 🌐⏳
Fixes the flutter doctor Android SDK license verification for newer cmdline-tools versions. ⚕️✅
First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
Renzo-Olivares commentedon Sep 11, 2026
September 04, 2026 to September 11, 2026
This week, 98 commits landed in the Flutter repository toward the upcoming Flutter 3.48 release. A special welcome to our new contributors: @Shawn-Yu-Dev and @serhii-k! Below are the notable changes that landed this week:
Accessibility
Sized semantic
<input>and<textarea>elements to 16px to prevent iOS Safari from automatically zooming into the page when focused text fields are tapped. 📱✨Removed the temporary
isAccessibilityEvaluationsEnabledruntime flag and tool option now that accessibility evaluations are supported outside of debug mode by default. ♿🎉Framework & Core Libraries
Added
itemExtentBuildersupport toListView.separated, enabling dynamic, index-based item extent calculation alongside separators for optimized scrolling performance. 📜⚡Introduced Linux-specific window controls enabling custom decorations, background coloring, transparent surfaces, and programmatic dragging and resizing. 🐧🪟
Introduced
precacheTestImageinflutter_testto safely resolve image providers outside theFakeAsynczone and eliminate test hangs in web environments. 🖼️🧪Web Platform
Retained
ImageSourcereferences until canvas picture disposal in CanvasKit and Skwasm, preventing premature DOM texture closure and black rendering artifacts. 🌐🎨Android Platform
Encapsulated Android 14 (API 34) contrast change listeners within an isolated static helper to prevent class verification warnings and crashes on older Android versions. 🤖🛡️
iOS Platform
Updated iOS
FlutterEngine.run*methods to returnNOand safely no-op when invoked on already running or terminated engine instances. 🍏🛑Desktop Platforms
Added support for auto-sizing regular and dialog windows to their content on macOS and delayed window presentation until initial frame rendering. 💻✨
Tooling & Developer Experience
flutter create --platformsfrom dropping existing platformsFixed an issue where running
flutter create --platformson an existing project overwrote configured platforms in.metadatainstead of appending new ones. 🛠️📦Added the
--web-content-hashflag toflutter build web, generating content-hashed filenames for entrypoint scripts to enable seamless browser cache busting. 🌐🚀Enabled local golden file testing for Flutter Web within
flutter test, downloading Skia Gold baselines and performing tolerance-aware pixel comparisons locally. 🏆🧪Added validation for placeholder type strings in
.arbfiles to catch invalid Dart type identifiers early and provide actionable error messages. 🌍🔍Improved Flutter CLI resilience by catching and reporting clear, actionable error messages when encountering read-only file systems or sandbox permission restrictions. 🛡️💾
Ensured the web loading indicator remains visible until the Flutter application is actually compiled and running, rather than hiding prematurely upon debug client connection. ⏳🌐
Raised the minimum iOS deployment target for Dart Native Assets to iOS 15 in alignment with modern platform requirements. 📱⚙️
Fixed unnecessary Wasm rebuilds during
flutter runcaused by compiler option mismatches, and added proper HTTP 404 responses for missing web assets. ⚡🌐First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
flutter create --platformsfrom dropping existing platforms in.metadata.justinmc commentedon Sep 25, 2026
September 11, 2026 to September 18, 2026
I generated this whole report and forgot to post it last week. Here it is a week late. A special welcome to our new contributor @artemkulyk. Below are the notable changes that landed this week:
Framework & Core Libraries
FocusScopeinWidgetsApp.routerRouter-based apps (
MaterialApp.router,CupertinoApp.router) were missing the Navigator focus scope that imperative-routing apps get, which broke focus and semantics for overlays likeAutocompleteon the web. Focus behavior is now consistent no matter which routing API you use. 🎯The Material and Cupertino localization classes in
flutter_localizationsare now deprecated in favor ofpackage:material_uiandpackage:cupertino_ui, withdart fixmigrations included so the move is a one-command upgrade. A key step in the Material/Cupertino decoupling effort. 🧭Cupertino (iOS-style)
BouncingScrollPhysicsOverscroll snap-back now uses a dedicated rubber band spring, making bounce-back feel much closer to native iOS instead of the old, slower settle. Scrolling just got noticeably more polished. 🍎✨
Engine & Performance
Rounded clips (such as
CupertinoSheetRoute) could render with square corners when combined with intermediate ink features and backdrop content. Corners stay round again, fixing a visible glitch in sheet-based UI. 🔵std::functioncaptures per drawUberSDF and circle contents were heap-allocating a callback capture on every single draw. Switching to capture-by-reference removes those per-draw allocations, trimming raster-thread overhead for free. ⚡
Web Platform
Web text now snaps to whole device pixels and gets antialiasing padding, eliminating blurry text and clipped descenders on CanvasKit while keeping raster caching effective. Crisper type on the web. 🔤
On iOS 27, long-press-dragging the caret in a web text field would dismiss the keyboard mid-gesture. Text selection on mobile web now behaves the way users expect. ⌨️
Shift-scrolling on macOS browsers was double-flipping the scroll axis, so web apps behaved differently from native macOS. Modifier-key scrolling is now consistent across platforms. 🖱️
Android Platform
_PlatformViewGestureRecognizerrejects gesturePlatform views now ask Android for the unbuffered touch stream once the gesture arena hands the gesture back to Flutter, greatly improving the smoothness of scrolling over embedded native views — with no API change. 🏎️
activity-aliasin Android launcher activity detectionApps that expose their launcher through an
activity-alias(common for dynamic app icons) are now detected and launched correctly by the tool, closing a long-standing issue from 2019. 🚀iOS Platform
Lands the engine-side plumbing for Apple's Translate API, paving the way for system translation of selected text in Flutter iOS apps. 🌍
Desktop Platforms
Tooltips and popups rendered as black boxes on Wayland, and resizing a popup could even crash the compositor. Both the stale-buffer and destroyed-surface bugs are fixed, so Linux desktop apps look right again. 🐧
Tooling & Developer Experience
The repo now builds against Dart 3.13 and the CI formatting check is back on after a repo-wide reformat, keeping the tree consistently formatted going forward. 🧹
app.restartuntil the app has finished startingAn
app.restartarriving right afterapp.startcould crashfrontend_serverand leave the app unable to launch. IDE-driven restarts now wait for startup to complete, removing a frustrating race. 🔁flutter createtemplates tomaterial_uiNew projects generated by
flutter createnow importmaterial_uiinstead offlutter/material.dart, moving the default developer experience onto the decoupled Material package. 🏗️-dflag after interactive device selectionAfter picking a device from the prompt, the tool now tells you exactly how to skip that prompt next time (
-d <device id>). A small quality-of-life win requested since 2020. 💡First-time Contributors
We would like to extend a warm welcome to our new contributor this week! Thank you for your impactful contribution:
justinmc commentedon Sep 25, 2026
September 18, 2026 to September 25, 2026
This week, 115 commits landed in the Flutter repository, 15 in the Flutter website repository, and 8 in the Dart website repository. A special welcome to our new contributors: @shikharish, @nickolasdeluca, @nicolinx, @ahmadwyne, @diegolopezrm, @smocer, and @sanathusk! Below are the notable changes that landed this week:
Accessibility
Pressing the
Escapekey now dismisses any openRawTooltip(andTooltip) before propagating to the focus tree, satisfying WCAG 1.4.13 (Content on Hover or Focus) so keyboard users can easily clear tooltips without triggering underlying shortcuts. ♿⌨️Framework & Core Libraries
TextPainter.computeLineMetricsnow caches offset-adjusted line metrics instead of allocating a new list on every call, fixing broken up/down arrow caret navigation in center- and right-aligned single-line text fields while avoiding repeated allocations. 📝⚡Dragging a text selection handle no longer triggers caret auto-scrolling, eliminating viewport jumping and flickering when adjusting the top handle of a multi-line selection. 🪄
Engine & Performance
Flutter GPU now supports
TextureType.texture2DArraywith per-layer slice addressing inTexture.overwriteandColorAttachment.slice, unlocking multi-layer texture workflows for custom 3D and shader pipelines. 🎨🚀Multi-view apps now skip compositing for views without dirty render objects, and Android external textures mark only their owning
Texturerender object as needing paint rather than scheduling a full engine frame rebuild. 🖥️⚡Grouping multiple
BackdropFilterwidgets with a sharedbackdropKeynow properly reserves depth slots for the layer's child draws, fixing a debug engine crash when rendering content inside grouped backdrop layers. 🛡️The Adreno Vulkan mipmap driver workaround is now scoped only to textures with blit-generated mip chains rather than disabling mip filtering globally, restoring full mipmap sampling for hand-uploaded textures such as Flutter GPU environment maps. 🔍✨
Web Platform
flutter build web --web-content-hashis now publicly available and resolves raw asset keys at runtime through content-hashed manifests, giving web deployments reliable cache busting across all assets, fonts, and third-party plugins. 🌐📦env(safe-area-inset-*)asFlutterView.viewPaddingFlutter Web now preserves
viewport-fit=coverand reads CSSenv(safe-area-inset-*)values intoFlutterView.viewPadding, makingSafeAreaandMediaQuery.paddingOfwork out of the box on notched mobile browsers and standalone PWAs. 📱🌊Android Platform
Newly created Flutter projects now default to Android Gradle Plugin 9.3.1, Kotlin Gradle Plugin 2.4.20, and Gradle 9.5.0, ensuring out-of-the-box compatibility with Android 17 (API 37). 🤖⬆️
Fixes a startup crash on Android API 29+ with Impeller when a plugin synchronously registers an external texture or surface producer during engine attachment. 🔧
iOS Platform
Add-to-app iOS integrations that detach a
FlutterEnginefrom oneFlutterViewControllerand attach it to another now preserve and rebind the accessibility bridge, keeping VoiceOver and Accessibility Inspector working across view controller transitions. 🍎♿Desktop Platforms
Windows desktop apps using multi-window support now properly clean up and recreate views on hot restart while safely deferring
HWNDdestruction. 🪟🔄The Linux embedder now explicitly schedules an engine frame as soon as a view is realized, preventing blank initial windows when frames were rendered before the view was ready to present. 🐧🖼️
Tooling & Developer Experience
Registers the runtime native-assets callbacks required by
DynamicLibrary.codeAsset, enabling Dart FFI packages and Flutter apps to load bundled code assets directly via asset IDs across builds, tests, and hot reload/restart. 🧩⚙️flutter create -t pluginnow scaffolds plugins with type-safe Pigeon interfaces instead of rawMethodChannelboilerplate, and updates generated iOS and macOS plugin tests to Swift Testing. 🐦🛠️flutter analyzenow retains only the latest diagnostics per file when the analysis server and analyzer plugins publish multiple updates, eliminating duplicate lints and errors in CLI output. 🧹flutter doctornow resolves symlinks and directory junctions when checking whetherflutteranddartbinaries belong to the active SDK, eliminating false-positivePATHwarnings for package managers like Scoop. 🩺🔗Documentation and Website
useInheritedMediaQueryremoval breaking change entry and migration guideDocuments the removal of the deprecated
useInheritedMediaQueryparameter acrossMaterialApp,CupertinoApp, andWidgetsApp, along with migration examples for affected apps and tests. 📖🧭Publishes a step-by-step walkthrough on converting a Flutter app to fullstack Dart, sharing models and logic between a Flutter client and a Dart backend. ☕📚
Adds documentation and examples for running remote packages directly from pub.dev with
dart run <package>@[<descriptor>]without needing to globally activate them first. 🎯📄Updates the Dart SDK Windows installation guide with
wingetcommands for installing, upgrading, and uninstalling Dart (winget install --id=Google.DartSDK -e). 🪟📥First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
DynamicLibrary.codeAssetin Flutter.TextPainterto fix vertical caret navigation in aligned single-line text fields.env(safe-area-inset-*)intoFlutterView.viewPaddingon the web.FlutterViewControllerchanges.wingetinstallation instructions to the Dart Windows setup guide.justinmc commentedon Oct 2, 2026
September 25, 2026 to October 2, 2026
This week, 129 commits landed in the Flutter repository, 12 in the Flutter website repository, and 10 in the Dart website repository. Highlights include clearer Widget Preview errors, Android security hardening, a long-standing multi-touch fix for Android platform views, and a refreshed set of animation docs. A special welcome to our new contributors: @tjcGoogle, @kaluli123123, @shikharish, @nickolasdeluca, and @khanak0509!
Below are the notable changes that landed this week:
Accessibility
Sliders now expose a dedicated semantics role, so assistive technologies can identify and announce them correctly across platforms. ♿🎚️
Framework & Core Libraries
TextPainternow caches its offset-adjusted line metrics instead of rebuilding the list on every call. This fixes up/down arrow caret navigation, which broke in non-left-aligned text fields because the editable treated every call as a layout change. ⌨️✨Engine & Performance
Animations whose first frame is opaque but later frames have alpha no longer fail with "Could not getPixels for frame 1". This resolves a five-year-old issue (#85831). 🖼️🎞️
Web Platform
Apps that opt into WebAssembly using
wasmAllowListnow get strict capability checks, and Firefox versions below 147 fall back to dart2js instead of loading an unsupported build. 🌐🛡️Android Platform
A security-focused breaking change: other apps can no longer change a Flutter app's Dart entrypoint or engine arguments by sending it crafted
Intents. Top notification and alarm plugins were checked for compatibility. 🔒🤖flutter run --release --use-application-binaryon Android now fails fast if engine configuration flags are also passed, closing another path for altering release engine behavior. See the breaking change docs. 🔐⚙️When Android reused a released pointer ID, fingers could get each other's coordinates inside platform views like maps and web views. Pointers are now ordered by Android ID, so multi-finger gestures stay accurate. 👆🗺️
Desktop Platforms
A one-field typo fix stops Windows from collapsing every composing range sent by the framework, which improves input for IME-based languages. 🪟🈶
Tooling & Developer Experience
Instead of cryptic "infinite width/height" assertions and cascading failures, Widget Preview now explains that previews are unconstrained by default and points you to
@Preview(size: ...). 🔍💡Generated plugin registrants now order plugins by their dependency graph instead of alphabetically, so plugins that depend on others are registered after them. This resolves #99153. 🔌📈
flutter drive -d chromehangingWeb integration tests run with
flutter driveon Chrome no longer hang forever waiting for a browser that WebDriver, not Flutter, is responsible for launching. 🚗🧪DynamicLibrary.codeAssetin FlutterFlutter now registers the native-assets callbacks behind
DynamicLibrary.codeAsset, so you can load code assets from build hooks, with hot reload and hot restart working. 🧩⚡flutter testData assets generated by build hooks are now available in widget tests, matching the behavior of
flutter runandflutter build. 📦✅flutter.js.mapin web buildsWeb builds now ship the loader's source map, which removes a 404 in DevTools and lets error reporters resolve stack frames from
flutter.js. 🗺️🐞Expensive Android SDK filesystem scans no longer run on every tool startup. They now run only when a command actually needs the SDK. 🏎️🛠️
Documentation and Website
The architectural overview, UI pages, widget catalog, glossary, and code examples now reflect Material and Cupertino as separate packages. 📚🧱
Every page under
/ui/animations, including the stale animation tutorial, has updated text, modernized patterns, and tested code excerpts. 🎬📝Migration guidance for the Android engine-flag security changes above. 🤖📖
dart fixrulesExpanded docs show package owners how to ship data-driven fixes so users can migrate across breaking API changes automatically. 🔧🎯
abstract interface classThe class modifiers page and language tour now include copy-pasteable examples showing what
abstract interfaceallows and prevents across libraries. 🎯📘First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
DynamicLibrary.codeAssetsupport to Flutter.abstract interface classexamples to dart.dev.justinmc commentedon Oct 9, 2026
October 2, 2026 to October 9, 2026
This week, 119 commits landed in the Flutter repository, 12 in the Flutter website repository, and 5 in the Dart website repository. Highlights include deprecating the in-framework Material and Cupertino libraries in favor of
material_uiandcupertino_ui, soft hyphen (U+00AD) rendering support with a newHyphensAPI, reduced iOS touch-to-present latency, satellite windows on Win32, and the Genkit Dart 1.0 release announcement. A special welcome to our new contributors: @Jstuff36, @CanArslanDev, @hoyahozz, and @apinilabs-pascal!Below are the notable changes that landed this week:
Accessibility
The widget inspector now exposes accessibility evaluation results—such as minimum tap target and contrast violations—directly on inspected nodes for DevTools. ♿🔍
Semantics fragments now schedule a rebuild whenever their sibling merge conflict state changes, preventing stale cached semantics nodes and broken assertions when sibling configurations update dynamically. 🌳♿
aria-labelto the inner slider input on webOn Flutter web,
SemanticSlidernow forwards itsaria-labelto the inner<input type="range">element rather than only the outer wrapper, giving screen readers like VoiceOver an accessible name for sliders. 🎚️🌐Framework & Core Libraries
package:flutter/material.dartandpackage:flutter/cupertino.dartAs part of decoupling the design libraries from the core framework,
package:flutter/material.dartandpackage:flutter/cupertino.dartare now marked@Deprecatedin favor ofpackage:material_ui/material_ui.dartandpackage:cupertino_ui/cupertino_ui.dart, enabling automateddart fixmigrations. 📦✨U+00AD) rendering with aHyphensAPILine breaks that fall on a soft hyphen (
U+00AD) now render a visible-by default on native platforms, and a newHyphensenum (Hyphens.manualandHyphens.hidden) onText,RichText,EditableText, andParagraphStylelets you control hyphen visibility. ✍️📖EditableTextselection highlighting widthMultiline text fields now default to
BoxWidthStyle.tightfor selection highlights, preventing selected lines from visually stretching to match trailing whitespace on adjacent lines. 📝🎯_nextFramecrash inMultiFrameImageStreamCompleterwhen re-adding a listenerRemoving the last listener from an animated image while a frame callback is pending and re-adding a listener before the frame fires no longer dereferences a null
_nextFrame. 🖼️🛡️addTearDownWidget tests can now restore modified framework globals (such as
debugDefaultTargetPlatformOverride) insideaddTearDowncallbacks without triggering post-test invariant assertions. 🧪✅Engine & Performance
Streamlining pointer dispatch and VSync scheduling in the engine cuts touch-to-present latency on iOS by a full frame. ⚡📱
Hooking into an ANGLE swapchain optimization removes a temporary full-screen texture and render pass on Windows, allowing MSAA to resolve directly into the swapchain. 🪟🚀
Web Platform
On iOS browsers, full-page Flutter web apps now expand with
visualViewport.heightwhen the address bar collapses instead of leaving a white strip at the bottom of the screen. 📱🌐The web engine no longer calls
Uri.decodeComponenton route URLs before updating browser history, preserving percent-encoded characters like%2Fand%3Facross page refreshes and shared links. 🔗🧭Android Platform
flutter_toolsand project templates now require Android Gradle Plugin 9.1.1 or newer, ensuring compatibility withcompileSdk37 and modern Android build toolchains. 🤖🛠️iOS Platform
When UIKit temporarily resigns and restores the native text responder (such as during a quick app switch on iOS 26), the engine now notifies the framework so the active
TextFieldregains focus and continues receiving keyboard input. ⌨️🍎Desktop Platforms
Adds
HostWindowSatellitesupport for Win32 desktop apps, enabling fixed-size and content-sized satellite windows that position themselves relative to their parent window. 🪟🛰️Tooling & Developer Experience
BuildServiceandflutter buildsupport for tool extensionsTool extensions can now register custom
flutter build <target>subcommands and execute builds over RPC through the newBuildServiceprotocol. 🔧🧱Documentation and Website
Announces the stable release of Genkit Dart 1.0 for building full-stack, type-safe AI features in Dart and Flutter apps. ✨🤖
Updates the animation cookbook recipes—covering page route transitions, physics simulations, opacity animations, and staggered menus—with current code standards and refreshed explanations. 🎬📚
Modernizes the forms cookbook guides on validation, focus management, and text field handling with updated examples and documentation standards. 📋📝
Adds a dedicated section to the JS interop guide showing how to declare named-parameter
externalconstructors on extension types to create plain JavaScript object literals. 🌐📘First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
_nextFramecrash inMultiFrameImageStreamCompleterwhen re-adding a listener.justinmc commentedon Oct 23, 2026
October 16, 2026 to October 23, 2026
This week, 126 commits landed in the Flutter repository, 5 in the Flutter website repository, and 9 in the Dart website repository. Below are the notable changes that landed this week:
Material Design
Materialfallback theme followdefaultTargetPlatformWidgets with no
Themeancestor now get a fallback theme that tracks the currentdefaultTargetPlatform, instead of freezing on whichever platform was active the first time a theme was looked up. This fixes adaptive behavior such as selection controls, toolbars, and cursors under platform overrides, and it removes a source of test-order-dependent failures. 🎨🧪Accessibility
Widgets that use an
OverlayPortal, like the MaterialSlider, no longer send orphaned semantics nodes to the engine during a route's fade-in transition. Screen readers now get a consistent semantics tree on pushed routes. ♿️On mobile web, when an app turns semantics on while a drag is in progress, the accessibility placeholder now stays until the gesture ends, so the drag's
pointerupis no longer lost. 👆🌐Framework & Core Libraries
Nested
LocalizationsandLocalizations.overridewidgets no longer overwrite the app-wide locale. This keeps<html lang>on web and the fallback accessibility locale on Android and iOS correct. 🌍Very thin images, such as a 4000×1 PNG with
cacheWidth: 100, used to fail with "Codec failed to produce an image" because the derived height rounded down to 0. They now decode correctly withcacheWidth/cacheHeightandResizeImage. 🖼️Engine & Performance
Clipped backdrop filters keep their rounded corners again, fixing a regression where blurred, clipped regions rendered with square corners. This reland comes with the CI flakiness that caused the original revert already resolved. 🔲➡️🔘
Web Platform
Hyphensnow works on CanvasKit, the default renderer forflutter build web, so text containing soft hyphens (U+00AD) shows a hyphen at line breaks, matching native and Skwasm. ✂️📝Android Platform
Hybrid Composition++ now presents frames in order instead of overwriting pending ones, which makes scrolling with multiple platform views much smoother. 🧈📱
iOS Platform
The iOS visual effect view behind blurs is purely visual, so it no longer intercepts touches meant for the content beneath it. 🍏👆
Desktop Platforms
macOS gains the "satellite" window type from Flutter's multi-window work, for auxiliary windows attached to a parent window. 🪟🛰️
Windows plugins can now check whether they are on the platform thread and post work to it. This is essential for sending platform channel events from the background threads most Windows APIs call back on. 🧵🪟
Tooling & Developer Experience
A new global
--no-extensionsflag and theFLUTTER_NO_EXTENSIONS=1environment variable let you bypass tool extension discovery entirely: a safe mode for the upcomingfluttertool extensions system. 🛡️🧰Instead of crashing with an unhandled exception when a path exceeds Windows' 260-character limit,
flutternow exits with a clear message telling you to move your SDK or project to a shorter path. 🪟📏Documentation and Website
A new blog post recaps the FlutterCon Berlin 2026 keynote by Carlos Mendonça and Emma Twersky on using AI to migrate to Flutter and scale afterwards. ✍️🤖
The DevTools 2.61.0 release notes are live. Highlights include WebSocket support in the Network profiler, widget source paths in the Inspector, and pinnable classes in the Memory view. 🛠️📋
Long-form posts on the Flutter blog now get a collapsible "On this page" table of contents, and heading anchors no longer land hidden behind the fixed header. 🧭
Linter rule search on dart.dev no longer requires an exact name: spaces now match underscores, and rule descriptions are searched too. 🔍
The WebAssembly docs now cover the Wasm proposals
dart2wasmtargets (with minimum browser versions),--standalonefor WASI runtimes like Wasmtime, and related conditional imports. 🕸️⚙️Dart's supported macOS versions now include macOS 27 "Golden Gate" and drop macOS 14 Sonoma. 🍎
chunhtai commentedon Oct 29, 2026
October 22, 2026 to October 29, 2026
This week, 81 commits landed in the Flutter repository, 22 in the Flutter website repository, and 7 in the Dart website repository. A special welcome to our new contributors: @mohamedalsamrai, @ChristophyBarth, @r0g18, @Wreos, and @meg4cyberc4t! Below are the notable changes that landed this week:
Accessibility
Web tristate checkboxes in a null state now set
aria-checked="mixed"instead offalse, allowing screen readers to announce indeterminate states accurately. 🌐♿Framework & core libraries
Adds native browser pointer actions via WebDriver to web integration tests, enabling authentic clicks, hovers, and drags that follow browser DOM hit testing over platform view iframes. 🖱️🧪
Engine & performance
Adds compute shader support to Flutter GPU on Metal and Vulkan backends, introducing shader storage buffers, compute pipelines, and dispatch passes for GPU computations. ⚡🎮
Multi-frame image decoders now honor target dimensions when decoding animated GIF, WebP, and APNG images, reducing memory usage when displaying resized animations. 🖼️📉
Web platform
Captures active pointer events to the Flutter view during drag gestures, preventing drags from freezing or jumping when the cursor passes over embedded iframe platform views. 🌐🎯
Removes the legacy service worker loader and deprecated
--pwa-strategyflag, modernizing web bootstrapping and pointing developers to web caching configurations. 🕸️🧹Android platform
Sets
visibleToUser=falsein the Android accessibility implementation for hidden semantics nodes, preventing screen readers like TalkBack from focusing on content scrolled behind pinned headers. 🤖📱Updates texture layer hybrid composition (TLHC) wrapper offsets directly without calling
requestLayout(), avoiding redundant layout passes and display list redraws during scrolling. ⚡🏎️iOS platform
Excludes internal dismiss and scroll actions on
SnackBarfrom generating extra Voice Control labels on iOS, keeping voice navigation overlays uncluttered. 📱🗣️Resolves the active display screen rather than defaulting to
UIScreen.mainScreenon dual-screen iOS devices, reporting accurate viewport dimensions across fold and unfold transitions. 📱📐Tooling & developer experience
Prevents the preview environment's outer
ListTileThemefrom leaking into previewed child widgets, preserving the intended styling of individual components. 🔍🎨Replaces raw missing-binary exceptions with an informative error message explaining that Android AOT release compilation is unsupported on Linux arm64 hosts, linking the upstream tracking issue. 🐧🛠️
Resolves incoming HTTP request paths strictly within configured search roots in web asset servers, preventing request paths from resolving outside the asset root. 🛡️🌐
Adds deprecation warnings when invoking
flutter build ios-frameworkorflutter build macos-framework, guiding developers to use standard framework workflows.Documentation and website
Reorganizes the installation pages into a single installation guide with side-by-side quick setup and manual paths, simplifying navigation for new developers. 📚🧭
Expands the Firebase documentation with end-to-end setup guides, configuration steps via FlutterFire CLI, and code examples for authentication and Firestore integration. 🔥📖
Adds documentation for web asset content hashing (
--web-content-hash), WebAssembly browser compatibility requirements, and updated initialization settings for Flutter 3.50. 🌐⚡Publishes a migration guide for right-to-left (RTL) text layout fixes in Flutter 3.50, explaining how to remove legacy workarounds for
WidgetSpanordering. 🔄✍️Updates Flutter documentation across UIKit, package authoring, and app extension guides to reflect Swift Package Manager support for iOS and macOS. 📦🍎
Documents the Developer Knowledge MCP server on the Dart website, guiding developers on connecting AI coding tools to official Dart documentation. 🤖💡
Adds a version range selector, preset filter chips, and debounced text search with query term highlighting to the Dart changelog page. 🔎📋
First-time contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
justinmc commentedon Nov 6, 2026
October 30, 2026 to November 06, 2026
This week, 143 commits landed in the Flutter repository, 9 in the Flutter website repository, and 8 in the Dart website repository.
A special welcome to our new contributors: @prasad2512, @Mathvdias, @M0n7y5, @xianjianlf2, @suryaKommana2662!
Below are the notable changes that landed this week:
Accessibility
On the web, text fields that have never been focused, such as a disabled field with prefilled text, now expose their value to screen readers instead of reading as empty. Obscured and autofill-owned fields are still skipped. ♿️📝
When a node stops merging its descendants, the framework now sends those children in the same semantics update that references them. This removes a framework-side trigger of an embedder crash. ♿️🛡️
With semantics enabled, the hidden inputs Flutter web keeps for browser autofill no longer show up to screen readers and checkers like axe as extra unlabeled text boxes holding the user's input. 🙈♿️
Framework & Core Libraries
PlatformDispatchernow has a callback for when the user switches the system 24-hour time setting while the app is running. This lays the engine groundwork for time pickers and formatted times to update live. 🕐Simulating a mouse hover in widget tests is now a one-liner with
tester.startHoverandtester.startHoverAt, instead of manually creating and moving a mouse gesture. 🖱️🧪Dragging an item in a reorderable list with mixed item heights no longer makes the drop gap flicker back and forth between positions, so reorder animations stay stable.
ListWheelScrollViewno longer throws a null check error on first layout when a child, such as anImage, reads the selected item. Images in the wheel now appear right away instead of only after scrolling. 🎡🐛Engine & Performance
The index-based
FragmentShader.setFloatis now deprecated in favor of setting uniforms by name withgetUniformFloat,getUniformVec2, and related methods, which are safer and easier to read. 🎨Native plugin bindings and registrars now expose the engine ID that matches
PlatformDispatcher.instance.engineIdin Dart. FFI and JNI plugins can now set up and clean up per-engine native state without access to the engine itself. 🔌🧩Web Platform
Web apps can now bind image samplers to fragment shaders by name on both CanvasKit and Skwasm, matching native platforms. Before, this threw
UnsupportedError. 🖼️🌐Android Platform
When Impeller falls back from Vulkan to OpenGLES, it now logs exactly why, whether it's an emulator, a known bad SoC or driver, or an old vendor SDK. Developers and triagers no longer have to guess. 🔍🤖
Apps that keep a
FlutterEnginealive across Activities no longer lose Flutter's back handling when a new Activity attaches, so system and predictive back gestures are routed to Flutter correctly again. 🔙📱Desktop Platforms
When a macOS app run from an IDE or terminal crashes because macOS attributed a camera, microphone, or similar permission request to the parent process,
flutter runnow explains what happened and how to fix it instead of showing a bareSIGABRT. 🍎🩺Tooling & Developer Experience
Responses proxied through
web_dev_config.yamlrules are now streamed chunk by chunk, so server-sent events and NDJSON streams arrive in real time duringflutter run -d chromeinstead of being stuck in an 8 KB buffer. 🌊⚡Documentation and Website
docs.flutter.dev has a new top-level Native interop section, with a decision tree for choosing between Pigeon, FFIgen, JNIgen, and
dart:ffi, plus a guide for each tool. 📚🔗The release notes for DevTools 2.62.0 are now published on docs.flutter.dev. 🛠️📝
dart.dev now documents the new
--no-deprecated-js-interopflag in Dart 3.14, which stops builds that use legacy web libraries likepackage:js, and updates the guides to usedart:js_interop. 🚧🌐dart migratecommand-line toolA new guide covers the
dart migratecommand in Dart 3.14: how to preview and apply package migrations to a newer SDK, and when to use it instead ofdart fix. 🚚🎯The JS interop guides now cover the latest
dart:js_interopadditions through Dart 3.14, includingJSIterable,JSIterator, and an expanded table of Dart-to-JS and JS-to-Dart conversions. 🔄📘dart.dev now marks the
dart:mirrorslibrary as deprecated, so developers know to move away from runtime reflection. 🪞First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
justinmc commentedon Nov 13, 2026
November 06, 2026 to November 13, 2026
This week, 130 commits landed in the Flutter repository, 49 in the Flutter packages repository, 32 in the Flutter website repository, and 13 in the Dart website repository.
A special welcome to our new contributors: @JIWON1923, @mitryp!
Below are the notable changes that landed this week:
Material Design
material_uinow provides standardSpringDescriptionconstants generated from Material 3 Expressive motion tokens (md.sys.motion.spring.*), bringing official M3 spring physics curves to animations. 🌀✨Cupertino (iOS-style)
Disabled
CupertinoSlidercontrols now render with dimmed opacity matching native iOS behavior, providing clearer visual feedback when slider interactions are turned off. 🎚️🍎Accessibility
UIScrollViewas a11y scrollable containerOn iOS, scrollable semantics items are now hosted within a real
UIScrollViewcontainer, ensuring VoiceOver and Voice Control correctly clip off-screen elements to the scroll viewport and navigate items reliably. ♿️📱Framework & Core Libraries
ResizeImagenow supportsResizeImagePolicy.cover, allowing images to decode at the minimum size needed to cover a target box while preserving aspect ratio, slashing memory consumption without blurriness. 🖼️📉SliverCrossAxisGroupnow gracefully accommodates child slivers that lay out with zero cross-axis extent instead of throwing an assertion error, keeping collapsible multi-sliver layouts stable. 📜🛡️Engine & Performance
dart:uinow exposesParagraphStyle.hyphenCharacter, giving developers fine-grained control over the character used when text breaks across lines during hyphenation. 🔤📝Impeller now correctly respects rounded and arbitrary clip shapes when rendering
BackdropFilterwidgets, preventing visual artifacts where blur effects previously showed square corners. 🎨✨Web Platform
Flutter Web now reliably decodes single-frame AVIF images on Chrome by properly accommodating Chrome's bitmap decoder behavior for non-animated AVIF files. 🌐🖼️
Android Platform
Android apps now animate software keyboard insets smoothly without a jarring height jump when the keyboard opens or dismisses. ⌨️📱
On Android, Impeller prewarms critical shaders immediately upon graphics context creation rather than waiting for first draw, reducing initial startup jank. ⚡🚀
iOS Platform
Embedded iOS platform views are now recomposited only when their underlying view parameters change, significantly reducing compositing overhead and CPU time for static native views. 🍎🏎️
Desktop Platforms
Type-specific window widgets (
DialogWindow,TooltipWindow,PopupWindow,SatelliteWindow) have been unified into a singleWindowwidget accepting anyBaseWindowController, streamlining multi-window architecture. 🪟💻Pressing Space immediately after Alt+Space on Windows with older Microsoft IME versions now reliably enters space characters instead of dropping key events or misbehaving. 🪟⌨️
Flutter's desktop Linux engine now supports the
riscv64architecture, expanding Flutter application support to 64-bit RISC-V devices. 🐧⚡Tooling & Developer Experience
use-explicit-plural-valuesoptiongen_l10nintroduces--use-explicit-plural-values, allowing generated localization code to provide dedicated arguments for zero, one, and other counts when formatting complex plural strings. 🌐🗣️Packages & Plugins
Pigeon now supports registering and cleanly unregistering Native Interop bindings across multiple Flutter engine instances, ensuring proper lifecycle management in multi-engine applications. 🔌🧩
vector_graphicsandflutter_svgnow support core SVG filter primitives including Gaussian blur, offset, and merge operations, unlocking drop shadows and blur effects in vector assets. 🎨✨Documentation and Website
The official "What's new in Flutter 3.50" release blog post is now published on docs.flutter.dev, highlighting framework updates, engine enhancements, and migration paths. 📢🚀
A new comprehensive guide and blog post dives into Flutter's native interop ecosystem, guiding developers through Pigeon, FFIgen, JNIgen, and direct
dart:ffi. 📚🔌The Dart 3.14 release announcement is now live on dart.dev, covering language evolutions, expanded WebAssembly capabilities, and core library updates. 🎯📝
First-time Contributors
We would like to extend a warm welcome to our new contributors this week! Thank you for your impactful contributions:
use-explicit-plural-valuesoption.