Flutter 3.13.0 release notes

This page has release notes for 3.13.0. For information about subsequent bug-fix releases, see our CHANGELOG.

Framework

#
  • Fix EditableText misplaces caret when selection is invalid by @bleroux in 123777
  • Fixes IgnorePointer and AbsorbPointer to only block user interactions… by @chunhtai in 120619
  • [flutter_test] Adds method to mock EventChannels by @Rexios80 in 123726
  • Revert "[flutter_test] Adds method to mock EventChannels" by @zanderso in 124401
  • Reland Refactor reorderable list semantics by @chunhtai in 124395
  • Migrate away from deprecated BinaryMessenger API by @goderbauer in 124348
  • Fix InkWell ripple visible on right click when not expected by @bleroux in 124386
  • Prepare for adding values to AppLifecycleState by @gspencergoog in 119954
  • document StaticIconProvider by @christopherfujino in 120935
  • [Text Input] Only unfocus when receive connectionClosed on platform except web by @luckysmg in 123929
  • [flutter_test] Adds method to mock EventChannels by @Rexios80 in 124415
  • [web] Migrate the bulk of JS interop to JS types. by @joshualitt in 123286
  • Reduce macOS overscroll friction by @moffatman in 122142
  • ExpansionTile audit by @chunhtai in 124281
  • Sliver Constrained Cross Axis by @thkim1011 in 124337
  • Fix ShaderMask Example issue by @adityathakurxd in 124511
  • BottomAppBar: Fix doubled layers of color and shadow by @chrisbobbe in 123294
  • Adds dart_fix support to flutter_test by @pdblasi-google in 124347
  • Add Mike Rydstrom to AUTHORS by @rydmike in 124561
  • [integration_test] upgrade androidx test to 1.4.0 by @micaelcid in 122437
  • Remove deprecations from TextSelectionHandleControls instances by @justinmc in 124611
  • DraggableScrollableSheet & NestedScrollView should respect NeverScrollableScrollPhysics by @xu-baolin in 123109
  • Exposed EdgeDraggingAutoScroller velocityScalar to ReorderableList by @gabrielgarciagava in 124459
  • Add StrokeCap to CircularProgressIndicator by @bernaferrari in 122664
  • Revert "[integration_test] upgrade androidx test to 1.4.0" by @zanderso in 124644
  • Bug report 2 issue template by @exaby73 in 122385
  • SemanticsFlag/SemanticsAction cleanup (part 4) by @bernaferrari in 123329
  • Localize the 'No Replacements Found' spell check string by @justinmc in 124259
  • Improve the docs around the TextSelectionHandleControls deprecations by @justinmc in 123827
  • Refactor SliverAppBar.medium & SliverAppBar.large to fix several issues by @TahaTesser in 122542
  • Fix CupertinoContextMenu throws exception on route animation by @TahaTesser in 124785
  • [CupertinoListSection] adds new property separatorColor by @piedcipher in 124803
  • iOS context menu shadow by @justinmc in 122429
  • Add optional labelText and semanticLabel to Checkbox by @hangyujin in 124555
  • [cupertino] improve cupertino picker performance by using at most one opacity layer by @jonahwilliams in 124719
  • Revert "[framework] use shader tiling instead of repeated calls to drawImage" by @jonahwilliams in 124640
  • Customize color and thickness of connected lines in Stepper.dart by @mub-pro in 122485
  • Fix a null crash in SelectableRegion Widget by @hangyujin in 124736
  • Deprecates string for reorderable list in material_localizations by @chunhtai in 124711
  • Fix Chip highlight color isn't drawn on top of the background color by @TahaTesser in 124673
  • SelectionContainer's listeners can remove itself during listener call… by @chunhtai in 124624
  • Add an example for SearchBar by @QuncCccccc in 124992
  • Add optional axis specifier to static scrollable methods by @Piinks in 124894
  • relayout active ListWheelScrollView children every performLayout by @werainkhatri in 124476
  • [InputDatePickerFormField] adds acceptEmptyDate to InputDatePickerFormField Widget by @piedcipher in 124143
  • iOS spell check cursor placement by @justinmc in 124875
  • Remove unused context parameter by @justinmc in 124254
  • Fix text theme dart fix cases by @Piinks in 125052
  • Remove unused getRootRenderObject and getSelectedRenderObject service extensions by @goderbauer in 124805
  • Limit the number of Material spell check suggestions to 3 by @justinmc in 124899
  • Add controller argument to SubmenuButton by @gspencergoog in 125000
  • Remove package:js/dart:js_interop conflicts by @srujzs in 124879
  • Adaptive alert dialog by @MitchellGoodwin in 124336
  • Disableable ContextMenuButtonItems by @justinmc in 124253
  • fix SliverReorderableList test to use correct custom action id by @chunhtai in 125144
  • Dismiss the docked search view when the window size is changed by @QuncCccccc in 125071
  • Revert selectable update back to be a postframecallback or microtask by @chunhtai in 125140
  • fix DropdownMenu crash when resize window during menu showing by @xu-baolin in 124855
  • Show magnifier on touch drag gestures by @Renzo-Olivares in 125151
  • Search view shape should clip the view content by @QuncCccccc in 125161
  • DropdownMenu.width should support updating at runtime by @xu-baolin in 124847
  • MinimumTapTargetGuideline skips nodes at scrollable boundaries by @chunhtai in 124615
  • Show iOS menu on iOS for TextField by default by @justinmc in 124895
  • Implement CheckmarkableChipAttributes on ChoiceChip by @9oya in 124743
  • Revert "Sliver Constrained Cross Axis" by @thkim1011 in 125233
  • Remove dynamic calls by @Hixie in 125238
  • Remove uses of deprecated test_api imports by @natebosch in 124732
  • Toolbar should re-appear on drag end by @Renzo-Olivares in 125165
  • BottomAppBar doc: Fix doc about surfaceTintColor by @chrisbobbe in 124563
  • Updated the BottomNavigationBar API doc to link to NavigationBar by @HansMuller in 125240
  • Make selectable text mouse cursor configurable by @bleroux in 125133
  • Red spell check selection on iOS by @justinmc in 125162
  • Add docs for kIsWeb on defaultTargetPlatform by @gspencergoog in 125313
  • Fix the divider_theme space documentation problem by @xcc3641 in 125195
  • Remove unecessary reference to ClipboardStatusNotifier by @chunhtai in 125255
  • Update Cupertino desktop text selection toolbar by @luccasclezar in 121829
  • Remove some ignores for un-deprecated imports by @natebosch in 125261
  • Adjust selection rects inclusion criteria by @moffatman in 125022
  • Fix the position of the Android-style spell check toolbar by @justinmc in 124897
  • Tiny fix doc pointing to incorrect widget confusing the readers by @fzyzcjy in 125394
  • Implement url support for RouteInformation and didPushRouteInformation by @chunhtai in 119968
  • Fix iOS touch drag behavior by @Renzo-Olivares in 125169
  • Fix OutlinedButton, TextButton, and IconButton throw exception when passing only one cursor to styleFrom by @TahaTesser in 125204
  • Fix JS types in _test_http_request.dart by @srujzs in 125220
  • Add borderRadius to LinearProgressIndicator by @bernaferrari in 123517
  • Sliver Constrained Cross Axis by @thkim1011 in 125239
  • [date_picker] [date_range_picker] add properties to change switch-to icons by @piedcipher in 124881
  • Fix SliverAppBar.medium & SliverAppBar.large text scale by @TahaTesser in 125038
  • iOS TextField spell check style by @justinmc in 125432
  • Relabel JSFunction as JSExportedDartFunction by @srujzs in 125453
  • Adds selected semantics flag to radio button for Apple devices by @chunhtai in 125499
  • Provide default constraints for M3 bottom sheets by @guidezpl in 120065
  • fix: moreOrLessEquals does not allow actual to be integers by @fzyzcjy in 125599
  • Fix SnackBar material clip by @TahaTesser in 125622
  • Add migrator to upgrade gradle version when conflict with Android Studio bundled Java version is detected by @gmackall in 124085
  • fix RangeSlider, with no overlayShape shifts to the left by @arvinwli in 125483
  • Smallest change required to support host apps using agp 8.0 by @reidbaker in 125657
  • enhances OverlayEntry docs by @werainkhatri in 124478
  • Allow users to provide route settings to showMenu by @fzyzcjy in 124935
  • Nit: grammar in documentation by @phlippieb-discovery in 125462
  • Checkbox.fillColor should be applied to checkbox's background color when it is unchecked. by @QuncCccccc in 125643
  • Add a channel to query the engine keyboard state by @bleroux in 122885
  • Sliver Cross Axis Group by @thkim1011 in 123862
  • Fix crasher in DragableScrollableSheet when controller is animating and switching widgets by @dnfield in 125721
  • add support to customize Slider interacivity by @werainkhatri in 121483
  • Introduce TabBar.tabAlignment by @TahaTesser in 125036
  • Revert "Add migrator to upgrade gradle version when conflict with And… by @gmackall in 125813
  • Migrate Xcode projects last version checks to Xcode 14.3 by @jmagman in 125827
  • Make future and stream required arguments in their respective builder widgets by @caseycrogers in 125838
  • Add debugPrintKeyboardEvents flag by @bleroux in 125629
  • [framework] delete physical model layer. by @jonahwilliams in 125719
  • Clean up in memory_allocations_test.dart. by @polina-c in 125777
  • Align the Popup Menu under its child by @ValentinVignal in 125534
  • ModalBarrier's gesture recognizer does not call invokeCallback by @fzyzcjy in 125386
  • Add InlineSpan.visitDirectChildren by @LongCatIsLooong in 125656
  • [Reland] Add migrator to upgrade gradle version when conflict with Android Studio bundled Java version is detected by @gmackall in 125836
  • Switch imports from test_api to focused libaries by @natebosch in 125854
  • Fix nullability of ClipRRect.borderRadius by @goderbauer in 125878
  • Provide default constraints for M3 dialogs by @guidezpl in 120082
  • Define testWidgetsWithLeakTracking. by @polina-c in 125063
  • Cleans up appbar imply leading logic by @chunhtai in 125315
  • Minor fixes found while working on blankcanvas by @Hixie in 125751
  • [NavigationDrawer] adds padding property in NavigationDrawer Widget by @piedcipher in 123961
  • Fix Material 3 tab indicator weight and position by @TahaTesser in 125883
  • Add a ReorderableListView example with cards + cleanup existing tests by @bleroux in 126155
  • Add sample code for SliverAppBar by @Istiak-Ahmed78 in 125785
  • Add Switch.trackOutlineWidth property by @QuncCccccc in 125848
  • Added CupertinoDatepicker monthYear mode (flutter#93508) by @lindsaypj in 125603
  • add tests for dominant bottom sheet in scaffold by @werainkhatri in 124472
  • ✨ Add rect argument to _ArcPaintPredicate for tests by @AlexV525 in 125953
  • [ios] fix hold and drag spacebar does not move cursor when obscureTex… by @LinXunFeng in 122383
  • [ExpansionPanelList] add materialGapSize property in ExpansionPanelList Widget by @piedcipher in 123971
  • Fix leaks by @goderbauer in 126144
  • Test AGP 8.0 using java 17 by @reidbaker in 125323
  • [Refactor] Fix style in example by @natsuk4ze in 126191
  • Tiny cleanup for Navigator code (without introducing dependency) by @fzyzcjy in 125628
  • Improve the format in asset_bundle.dart by @AlexV525 in 126229
  • fix AppBar's docs for backgroundColor by @werainkhatri in 126194
  • Remove dead code by @goderbauer in 126266
  • Update FocusNode documentation by @bleroux in 126331
  • Revert "Provide default constraints for M3 dialogs" by @itsjustkevin in 126355
  • ✨ Add strokeAlign to CircularProgressIndicator and RefreshProgressIndicator by @AlexV525 in 125945
  • Reorder materialStateProperty defaults by @QuncCccccc in 125905
  • Fix MultiChildLayoutDelegate.hasChild doc by @TahaTesser in 126433
  • Make dpr available during Scrollable disposal by @goderbauer in 126535
  • Fix TextSpan gc regression by @LongCatIsLooong in 126382
  • Fix showDatePicker in input mode throws an ArgumentError by @TahaTesser in 126525
  • Hide the context menu on tap down by @justinmc in 126295
  • Add FocusNode, onFocusChange, and autofocus to CupertinoSwitch by @TahaTesser in 126684
  • [Docs] Fix Typo by @MeandNi in 126660
  • Fix focus behavior and provided thumb and focus color aren't applied to Cupertino variant of Switch.adaptive by @TahaTesser in 126688
  • Fix crash from invalid ListWheelViewport assertion by @nt4f04uNd in 126539
  • Add spaces after flow control statements by @tgucio in 126320
  • rename AssetManifest.bin by @andrewkolos in 126077
  • Add more to error message of RestorationScope.of by @Piinks in 126444
  • Add ScrollController.onAttach & onDetach, samples/docs on listening/getting scrolling info by @Piinks in 124823
  • Minor documentation fixes by @Hixie in 126609
  • Updated the Drawer API doc to link to NavigationDrawer by @TahaTesser in 126915
  • enable no_literal_bool_comparisons lint by @goderbauer in 126647
  • expose CupertinoDatePicker and CupertinoTimerPicker itemExtent … by @stMerlHin in 125852
  • Update SemanticsUpdateBuilderSpy for the conversion of SemanticsUpdateBuilder into a base class by @jason-simmons in 126570
  • Alert engine upon registering ServiceBinding by @yaakovschectman in 126075
  • Remove outdated comment by @goderbauer in 126927
  • Fix copyWith method of ActionIconThemeData by @predatorx7 in 126763
  • Fix DataTableThemeData.copyWith handling of dataRowHeight by @jason-simmons in 126943
  • Add checkmark style to CupertinoRadio by @MitchellGoodwin in 126480
  • Add ScrollMetrics.extentTotal for completeness by @Hixie in 126607
  • Make SlottedMultiChildRenderObjectWidgetMixin a concrete class by @Hixie in 126108
  • Add missing Switch.onFocusChange test by @TahaTesser in 126685
  • Expose callback that allows focus traversal customization by @JellyO1 in 120235
  • Autocomplete async examples by @justinmc in 126283
  • Remove unused (and untested) parameters from private _MasterDetailFlow by @goderbauer in 126935
  • Handle null return from WillPopCallback by @goderbauer in 127039
  • Ignore unused_element_parameter by @srawlins in 126926
  • Remove deprecated fixTextFieldOutlineLabel by @Renzo-Olivares in 125893
  • Remove obsolete drawShadow bounds workaround by @flar in 127052
  • Clip search view content during animation by @QuncCccccc in 126975
  • Revert "Remove obsolete drawShadow bounds workaround" by @justinmc in 127110
  • Revert "Handle null return from WillPopCallback" by @goderbauer in 127112
  • Fixing richMessage gesture recognizer in tooltip widget by @mhbdev in 126207
  • Update useMaterial3 api doc by @QuncCccccc in 127142
  • Remove deprecated primaryVariant and secondaryVariant from ColorScheme by @QuncCccccc in 127124
  • Properly cleans up routes by @chunhtai in 126453
  • Remove deprecated OverscrollIndicatorNotification.disallowGlow by @Piinks in 127050
  • fixes to anticipate next Dart linter release by @pq in 127211
  • Do not animate TabBarView if controller is invalid by @gilnobrega in 123442
  • fix: Search anchor box location when used on nested navigator by @VictorOhashi in 127198
  • Support keeping a bottom sheet with a DraggableScrollableSheet from closing on drag/fling to min extent by @monkeyswarm in 127339
  • Add M3 date picker tests and fix divider by @TahaTesser in 127197
  • Fix the breaking of multi-code-unit characters in obscure mode by @justinmc in 123366
  • modal bottom sheet barrier label by @NikolajHarderNota in 126431
  • Avoid catching errors in TextPainter tests by @tgucio in 127307
  • Slider.onChangeStart & Slider.onChangeEnd are not called on keyboard shortcuts by @dleyba042 in 126896
  • Fix ScrollPosition overscroll precision error by @bleroux in 127321
  • Add missing parameters in TextFormField by @lsaudon in 127020
  • [web] ui.platformViewRegistry => ui_web.platformViewRegistry by @mdebbar in 127493
  • Remove Tooltip mouse tracker listener & update hovering/MouseRegion logic & animation by @LongCatIsLooong in 119199
  • Add ScrollNotificationObserver sample by @TahaTesser in 127023
  • SearchBar should not be impacted by overall InputDecorationTheme by @QuncCccccc in 127465
  • Adds TestDisplay API for testing Display features by @pdblasi-google in 127525
  • Remove a bad assert from tooltip implementation by @LongCatIsLooong in 127629
  • Fix TextField error in production environment because it wrongly uses ancestor render boxes by @fzyzcjy in 126324
  • Support minifcation for apps that depend on AGP 8 and integration_test by @reidbaker in 127628
  • TwoDimensional scrolling foundation by @Piinks in 125437
  • Update Material 2 tests group comment by @TahaTesser in 127796
  • Fix SliverPersistentHeader interactions with SliverCrossAxisGroup by @thkim1011 in 127338
  • Revised Floating Action Button examples by @HansMuller in 128058
  • Add retry flag to flutter_test by @fzyzcjy in 125851
  • Add error message when sliver overlap absorber is missing by @Piinks in 128075
  • Updated custom ListTile examples by @HansMuller in 128071
  • Add FilterChip.elevated, ChoiceChip.elevated, & ActionChip.elevated variants by @TahaTesser in 128049
  • Text should still be centered when search bar height is less than 48 by @QuncCccccc in 128068
  • Tiny remove unnecessary method in text_selection.dart by @fzyzcjy in 127480
  • Remove LiveTestRenderView by @goderbauer in 127882
  • Pre-migration for dart:ui multi view changes by @goderbauer in 128092
  • Reland "Remove obsolete drawShadow bounds workaround (#127052)" by @flar in 127231
  • Prefix for dart:ui multiview change by @goderbauer in 128152
  • [framework] force flexible space background to rebuild. by @jonahwilliams in 128138
  • Migrate SemanticsBinding to onSemanticsActionEvent by @goderbauer in 128254
  • Fix update drag error that made NestedScrollView un-scrollable by @Piinks in 127718
  • Remove scrollbar deprecations isAlwaysShown and hoverThickness by @Piinks in 127351
  • [framework] attempt non-key solution by @jonahwilliams in 128273
  • Migration guide for moving from BottomNavigationBar to NavigationBar by @leighajarett in 128263
  • Use a show over a hide for test_api exports by @natebosch in 128298
  • Use Material3 in the 2D viewport tests by @HansMuller in 128155
  • Clean-up viewId casts in flutter_test by @goderbauer in 128256
  • Adding example for migrating to navigation drawer by @leighajarett in 128295
  • Fix Null check operator used on a null value on TextField with contextMenuBuilder by @fzyzcjy in 128114
  • Remove textScaleFactor dependent logic from AppBar by @LongCatIsLooong in 128112
  • handleSelectWord in MultiSelectableSelectionContainerDelegate should handle rects inside of rects by @Renzo-Olivares in 127478
  • Remove more rounding hacks from TextPainter by @LongCatIsLooong in 127826
  • Update Draggable YouTube video link by @khanhnwin in 128078
  • Show error message in release mode when box is not laid out without losing performance by @fzyzcjy in 126302
  • Add viewId to PointerEvents by @goderbauer in 128287
  • Make inspector weakly referencing the inspected objects. by @polina-c in 128095
  • Refactor tests by @goderbauer in 128371
  • Super tiny fix of dead link by @fzyzcjy in 128160
  • Addressed Ambiguity in transform.scale constructor docs by @99spark in 128182
  • Do not try to load main/default asset image if only higher-res variants exist by @andrewkolos in 128143
  • Update menu API docs to help developers migrate to m3 by @leighajarett in 128351
  • Revert "Make inspector weakly referencing the inspected objects." by @eyebrowsoffire in 128436
  • Super tiny MediaQuery doc update by @fzyzcjy in 127904
  • Roll engine, patch expression evaluation by @aam in 128255
  • Fix typos 'wether' -> 'whether' by @bleroux in 128392
  • Redo make inspector weakly referencing the inspected objects. by @polina-c in 128471
  • Fix PointerEventConverter doc by @goderbauer in 128452
  • Move RenderObjectElement.updateChildren to Element by @goderbauer in 128458
  • [floating_cursor_selection]add more comments on the tricky part by @hellohuanlin in 127227
  • Disable blinking cursor when EditableText.showCursor is false by @LongCatIsLooong in 127562
  • Update flutter to dartdoc 6.3.0 and hide Icons implementation from doc pages by @jcollins-g in 128442
  • Update chip.dart to use set of MaterialState by @TahaTesser in 128507
  • Fix navigation rail with long labels misplaced highlights by @bleroux in 128324
  • Navigator.pop before PopupMenuItem onTap call by @mhbdev in 127446
  • Reland "Migrate benchmarks to package:web" by @eyebrowsoffire in 128266
  • Advise developers to use OverflowBar instead of ButtonBar by @leighajarett in 128437
  • Sliver Main Axis Group by @thkim1011 in 126596
  • Add AppLifecycleListener, with support for application exit handling by @gspencergoog in 123274
  • Adding migration guide for Material 3 colors by @leighajarett in 128429
  • Remove single view assumption from MouseTracker, and unify its hit testing code flow by @dkwingsmt in 127060
  • Fix showBottomSheet doesn't remove scrim when draggable sheet is dismissed by @TahaTesser in 128455
  • Replace MaterialButton from test classes by @TahaTesser in 128466
  • Improve defaults generation with logging, stats, and token validation by @guidezpl in 128244
  • Updated material button theme tests for Material3 by @HansMuller in 128543
  • Paint SelectableFragments before text by @hangyujin in 128375
  • ExpansionPanel isExpanded callback parameter (Ticket 74114) by @dleyba042 in 128082
  • Add tooltips for SegmentedButton by @ZhulanovAA in 128501
  • Revert "Update chip.dart to use set of MaterialState" by @HansMuller in 128607
  • Clarifies semantics long press and semantics on tap documentation by @chunhtai in 128599
  • Add Selected semantics to IconButton by @hangyujin in 128547
  • rename generated asset manifest file back to AssetManifest.bin (from AssetManifest.smcbin) by @andrewkolos in 128529
  • Remove unnecessary parentheses by @ZhulanovAA in 128620
  • migrate Tooltip to use OverlayPortal by @LongCatIsLooong in 127728
  • Update ListTile text defaults to use ColorScheme by @TahaTesser in 128581
  • Address leak tracker breaking changes. by @polina-c in 128623
  • Fix RangeSlider notifies start and end twice when participates in gesture arena by @nt4f04uNd in 128674
  • Update button tests for Material 3 by default by @HansMuller in 128628
  • Fix paint offset in reverse for 2D by @Piinks in 128724
  • Update misc tests for Material3 by @HansMuller in 128712
  • Update tests in material library for Material 3 by default by @QuncCccccc in 128300
  • Update rest of the unit tests in material library for Material 3 by @QuncCccccc in 128747
  • Fix ensureVisible and default focus traversal for reversed scrollables by @Piinks in 128756
  • Update unit tests in material library for Material 3 by @QuncCccccc in 128725
  • Fix syntax error in docstring by @woprandi in 128692
  • Inline AbstractNode into SemanticsNode and Layer by @goderbauer in 128467
  • Fixed slider value indicator not disappearing after a bit on desktop platform when slider is clicked not dragged by @cruiser-baxter in 128137
  • [web] Migrate framework away from dart:html and package:js by @mdebbar in 128580
  • Respect allowlisted count of leaks. by @polina-c in 128823
  • Remove temporary default case for PointerSignalKind by @LouiseHsu in 128900
  • ContextAction.isEnabled needs a context by @Hixie in 127721
  • Improve the error message for non-normalized constraints by @Hixie in 127906
  • Update getChildrenSummaryTree to handle Diagnosticable as input. by @polina-c in 128833
  • Update golden tests for material by @QuncCccccc in 128839
  • [web] Pass creation params to the platform view factory by @mdebbar in 128146
  • flutter update-packages --force-upgrade by @mdebbar in 128908
  • Update golden tests by @QuncCccccc in 128914
  • Set Semantics.button to true for date widget by @QuncCccccc in 128824
  • Update getProperties to handle Diagnosticable as input. by @polina-c in 128897
  • [web] Don't crash on const HtmlElementView() by @mdebbar in 128965
  • Remove AbstractNode from RenderObject and deprecate it by @goderbauer in 128973
  • Accept Diagnosticable as input in inspector API. by @polina-c in 128962
  • Update objectToDiagnosticsNode to stop failing. by @polina-c in 129027
  • Fix InputDecoration.applyDefaults ignoring some properties by @TahaTesser in 129010
  • Introduce MaterialState color property for chips by @TahaTesser in 128584
  • Add to API docs to explain what Assist and Suggestion chips are by @leighajarett in 129034
  • Adding ScrollController support for Stepper widget by @SwaroopSambhayya in 128814
  • iOS info.plist template: make UIViewControllerBasedStatusBar to be true by @cyanglaz in 128970
  • fixed PreferredSize constuctor invocations by @yeasin50 in 128181
  • DecoratedSliver by @thkim1011 in 127823
  • Fix: Magnifier appears and won't dismiss by @justinmc in 128545
  • update resolution-aware asset docs links by @andrewkolos in 128769
  • Relax OverlayPortal asserts by @LongCatIsLooong in 129053
  • Selection area right click behavior should match native by @Renzo-Olivares in 128224
  • Gracefully handle negative position in getWordAtOffset by @justinmc in 128464
  • Remove incorrect non-nullable assumption from ShapeDecoration.lerp by @guidezpl in 129298
  • [framework,web] add FlutterTimeline and semantics benchmarks that use it by @yjbanov in 128366
  • Add InputDecorationTheme.merge by @TahaTesser in 129011
  • Fix: Closing bottom sheet and removing FAB cause assertion failure by @utisam in 128566
  • Fix Material 3 Scrollable TabBar by @TahaTesser in 125974
  • Remove unnecessary variable _hasPrimaryFocus by @AhmedLSayed9 in 129066
  • Add onSubmitted property to SearchBar by @QuncCccccc in 129365
  • [web] Migrate framework to fully use package:web by @mdebbar in 128901
  • Fix Slider overlay remains when unfocused by @TahaTesser in 129115
  • fix: SearchAnchor View not resizing when in nested navigator by @VictorOhashi in 128357
  • _TapStatusTrackerMixin should wait until the next PointerDownEvent before resetting its state when the tap timer has elapsed by @Renzo-Olivares in 129312
  • fix: Inconsistency of SelectionArea when scrolling by @paurakhsharma in 128765
  • Add CallbackShortcuts widget of the week video by @loic-sharma in 129296
  • Fix AnimatedList & AnimatedGrid doesn't apply MediaQuery padding by @TahaTesser in 129556
  • Updated chip_test.dart tests for M3 by @HansMuller in 129570
  • Fix chinese text is not selected by long press by @hangyujin in 129320
  • Make a paragraph test involving Chinese characters work with inconsistent host system fonts by @jason-simmons in 129628
  • iOS TextSelectionToolbar fidelity by @luccasclezar in 127757
  • Adds dart_fix support to integration_test by @pdblasi-google in 129579
  • Remove Editable.onCaretChanged callback by @tgucio in 109114
  • Automatically migrate ClipboardData.text to non-null by @loic-sharma in 129567
  • [flutter roll] Revert "Fix AnimatedList & AnimatedGrid doesn't apply MediaQuery padding" by @XilaiZhang in 129645
  • Make DropdownMenu be able to scroll to the highlighted item when searching. by @QuncCccccc in 129740
  • Update SwitchListTile tests for M2/M3 by @QuncCccccc in 129809
  • Update Switch tests for M2/M3 by @QuncCccccc in 129810
  • Update Radio tests for M2/M3 by @QuncCccccc in 129814
  • Updated some golden image tests for M2/M3 by @HansMuller in 129794
  • Fix NetworkImage causing spurious warning in tests by @gnprice in 129537
  • Update SwitchTheme tests for M2/M3 by @QuncCccccc in 129811
  • Update links to old linter site to dart.dev by @parlough in 129866
  • Cleanup: stop accepting DiagnosticsNode as input from DevTools. by @polina-c in 129302
  • Improve documentation for ColorSheme.fromImageProvider by @guidezpl in 129952
  • fix a bug when android uses CupertinoPageTransitionsBuilder... by @ipcjs in 114303
  • Add simple unit tests for annotations.dart file by @moylanm in 128902
  • Removes deprecated APIs from v2.6 in binding.dart and widget_tester.dart by @pdblasi-google in 129663
  • Reland Fix AnimatedList & AnimatedGrid doesn't apply MediaQuery padding #129556 by @HansMuller in 129860
  • MergeableMaterial: Fix adding a slice and separating it by @Snonky in 128804
  • Enable unreachable_from_main lint - it is stable now!!1 by @goderbauer in 129854
  • Allow long-press gestures to continue even if buttons change. by @Hixie in 127877
  • [framework] Add textField OCR support for framework side by @luckysmg in 96637
  • Add option for flexible space on material SearchDelegate by @HenriqueNas in 128132
  • [a11y] CupertinoSwitch On/Off labels by @gilnobrega in 127776
  • Next attempt to make inspector weakly referencing the inspected objects. by @polina-c in 129962
  • Revert "fix a bug when android uses CupertinoPageTransitionsBuilder..… by @Jasguerrero in 130155
  • Revert "[a11y] CupertinoSwitch On/Off labels" (#130166) by @Jasguerrero in 130172
  • [CP] Minor adjustments on 2D APIs (#131358) by @Piinks in 131436
  • [CP] Allow OverlayPortal to be added/removed from the tree in a layout callback (#130670) by @LongCatIsLooong in 131290
  • [CP] _RenderScaledInlineWidget constrains child size (#130648) by @LongCatIsLooong in 131289
  • [Cp] Fix Tooltip crash when selected in a SelectableRegion (#130181) by @LongCatIsLooong in 131288
  • [CP] Constrain _RenderScaledInlineWidget child size in computeDryLayout #131765 by @LongCatIsLooong in 132096

Tooling

#
  • Update getGradleVersion to ignore commented out lines by @reidbaker in 124260
  • Update gradle_utils.dart and flutter.gradle to have the same versions as the documentation in file says is required. by @reidbaker in 123213
  • Force plugin transitive dependencies to an ARC compatible version by @jmagman in 124349
  • Add support to the flutter tool to compile against the skwasm renderer by @eyebrowsoffire in 124296
  • Update MCU version by @esouthren in 124512
  • Allow daemon to start DDS remotely when proxied devices are used. by @chingjun in 124061
  • Debounce the proxied connection over proxied devices. by @chingjun in 124540
  • Add omit-type-checks flag for wasm builds by @kevmoo in 124341
  • flutter_tools: Flutter Web CLI cleanup by @kevmoo in 124564
  • Remove the old canvaskit artifacts to not confuse the web runner. by @eyebrowsoffire in 124641
  • Update runner to handle logic for both analytics packages by @eliasyishak in 124606
  • Update re-thrown error for incompatible Java/Gradle versions to include migration guide by @camsim99 in 124327
  • [flutter_tools] Disable flaky output_web_test test case by @elliette in 124257
  • i123643 print java version gradle by @reidbaker in 123644
  • flutter-tool: enum cleanup by @kevmoo in 124760
  • flutter-tool, web: update HTML template serviceWorkerVersion to be const by @kevmoo in 124826
  • Remove Finder extended attributes in build target before code signing iOS frameworks by @jmagman in 123896
  • [flutter_tools] Reorganize android_studio_test.dart by @andrewkolos in 124834
  • Add option to run wasm-opt on module output. by @eyebrowsoffire in 124831
  • [flutter_tools] Remove Version.unknown by @andrewkolos in 124771
  • Update usage of standalonepub executable in flutter_tools testing docs by @bartekpacia in 124898
  • Add vmservice for android build options by @chunhtai in 123034
  • l10n.yaml's nullable-getter option should default to true by @thkim1011 in 124353
  • Remove double.fromEnvironment from dart-define doc by @Mastersam07 in 124102
  • Update helper message for --suppress-analytics by @eliasyishak in 124810
  • Revert "Update helper message for --suppress-analytics" by @godofredoc in 125141
  • Refactor Flutter Gradle Plugin so it can be applied using the declarative plugins {} block by @bartekpacia in 123511
  • [reland] Update helper message for --suppress-analytics by @eliasyishak in 125145
  • Use term wireless instead of network by @vashworth in 124232
  • [flutter_tools] add todo for userMessages by @andrewkolos in 125156
  • Report web compiler used with buildEventSettings by @kevmoo in 125092
  • [flutter_tools] make overall_experience_test resilient to extraneous pub output by @christopherfujino in 125172
  • Fix race condition in flutter test when passing --serve-observatory by @bkonyi in 123556
  • When searching for the JDK bundled with an unrecognized version of Android Studio, assume the version to be the latest by @andrewkolos in 125247
  • Cleanup flutter config output by @mit-mit in 122384
  • add gradle error handler for when the remote ssl host terminates handshake process by @christopherfujino in 125270
  • [tool,web] track web-renderer, and Wasm build args in analytics by @kevmoo in 125336
  • [tool,web] Include more info URI on Wasm init failure by @kevmoo in 125312
  • tool: Move cdKey to CustomDimensionsEnum by @kevmoo in 125335
  • Handle dollar signs properly when generating localizations by @thkim1011 in 125514
  • Refactor "gen-l10n" command to use same code path when "l10n.yaml" is present or not present by @thkim1011 in 125429
  • tools: Drop unused function by @kevmoo in 125590
  • Bump the default minSdkVersion to 19 by @dnfield in 125515
  • [flutter_tools] more debugging for timeouts in break_on_framework_exceptions test by @christopherfujino in 125584
  • Increase Xcode minimum version to 14 by @jmagman in 125639
  • Opt into CMake policy CMP0135 by @yaakovschectman in 125502
  • fix package template create platform folders by @Anas35 in 125292
  • [tools] Apply Android Studio version detection logic to explicitly configured installation directory (flutter config --android-studio-dir) by @andrewkolos in 125596
  • [tools] fix expect calls in FakeCommand by @andrewkolos in 125783
  • Clarify Visual Studio isn't strictly necessary for Windows development by @loic-sharma in 125837
  • Allow .xcworkspace and .xcodeproj to be renamed from default name 'Runner' by @LouiseHsu in 124533
  • Adding printOnFailure for result of process by @eliasyishak in 125910
  • tool: DRY up DepfileService by @kevmoo in 125922
  • tool: use switch expressions by @kevmoo in 125930
  • [tool] Improve help info with build web --wasm flags by @kevmoo in 125907
  • [tool] consistently use environment (not globals) in targets/web.dart by @kevmoo in 125937
  • tool-web-wasm: make wasm-opt an "option" instead of a "flag" by @kevmoo in 126035
  • Adding vmservice to get iOS app settings by @chunhtai in 123156
  • tool-web: use ProcessUtil.run to invoke child processes by @kevmoo in 126109
  • tool: replace top-level functions with enum properties by @kevmoo in 126167
  • Fix incorrect assert hint in flutter.groovy by @b7woreo in 125283
  • improvement : removed required kotlin dependency by @albertoazinar in 125002
  • Rename iosdeeplinksettings to iosuniversallinksettings by @chunhtai in 126173
  • targets/web.dart - fix typo by @kevmoo in 126114
  • Update packages by @guidezpl in 126140
  • Clearer text about what happens with --disable-telemetry + enable-telemetry command by @eliasyishak in 125995
  • Add --verbose flags for flakey tests by @eliasyishak in 126162
  • Always use --concurrency=1 for web tests. by @eyebrowsoffire in 126179
  • [Tool] Output help on 'flutter pub' by @loic-sharma in 126211
  • Fix that flutter test does not understand concurrency by @fzyzcjy in 125942
  • tool/web: tiniest tweak to wasm help content by @kevmoo in 126284
  • tool/web: correctly log all options to web wasm compile by @kevmoo in 126379
  • [tool] Move Java functions to their own file by @andrewkolos in 126086
  • Revert "[tool] Move Java functions to their own file" by @andrewkolos in 126569
  • Add namespace to Android plugin templates by @stuartmorgan in 126354
  • Add debugging for Dart VM timeout flake by @vashworth in 126437
  • Replace rsync when unzipping artifacts on a Mac by @vashworth in 126703
  • [flutter_tools] unpin and roll camera_android by @christopherfujino in 126945
  • [Windows] Improve version migration message by @loic-sharma in 127048
  • Migrate benchmarks to package:web by @joshualitt in 126848
  • fix(flutter_tools): findBundleFile w/multiple flavor dimensions by @felangel in 127133
  • [iOS] Dispose of log readers and port forwarders if launch fails by @vashworth in 127140
  • [tool] delete xcresult bundle file before each xcode retry. by @cyanglaz in 127144
  • [flutter_tools] only try to take a screenshot from flutter drive if the --screenshot flag is passed by @christopherfujino in 127150
  • [Windows] Ensure window is shown by @loic-sharma in 127046
  • Reland "[tool] Move Java functions to their own file" by @andrewkolos in 126577
  • [flutter_tools] delete entitlements files after copying to macos build dir by @christopherfujino in 126875
  • add test for setting JAVA_HOME and PATH when invoking sdkmanager --licenses by @andrewkolos in 127344
  • Suggest that people move to "beta" when they upgrade on "master" by @Hixie in 127146
  • Show warning when attempting to flutter run on an ios device with developer mode turned off by @LouiseHsu in 125710
  • Fix wasm-opt location when using local_web_sdk by @eyebrowsoffire in 127355
  • [Android] Adds namespace to module build file templates by @camsim99 in 126963
  • Log all output of ios-deploy by @vashworth in 127222
  • Revert "Log all output of ios-deploy" by @vashworth in 127405
  • [flutter_tools] delete entitlements files after copying to macos build dir by @christopherfujino in 127417
  • Give channel descriptions in flutter channel, use branch instead of upstream for channel name by @Hixie in 126936
  • Revert "Replace rsync when unzipping artifacts on a Mac (#126703)" by @vashworth in 127430
  • Log all lines from ios-deploy by @vashworth in 127502
  • Revert "Log all lines from ios-deploy (#127502)" by @vashworth in 127684
  • [Windows] Address feedback for show window comment by @loic-sharma in 127998
  • [flutter_tools] Use process matcher for multidex test by @christopherfujino in 127996
  • Fix issue where DevTools would not be immediately available when using --start-paused by @bkonyi in 126698
  • Revert "Fix issue where DevTools would not be immediately available when using --start-paused" by @zanderso in 128117
  • [Refactor] fix quote style in template by @natsuk4ze in 127762
  • Make --flutter-repo analyze whole repo by @goderbauer in 127990
  • Workaround for Dart VM timeout by @vashworth in 127875
  • Roll dds dependency to 2.8.3 for expression evaluation upcoming fixes. by @aam in 128124
  • [flutter_tools] never tree shake 0x20 (space) font codepoints on web by @christopherfujino in 128302
  • [Android] Update plugin and module templates to use Flutter constant for compileSdkVersion by @camsim99 in 128073
  • [tools] allow explicitly specifying the JDK to use via a new config setting by @andrewkolos in 128264
  • Adds vmservices to retrieve android applink settings by @chunhtai in 125998
  • Use --target-os for appropriate precompiled targets. by @sstrickl in 127567
  • [flutter_tools] Precache after channel switch by @christopherfujino in 118129
  • [flutter_tools] [DAP] Don't try to restart/reload if app hasn't started yet by @DanTup in 128267
  • [testing] Make the FLUTTER_STORAGE_BASE_URL warning non-fatal by @whesse in 128335
  • Ignore app.stop events received before the app.detach response in attach integration tests by @jason-simmons in 128593
  • [flutter_tools] pass through enable impeller flag to macOS. by @jonahwilliams in 128720
  • [flutter_tools] Suppress git output in flutter channel by @christopherfujino in 128475
  • Unpin flutter_plugin_android_lifecycle by @gmackall in 128898
  • Fix inconsistently suffixed macOS flavored bundle directory by @arnemolland in 127997
  • [flutter_tools] cache flutter sdk version to disk by @christopherfujino in 124558
  • flutter update-packages --cherry-pick-package by @Hixie in 128917
  • [flutter_tools] refactor license collector by @christopherfujino in 128748
  • [flutter_tools] Migrate more integration tests to process result matcher by @christopherfujino in 128737
  • Fix dart pub cache clean command on pub.dart by @deryrahman in 128171
  • [flutter_tools] Add support for vmServiceFileInfo when attaching by @DanTup in 128503
  • [flutter_tools] fix cast error when dart-defines-json file includes null by @christopherfujino in 128909
  • Fix an ordering dependency in the flutter_tools upgrade test by @jason-simmons in 129131
  • Refactor generate_localizations_test.dart by @thkim1011 in 128974
  • Use the new getIsolatePauseEvent method from VM service to check for pause event. by @chingjun in 128834
  • Fix duplicate devices from xcdevice with iOS 17 by @vashworth in 128802
  • Refactor Analytics global getter to point to context only by @eliasyishak in 129196
  • [flutter_tools] add a gradle error handler for could not open cache directory by @christopherfujino in 129222
  • Prevent crashes on range errors when selecting device by @eliasyishak in 129290
  • Unpin path_provider_android by @gmackall in 129205
  • [flutter_tools] delete flutter format command by @christopherfujino in 129360
  • [web] Hides that Flutter uses requireJS in debug. by @ditman in 129032
  • Prepare for making intl toBeginningOfSentenceCase non-nullable by @oprypin in 127488
  • Reland "Fix issue where DevTools would not be immediately available when using --start-paused (#126698)" by @bkonyi in 129368
  • Remove @NonNull to avoid warning by @fzyzcjy in 129472
  • Add .env file support for option --dart-define-from-file by @PiotrFLEURY in 128668
  • Add new hot reload case string by @helin24 in 130008
  • [flutter_tools] modify Skeleton template to use ListenableBuilder instead of AnimatedBuilder by @fabiancrx in 128810
  • [CP] Fix ConcurrentModificationError in DDS by @christopherfujino in 130740

New Contributors

#
  • @Rexios80 made their first contribution in 123726
  • @adityathakurxd made their first contribution in 124511
  • @gabrielgarciagava made their first contribution in 124459
  • @mub-pro made their first contribution in 122485
  • @Harishwarrior made their first contribution in 124684
  • @Mastersam07 made their first contribution in 124102
  • @9oya made their first contribution in 124743
  • @xcc3641 made their first contribution in 125195
  • @luccasclezar made their first contribution in 121829
  • @arvinwli made their first contribution in 125483
  • @phlippieb-discovery made their first contribution in 125462
  • @natsuk4ze made their first contribution in 126053
  • @Istiak-Ahmed78 made their first contribution in 125785
  • @b7woreo made their first contribution in 125283
  • @albertoazinar made their first contribution in 125002
  • @lindsaypj made their first contribution in 125603
  • @Bungeefan made their first contribution in 126232
  • @MeandNi made their first contribution in 126660
  • @stMerlHin made their first contribution in 125852
  • @JellyO1 made their first contribution in 120235
  • @mhbdev made their first contribution in 126207
  • @felangel made their first contribution in 127133
  • @NikolajHarderNota made their first contribution in 126431
  • @sun-jiao made their first contribution in 127019
  • @dleyba042 made their first contribution in 126896
  • @JsGjKJzi made their first contribution in 127114
  • @matheus-kirchesch-btor made their first contribution in 127113
  • @vasilich6107 made their first contribution in 127269
  • @leighajarett made their first contribution in 128263
  • @khanhnwin made their first contribution in 128078
  • @99spark made their first contribution in 128182
  • @ZhulanovAA made their first contribution in 128501
  • @cruiser-baxter made their first contribution in 128137
  • @arnemolland made their first contribution in 127997
  • @deryrahman made their first contribution in 128171
  • @SwaroopSambhayya made their first contribution in 128814
  • @yeasin50 made their first contribution in 128181
  • @utisam made their first contribution in 128566
  • @AhmedLSayed9 made their first contribution in 129066
  • @oprypin made their first contribution in 127488
  • @paurakhsharma made their first contribution in 128765
  • @crazytan made their first contribution in 129606
  • @ipcjs made their first contribution in 114303
  • @moylanm made their first contribution in 128902
  • @Snonky made their first contribution in 128804
  • @fabiancrx made their first contribution in 128810
  • @HenriqueNas made their first contribution in 128132

Full Changelog: https://github.com/flutter/flutter/compare/3.10.0...3.13.0

Engine

#

Android

#
  • Revert "Add support for double tap action from Apple Pencil 2" by @LouiseHsu in 41138
  • [Android] Send connectionClosed message when keyboard becomes invisible to ensure framework focus state is correct. by @ksballetba in 40746
  • Revert "[Android] Send connectionClosed message when keyboard becomes invisible to ensure framework focus state is correct." by @CaseyHillers in 41211
  • Adds AndroidSurfaceGLImpeller unit tests by @gaaclarke in 40979
  • null check added to avoid NPE while calling FlutterView.detachFromFlutterEngine() by @bastionkid in 41082
  • focus SkiaGPUObject wrappers on only those objects that need the protection by @flar in 41237
  • Determine lifecycle by looking at window focus also by @gspencergoog in 41094
  • [flutter roll] Revert "Determine lifecycle by looking at window focus also" by @XilaiZhang in 41626
  • Clone the parent Android engine's asset provider into a spawned engine by @jason-simmons in 41642
  • Reland: "Determine lifecycle by looking at window focus also" (#41094) by @gspencergoog in 41702
  • Close connection on keyboard close by @ksballetba in 41500
  • Add a Display API to dart:ui that reports the physical size, DPR, and refresh rate of the main display by @dnfield in 41685
  • [Android] Fix incorrect viewInsets during keyboard animation with EdgeToEdge by @JonathanPeterCole in 39391
  • [Android] Lifecycle defaults to focused instead of unfocused by @gspencergoog in 41875
  • [Impeller] [Android] Refactor the Android context/surface implementation to work more like Skia. by @dnfield in 41059
  • [Impeller] Include AndroidSurfaceVulkanImpeller behind a flag by @CaseyHillers in 42033
  • Migrate uses of SkSurface factories by @kjlubick in 41978
  • [Android] Do not collapse text selection on shift key up by @Renzo-Olivares in 42075
  • [Android] Return keyboard pressed state by @bleroux in 41695
  • Makes android embedding to send full uri by @chunhtai in 41836
  • [Android] Fix BasicMessageChannel.resizeChannelBuffer by @bleroux in 41982
  • [Impeller] avoid creating multiple concurrent message loops for Andorid Vulkan by @dnfield in 42146
  • Move SkSurface::MakeNull to SkSurfaces::Null by @kjlubick in 42158
  • Adding app lifecycle notification for macOS and Linux, add hidden state. by @gspencergoog in 40542
  • Revert "Adding app lifecycle notification for macOS and Linux, add hidden state." by @zanderso in 42384
  • Reland: "Adding app lifecycle notification for macOS and Linux, add hidden state." (#40542) by @gspencergoog in 42418
  • Handle a11y focus event on Ios and android by @hangyujin in 41777
  • Fix crash getting spell-check suggestions by @moffatman in 42466
  • [Impeller] Add Impeller Metal support in the embedder API by @bdero in 42411
  • Ensure PlatformView engine life cycle callbacks are invoked by @johnmccutchan in 42491
  • [Android] Bump unit test robolectric version to 4.10.3 by @camsim99 in 42454
  • Revert "[Impeller] Add Impeller Metal support in the embedder API (#42411)" by @bdero in 42532
  • [Impeller] Reland: Add Impeller Metal support in the embedder API (#42411) by @bdero in 42545
  • Revert "[Impeller] Reland: Add Impeller Metal support in the embedder API (#42411)" by @zanderso in 42593
  • [Impeller] Reland 2: Add Impeller Metal support in the embedder API (#42411) by @bdero in 42597
  • Revert "[Android] Return keyboard pressed state" by @dkwingsmt in 42616
  • [Impeller] Added a switch to turn on vulkan by @gaaclarke in 42585
  • Revert "[Impeller] Added a switch to turn on vulkan" by @zanderso in 42660
  • Platform channel for predictive back by @justinmc in 39208
  • [Impeller] Makes validation layers flag work for android by @gaaclarke in 42625
  • [Impeller] Reland: Added a switch to turn on vulkan by @gaaclarke in 42669
  • Predictive back breakage fix by @justinmc in 42789
  • Capture additional final inset states in ImeSyncDeferringInsetsCallback by @gmackall in 42700
  • [Impeller] Reland attempt Vulkan setup and fallback to GLES. by @jonahwilliams in 42820
  • [Android] Return the keyboard pressed state by @bleroux in 42758
  • [android]: Make Robolectric tests work with SDK 33 by @utzcoz in 42965
  • Add a note in ImeSyncDeferringInsetsCallback explaining the reason behind capturing the latest final inset state by @gmackall in 43109
  • [Impeller] Give Impeller a dedicated raster priority level worker loop. by @jonahwilliams in 43166

iOS

#
  • Fix UIWindowSceneGeometryPreferencesIOS leak by @jmagman in 40957
  • Reland [iOS] Send connectionClosed message when resignFirstResponder to ensure framework focus state is correct. by @luckysmg in 41022
  • [ios] fix background crash when FlutterViewController is destroyed after engine destroyed context by @cyanglaz in 41037
  • [Impeller] Make Metal layers readable by @bdero in 41085
  • Makes iOS VoiceOver treat radio buttons as regualr buttons by @chunhtai in 41036
  • [rotation_distortion] Use "delayed swap" solution to reduce rotation distortion by @hellohuanlin in 40730
  • [Impeller] Turned on wide gamut support by default. by @gaaclarke in 39801
  • Some minor doc typo and diagnostic fixes. by @gspencergoog in 40982
  • Revert "[Impeller] Turned on wide gamut support by default." by @zanderso in 41382
  • [Impeller] Always use BGRA10_XR for wide gamut by @bdero in 41385
  • [ios] Fix hold and drag spacebar does not move cursor when obscureText is true. by @LinXunFeng in 40216
  • Made sure not to turn on wide gamut support without impeller. by @gaaclarke in 41460
  • [Impeller] iOS/macOS: Only wait for command scheduling prior to present (redux) by @bdero in 41501
  • [platform_view] Only dispose view when it is removed from the composition order by @cyanglaz in 41521
  • Disable flaky tests on arm64 by @dnfield in 41740
  • Fix flaky FlutterChannelsTests, stop mocking NSObject by @jmagman in 41747
  • [backdrop_filter]Avoid relying on internal class details by @hellohuanlin in 41873
  • iPhone floating cursor selection by @moffatman in 36643
  • [Impeller] switches the wide gamut surface to f16 by @gaaclarke in 41994
  • [ios_platform_view] Only remove platform views from flutter view in reset. by @cyanglaz in 41709
  • [ios_platform_view] only recycle maskView when the view is applying mutators by @cyanglaz in 41573
  • Revert "[ios_platform_view] only recycle maskView when the view is applying mutators" by @zanderso in 42080
  • [Impeller] Turned on wide gamut support by default. (#39801) by @gaaclarke in 41965
  • Make iOS embedding to send full uri for deeplinks by @chunhtai in 41992
  • [floating_cursor_selection]add some comments on the tricky part by @hellohuanlin in 42136
  • Overrides accessibilityScrollToVisible by @chunhtai in 42047
  • Reland "[ios_platform_view] only recycle maskView when the view is applying mutators #41573" by @cyanglaz in 42115
  • Revert "[ios_platform_view] only recycle maskView when the view is applying mutators #41573" by @zanderso in 42231
  • [Impeller] Encode render passes concurrently on iOS. by @jonahwilliams in 42028
  • [Impeller] Disable the wide gamut settings flag on iOS simulators by @jason-simmons in 42331
  • Fix unitialized SkRect by @knopp in 42403
  • Improve getting non-overlapping rectangles from RTree by @knopp in 42399
  • [iOS] Fix TextInputAction.continueAction sends wrong action to framework by @bleroux in 42615
  • Use ShellTest::Config struct to create Shell by @dkwingsmt in 42332
  • Fix crash with CJK keyboard with emoji at end of text field by @moffatman in 42540
  • [floating_cursor_selection] a somewhat "design doc" for floating cursor feature by @hellohuanlin in 42173
  • [iOS][Keyboard] Wait vsync on UI thread and update viewport inset to avoid jitter. by @luckysmg in 42312
  • Reland "[ios_platform_view] only recycle maskView when the view is applying mutators #42115" by @cyanglaz in 42823
  • Remove some trivial deprecated symbol usages in iOS Embedder by @cyanglaz in 42711
  • [ios] view controller based status bar by @cyanglaz in 42643
  • [ios] use interfaceOrientation orientation on iOS 13 and above by @cyanglaz in 42846
  • [CP][iOS][Keyboard] Fix crash when FlutterEngine destroys at the same time with keyboard animation vsync callback by @cyanglaz in 43522
  • [iOS] Fix FlutterViewController retain cycle (#43379) by @cyanglaz in 43523
  • [CP][iOS][A11Y] fix hittest with non-SemanticsObject by @cyanglaz in 44342
  • [CP][ios][autocorrection]disable autocorrection for ios 17 by @hellohuanlin in 44354

Web

#
  • [web] Make 'Noto Color Emoji' opt-in by @mdebbar in 40990
  • Skwasm scene by @eyebrowsoffire in 40330
  • Re-enable some wasm tests which have been fixed now. by @eyebrowsoffire in 40931
  • SemanticsFlag/SemanticsAction cleanup (part 3) by @bernaferrari in 40567
  • [web] - Move text editing nodes outside of shadowDOM, reland by @htoor3 in 40968
  • Implement shadows in the skwasm renderer. by @eyebrowsoffire in 41056
  • Improve Wasm Debugging. by @eyebrowsoffire in 41054
  • SemanticsAction / SemanticsFlag cleanup part 5 by @bernaferrari in 41126
  • Include ui_web API files in sky_engine. by @eyebrowsoffire in 40846
  • Don't use OffscreenCanvas in Safari, it doesn't support WebGL. by @eyebrowsoffire in 41135
  • [web:canvaskit] move path API to UniqueRef by @yjbanov in 41136
  • Implement Gradient Shaders and Fragment Shaders in Skwasm by @eyebrowsoffire in 41144
  • Fix skwasm's canvasDrawArc declaration and write tests. by @eyebrowsoffire in 41165
  • [web:canvaskit] move shaders to UniqueRef; fix minor memory leaks by @yjbanov in 41172
  • [web:canvaskit] migrate Paint API to UniqueRef by @yjbanov in 41230
  • Reland ui_web files in sky_engine by @eyebrowsoffire in 41169
  • [web:canvaskit] clean up the rest of skia_object_cache usages by @yjbanov in 41259
  • [web:canvaskit] remove unnecessary instrumentation from picture by @yjbanov in 41313
  • [web] Remove non-ShadowDom mode by @mdebbar in 39915
  • [web] Fix trivial type issue. by @joshualitt in 40956
  • [web] change status bar color based on SystemUiOverlayStyle by @maRci002 in 40599
  • [web] Fix HashUrlStrategy.addPopStateListener by @ditman in 41384
  • Remove package:js references and move to dart:js_interop by @srujzs in 41212
  • Turn @staticInterop tear-off into closure by @srujzs in 41643
  • Web - Fix selection jump on Chrome for Android by @bleroux in 41202
  • [web] Add dart:js_interop_unsafe to SDK. by @joshualitt in 41591
  • [web] Remove unused function parameter by @mdebbar in 41700
  • [web] Improve null safety for color->css by @mdebbar in 41699
  • Remove physical model layer by @jonahwilliams in 41593
  • Populate fallback fonts from CIPD in tests by @eyebrowsoffire in 41656
  • Skwasm Font Loading by @eyebrowsoffire in 41246
  • Revert "Skwasm Font Loading" by @eyebrowsoffire in 41750
  • Reland "Skwasm Font Loading by @eyebrowsoffire in 41756
  • Get rid of "outrageous" default text styles for HTML renderer. by @eyebrowsoffire in 41822
  • Implement text rendering in Skwasm by @eyebrowsoffire in 41832
  • [web] dialog a11y fixes by @yjbanov in 41681
  • [web] Re-enable history tests on Safari by @mdebbar in 41901
  • [web] generalize focusability in semantics by @yjbanov in 41831
  • [web] Expose PlatformLocation and HashUrlStrategy through ui_web by @mdebbar in 41163
  • Turn @staticInterop tear-off into closure by @srujzs in 41885
  • Return fonts in a deterministic order. by @eyebrowsoffire in 41907
  • [web] Fix crash on old versions of Chrome (Intl.Segmenter missing) by @mdebbar in 41986
  • [Web+Linux] Fix pressing Meta keys throws by @bleroux in 41694
  • [web] Cleaner output on LUCI by @mdebbar in 41989
  • Compile skwasm at -Oz. by @eyebrowsoffire in 42002
  • Use new unresolvedCodePoints API from skia. by @eyebrowsoffire in 41991
  • Initial support for images in Skwasm by @eyebrowsoffire in 42019
  • Use client ICU data with skwasm. by @eyebrowsoffire in 42018
  • [web] Simplify handling of custom url strategy by @mdebbar in 42043
  • [web:a11y] support dialogs described by descendants by @yjbanov in 42108
  • [web] Cleanup Vector3 by @mdebbar in 42096
  • [web] Fix event offset for transformed widgets (and text input nodes). by @htoor3 in 41870
  • Implement ImageFilter/ColorFilter/MaskFilter in Skwasm by @eyebrowsoffire in 42088
  • [web] Move platformViewRegistry to ui_web by @mdebbar in 41877
  • Roll watcher dependency for web_ui to 1.1.0. by @aam in 42248
  • [web] Cleanup assertionsEnabled by @mdebbar in 41829
  • [web] Update a11y announcements to append divs instead of setting content. by @marcianx in 42258
  • [web] Hide JS types from dart:ui_web by @mdebbar in 42252
  • [web] Remove comment about dart:html migration by @mdebbar in 42290
  • Implement PlatformDispatcher.displays on web by @dnfield in 42297
  • Only use 8 cores for web test compilation. by @eyebrowsoffire in 42321
  • Implement Web Codecs for Skwasm by @eyebrowsoffire in 42184
  • [Skwasm] Implement miscellaneous drawing APIs by @eyebrowsoffire in 42324
  • Proper memory management in Skwasm by @eyebrowsoffire in 42328
  • Apply the drawShadow bounds workaround to the Web HTML backend by @jason-simmons in 42304
  • [web] - Fix autofill group input ordering by @htoor3 in 42268
  • Don't use a factory constructor on the finalization registry. by @eyebrowsoffire in 42350
  • [web] Use the new js_util.callMethod(Object, Object) by @mdebbar in 42352
  • [web] Correct JS property name for baseUri by @mdebbar in 42357
  • [web] Remove the JS API for url strategy by @mdebbar in 42134
  • Revert "[web] Remove the JS API for url strategy" by @jonahwilliams in 42468
  • Reland "[web] Remove the JS API for url strategy (#42134)" by @mdebbar in 42486
  • [web] Move announcement live elements to the end of the DOM and make them divs instead of labels. by @marcianx in 42432
  • [web] New platform view API to get view by ID by @mdebbar in 41784
  • MultiView changes for dart:ui by @goderbauer in 42493
  • [web] Support platform view creation params by @mdebbar in 42255
  • Add missing includes of GrBackendSurface.h by @kjlubick in 42563
  • Remove onSemanticsAction by @goderbauer in 42579
  • Use proper sampling options in Skwasm's drawAtlas. by @eyebrowsoffire in 42595
  • [web] Remove /#/ from home page URL by @mdebbar in 42598
  • Fix prefer_final_in_for_each by @scheglov in 42899
  • [web] Move webOnlyAssetManager to dart:ui_web by @mdebbar in 42642
  • add dart_internal override where necessary by @jakemac53 in 42920
  • [web] Fix for Safari autofill flickering bug by @htoor3 in 42830
  • [web] Don't get break type from v8BreakIterator by @mdebbar in 43053
  • [web] - Fix for Safari partially autofilling form by @htoor3 in 43058
  • Refactor JSNumber.toDart and Object.toJS by @srujzs in 43149
  • [web] Removes patchCanvasKitModule. by @ditman in 42941
  • Initialize skwasm codecs before handing them back to the user. by @eyebrowsoffire in 43274
  • [web:a11y] introduce primary role responsible for ARIA roles by @yjbanov in 43159
  • Revert "Refactor JSNumber.toDart and Object.toJS" by @srujzs in 43286
  • Include the SkRTreeFactory headers in the skwasm picture recorder by @jason-simmons in 43292
  • Prepare for utf8.encode() to return more precise Uint8List type by @mkustermann in 43335
  • [web] Move web-only initialization APIs to dart:ui_web by @mdebbar in 43111
  • [web] Add nonce configuration. by @ditman in 42829

Desktop

#
  • Fix flaky Windows exit unit test, remove error messages by @yaakovschectman in 40945
  • [mac] Build mac framework with app extension flag by @cyanglaz in 41011
  • [Windows] Ignore case optionally in AXPlatformNodeTextRangeProviderWin::FindText by @yaakovschectman in 39922
  • [Windows] Shutdown the engine before destroying the surface by @loic-sharma in 41012
  • [macOS] Fix arm64 floating-point test failure by @cbracken in 41228
  • [macOS] Fix Ctrl+Tab is broken by @bleroux in 40706
  • Move ownership of AccessibilityBridgeWindows to FlutterWindowsView by @yaakovschectman in 41308
  • [Windows] Don't block raster thread until v-blank by @loic-sharma in 41231
  • [macOS] Add lookupKeyForAsset to FlutterPluginRegistrar by @zhongwuzw in 37421
  • [macOS] Remove view ID from public by @dkwingsmt in 41712
  • [macOS] Change view ID's type to signed and a typedef by @dkwingsmt in 41653
  • Only register top level window message listener upon registering service binding by @yaakovschectman in 41733
  • [macos] Disable background colour tests by @cbracken in 41904
  • [macOS - TextInput] Insert new line only when TextInputAction.newline by @bleroux in 41977
  • [Windows] Add force redraw to the C++ client wrapper by @loic-sharma in 42061
  • [macOS] Wait for binding to be ready before requesting exits from framework by @gspencergoog in 41753
  • Report displays for macOS by @dnfield in 41998
  • [macOS] Clean up PlatformView mutator scaling by @cbracken in 42110
  • [macOS] Refactor PlatformView mutators by @cbracken in 42130
  • [macOS] Extract PlatformView mutator clip updating by @cbracken in 42164
  • [macOS] Clean up unused methods in FlutterRenderer by @dkwingsmt in 42196
  • [macOS] Fix FlutterViewController retain cycle by @knopp in 42317
  • [macOS] Multi-view thread synchronizer by @dkwingsmt in 41915
  • [macOS] Do not bounce editing state back to framework on setEditState by @Renzo-Olivares in 42091
  • [macOS] Extract more PlatformViewMutator code by @cbracken in 42361
  • [Windows - TextInput] Insert new line only when TextInputAction.newline by @bleroux in 42244
  • [macOS] Top-left origin for PlatformView container by @cbracken in 42523
  • [macOS] Force clipping to path when platform view clip rect is rotated by @knopp in 42539
  • [macOS] Add platformview creation parameter support by @cbracken in 42607
  • [Impeller] allowing enabling Impeller on macOS. by @jonahwilliams in 42639
  • Fix inverted boolean in Windows document selection changed a11y event by @yaakovschectman in 43281

New Contributors

#
  • @drwez made their first contribution in 41154
  • @bastionkid made their first contribution in 41082
  • @maRci002 made their first contribution in 40599
  • @andoriyaprashant made their first contribution in 41397
  • @maruel made their first contribution in 41585
  • @JonathanPeterCole made their first contribution in 39391
  • @Mayb3Nots made their first contribution in 41739
  • @selfisekai made their first contribution in 41794
  • @marcianx made their first contribution in 42258
  • @mk12 made their first contribution in 42667

Full Changelog: https://github.com/flutter/engine/compare/3.10.0...3.13.0