Skip to content

Remove the option to disable the merged platform/UI thread on Android and iOS - #174408

Merged
jtmcdole merged 3 commits into
flutter:masterfrom
jason-simmons:merged_plat_ui_override_disable
Aug 28, 2025
Merged

jtmcdole merged 3 commits into
flutter:masterfrom
jason-simmons:merged_plat_ui_override_disable

Conversation

@jason-simmons

@jason-simmons jason-simmons commented Aug 25, 2025 •

Copy link
Copy Markdown
Member

See #150525 for background on the migration to a merged platform/UI thread.

The merged platform/UI thread model has been the default option for nearly a year on the Android and iOS platforms and has been successfully deployed in major applications. Future versions of the Flutter engine will require the merged thread model, which provides benefits to embedders such as synchronous calls between the host platform main thread and Dart isolates.

@jason-simmons
jason-simmons requested review from a team as code owners August 25, 2025 23:46
@github-actions github-actions Bot added platform-android Android applications specifically platform-ios iOS applications specifically engine flutter/engine related. See also e: labels. team-android Owned by Android platform team team-ios Owned by iOS platform team labels Aug 25, 2025

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes the option to disable the merged platform/UI thread on Android and iOS. It achieves this by introducing a new parameter to SettingsFromCommandLine to enforce the merged thread model, which is now enabled by default on these platforms. The changes also update the Android and iOS platform code to disallow the old configuration settings and provide clear error messages. Additionally, command-line switch definitions have been refactored into a new switch_defs.h header for better organization, and a unit test has been added to verify the new enforcement logic.

Comment thread engine/src/flutter/shell/common/switch_defs.h Outdated

@reidbaker reidbaker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jason-simmons consider adding a pr description with links to the reasons why we unified the threads and any additional information for why we thought it was time to remove the ability to opt out.

I think it is the right time but if someone comes across this pr lets help them out.

Comment thread engine/src/flutter/shell/common/switch_defs.h Outdated
@jason-simmons

Copy link
Copy Markdown
Member Author

@jason-simmons consider adding a pr description with links to the reasons why we unified the threads and any additional information for why we thought it was time to remove the ability to opt out.

I think it is the right time but if someone comes across this pr lets help them out.

Added an explanation in the PR description.

@jtmcdole jtmcdole left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

printer2

@jtmcdole

Copy link
Copy Markdown
Member

Google testing requires this tree to be synced to head I bleieve

@jason-simmons
jason-simmons force-pushed the merged_plat_ui_override_disable branch from 86fe5e3 to 98ee2aa Compare August 27, 2025 18:00
@flutter-dashboard

Copy link
Copy Markdown

CI had a failure that stopped further tests from running. We need to investigate to determine the root cause.

SHA at time of execution: 36d6006.

Possible causes:

  • Configuration Changes: The .ci.yaml file might have been modified between the creation of this pull request and the start of this test run. This can lead to ci yaml validation errors.
  • Infrastructure Issues: Problems with the CI environment itself (e.g., quota) could have caused the failure.

A blank commit, or merging to head, will be required to resume running CI for this PR.

Error Details:

DetailedApiRequestError(status: 503, message: Policy checks are unavailable.)

Stack trace:

#0      validateResponse (package:_discoveryapis_commons/src/api_requester.dart:306:9)
<asynchronous suspension>
#1      ApiRequester.request (package:_discoveryapis_commons/src/api_requester.dart:72:16)
<asynchronous suspension>
#2      ProjectsTopicsResource.publish (package:googleapis/pubsub/v1.dart:2091:23)
<asynchronous suspension>
#3      PubSub.publish (package:cocoon_service/src/request_handling/pubsub.dart:33:22)
<asynchronous suspension>
#4      LuciBuildService.scheduleTryBuilds (package:cocoon_service/src/service/luci_build_service.dart:350:7)
<asynchronous suspension>
#5      Scheduler._runCiTestingStage (package:cocoon_service/src/service/scheduler.dart:1253:9)
<asynchronous suspension>
#6      Scheduler.proceedToCiTestingStage (package:cocoon_service/src/service/scheduler.dart:1314:7)
<asynchronous suspension>
#7      Scheduler._closeSuccessfulEngineBuildStage (package:cocoon_service/src/service/scheduler.dart:1121:5)
<asynchronous suspension>
#8      Scheduler.processCheckRunCompleted (package:cocoon_service/src/service/scheduler.dart:1054:9)
<asynchronous suspension>
#9      PresubmitLuciSubscription.post (package:cocoon_service/src/request_handlers/presubmit_luci_subscription.dart:135:7)
<asynchronous suspension>
#10     RequestHandler.service (package:cocoon_service/src/request_handling/request_handler.dart:45:20)
<asynchronous suspension>
#11     SubscriptionHandler.service (package:cocoon_service/src/request_handling/subscription_handler.dart:140:5)
<asynchronous suspension>
#12     createServer.<anonymous closure> (package:cocoon_service/server.dart:339:7)
<asynchronous suspension>

@jason-simmons
jason-simmons force-pushed the merged_plat_ui_override_disable branch from 36d6006 to a8d2dac Compare August 28, 2025 14:42
@jason-simmons jason-simmons added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 28, 2025
@auto-submit
auto-submit Bot added this pull request to the merge queue Aug 28, 2025
@jtmcdole
jtmcdole removed this pull request from the merge queue due to a manual request Aug 28, 2025
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Aug 28, 2025
@jtmcdole
jtmcdole added this pull request to the merge queue Aug 28, 2025
@jtmcdole

Copy link
Copy Markdown
Member

Removed and re-added to queue. Cocoon never scheduled.

Merged via the queue into flutter:master with commit d721cab Aug 28, 2025
187 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 30, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 30, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 31, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 31, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 1, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Sep 2, 2025
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Sep 2, 2025
Roll Flutter from da5523a to 6b18740 (49 revisions)

flutter/flutter@da5523a...6b18740

2025-08-29 [email protected] Roll Dart SDK from 11f6cd99f6b3 to 72cda0f3dc42 (2 revisions) (flutter/flutter#174697)
2025-08-29 [email protected] Fix empty adaptive text selection toolbars building. (flutter/flutter#174656)
2025-08-29 [email protected] [flutter_test] update the _isImportantForAccessibility method in SemanticsController to include tooltip (flutter/flutter#174476)
2025-08-29 [email protected] Roll Skia from 89794f0b5384 to 43e79dc80ca8 (1 revision) (flutter/flutter#174678)
2025-08-29 [email protected] Roll Skia from f3c8b4c677f5 to 89794f0b5384 (6 revisions) (flutter/flutter#174675)
2025-08-29 [email protected] Implement Overlay.of with inherited widget (flutter/flutter#174315)
2025-08-29 [email protected] [impeller] Support partitioned host buffer (flutter/flutter#174463)
2025-08-29 [email protected] Adds semantics for disabled buttons in date picker (flutter/flutter#174064)
2025-08-29 [email protected] Roll Fuchsia Linux SDK from bHYRvLv2Dg56RWZF2... to 00VSr-5B7hq0G2eZx... (flutter/flutter#174667)
2025-08-29 [email protected] Check GTK calls are done on the same thread. (#174488) (flutter/flutter#174624)
2025-08-29 [email protected] [ Tool ] Only listen for DebugConnectionInfo if the service protocol is supported (flutter/flutter#174664)
2025-08-29 [email protected] Roll Dart SDK from 89023922f96d to 11f6cd99f6b3 (9 revisions) (flutter/flutter#174669)
2025-08-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[web] Refactor renderers to use the same frontend code (#174588)" (flutter/flutter#174672)
2025-08-28 [email protected] [a11y] [test] containsSemantics  can ignore SemanticsValidationResult (flutter/flutter#174608)
2025-08-28 [email protected] Fix some issues in engine-tool README. (flutter/flutter#174512)
2025-08-28 [email protected] Marks Linux_pixel_7pro new_gallery__transition_perf to be flaky (flutter/flutter#174106)
2025-08-28 [email protected] Make sure that an AlertDialog doesn't crash in 0x0 environment (flutter/flutter#174091)
2025-08-28 [email protected] Marks Linux_pixel_7pro hello_world_impeller to be flaky (flutter/flutter#173699)
2025-08-28 [email protected] Marks Linux_pixel_7pro drive_perf_debug_warning to be flaky (flutter/flutter#174112)
2025-08-28 [email protected] Marks Linux_android_emu android_display_cutout to be flaky (flutter/flutter#174501)
2025-08-28 [email protected] Marks Linux_pixel_7pro service_extensions_test to be flaky (flutter/flutter#174114)
2025-08-28 [email protected] Marks Windows plugin_test to be flaky (flutter/flutter#174117)
2025-08-28 [email protected] Marks Windows_mokey basic_material_app_win__compile to be flaky (flutter/flutter#173702)
2025-08-28 [email protected] Marks Mac_mokey microbenchmarks to be flaky (flutter/flutter#174102)
2025-08-28 [email protected] Marks Linux_mokey complex_layout__start_up to be flaky (flutter/flutter#173692)
2025-08-28 [email protected] Marks Linux build_android_host_app_with_module_aar to be flaky (flutter/flutter#172631)
2025-08-28 [email protected] Marks Linux_pixel_7pro new_gallery_opengles_impeller__transition_perf to be flaky (flutter/flutter#173338)
2025-08-28 [email protected] Marks Linux_pixel_7pro platform_views_scroll_perf_impeller__timeline_summary to be flaky (flutter/flutter#172211)
2025-08-28 [email protected] Remove the option to disable the merged platform/UI thread on Android and iOS (flutter/flutter#174408)
2025-08-28 [email protected] Don't fail when hot restarting `web-server` and there are no connected clients (flutter/flutter#174600)
2025-08-28 [email protected] Roll Skia from 7c2fe2629d4a to f3c8b4c677f5 (7 revisions) (flutter/flutter#174654)
2025-08-28 [email protected] [WebParagraph] More plumbing towards making it usable in Flutter apps (flutter/flutter#174587)
2025-08-28 [email protected] Roll Packages from 86fbeec to 141d8e3 (6 revisions) (flutter/flutter#174645)
2025-08-28 [email protected] [web] Refactor renderers to use the same frontend code (flutter/flutter#174588)
2025-08-28 [email protected] Roll Skia from eb000b138a9d to 7c2fe2629d4a (3 revisions) (flutter/flutter#174637)
2025-08-28 [email protected] [ Tool ] Roll package:dwds 25.0.4 (flutter/flutter#174601)
2025-08-28 [email protected] Roll Skia from 9b1642f2cfea to eb000b138a9d (2 revisions) (flutter/flutter#174627)
2025-08-28 [email protected] Roll Skia from 430d60054d66 to 9b1642f2cfea (7 revisions) (flutter/flutter#174625)
2025-08-28 [email protected] Refactored Canvas to disallow null inline contexts. (flutter/flutter#174530)
2025-08-28 [email protected] Revert "Check GTK calls are done on the same thread." (flutter/flutter#174604)
2025-08-27 [email protected] Roll Skia from 2a12b57fbbf0 to 430d60054d66 (3 revisions) (flutter/flutter#174590)
2025-08-27 [email protected] Retry "Implements the Android native stretch effect as a fragment shader (Impeller-only)." (flutter/flutter#173885)
2025-08-27 [email protected] Use raw `--removal-label "cp: ..."` when removing labels for unmerged PRs (flutter/flutter#174596)
2025-08-27 [email protected] Flutter driver deserialization (flutter/flutter#172927)
2025-08-27 [email protected] Check GTK calls are done on the same thread. (flutter/flutter#174488)
2025-08-27 [email protected] Fix broken reference to `PULL_REQUEST_CP_TEMPLATE.md` after refactor (flutter/flutter#174595)
...
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
… and iOS (flutter#174408)

See flutter#150525 for background on
the migration to a merged platform/UI thread.

The merged platform/UI thread model has been the default option for
nearly a year on the Android and iOS platforms and has been successfully
deployed in major applications. Future versions of the Flutter engine
will require the merged thread model, which provides benefits to
embedders such as synchronous calls between the host platform main
thread and Dart isolates.
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
… and iOS (flutter#174408)

See flutter#150525 for background on
the migration to a merged platform/UI thread.

The merged platform/UI thread model has been the default option for
nearly a year on the Android and iOS platforms and has been successfully
deployed in major applications. Future versions of the Flutter engine
will require the merged thread model, which provides benefits to
embedders such as synchronous calls between the host platform main
thread and Dart isolates.
Jaineel-Mamtora pushed a commit to Jaineel-Mamtora/flutter_forked that referenced this pull request Sep 24, 2025
… and iOS (flutter#174408)

See flutter#150525 for background on
the migration to a merged platform/UI thread.

The merged platform/UI thread model has been the default option for
nearly a year on the Android and iOS platforms and has been successfully
deployed in major applications. Future versions of the Flutter engine
will require the merged thread model, which provides benefits to
embedders such as synchronous calls between the host platform main
thread and Dart isolates.
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 12, 2025
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
… and iOS (flutter#174408)

See flutter#150525 for background on
the migration to a merged platform/UI thread.

The merged platform/UI thread model has been the default option for
nearly a year on the Android and iOS platforms and has been successfully
deployed in major applications. Future versions of the Flutter engine
will require the merged thread model, which provides benefits to
embedders such as synchronous calls between the host platform main
thread and Dart isolates.
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
Roll Flutter from da5523a to 6b18740 (49 revisions)

flutter/flutter@da5523a...6b18740

2025-08-29 [email protected] Roll Dart SDK from 11f6cd99f6b3 to 72cda0f3dc42 (2 revisions) (flutter/flutter#174697)
2025-08-29 [email protected] Fix empty adaptive text selection toolbars building. (flutter/flutter#174656)
2025-08-29 [email protected] [flutter_test] update the _isImportantForAccessibility method in SemanticsController to include tooltip (flutter/flutter#174476)
2025-08-29 [email protected] Roll Skia from 89794f0b5384 to 43e79dc80ca8 (1 revision) (flutter/flutter#174678)
2025-08-29 [email protected] Roll Skia from f3c8b4c677f5 to 89794f0b5384 (6 revisions) (flutter/flutter#174675)
2025-08-29 [email protected] Implement Overlay.of with inherited widget (flutter/flutter#174315)
2025-08-29 [email protected] [impeller] Support partitioned host buffer (flutter/flutter#174463)
2025-08-29 [email protected] Adds semantics for disabled buttons in date picker (flutter/flutter#174064)
2025-08-29 [email protected] Roll Fuchsia Linux SDK from bHYRvLv2Dg56RWZF2... to 00VSr-5B7hq0G2eZx... (flutter/flutter#174667)
2025-08-29 [email protected] Check GTK calls are done on the same thread. (#174488) (flutter/flutter#174624)
2025-08-29 [email protected] [ Tool ] Only listen for DebugConnectionInfo if the service protocol is supported (flutter/flutter#174664)
2025-08-29 [email protected] Roll Dart SDK from 89023922f96d to 11f6cd99f6b3 (9 revisions) (flutter/flutter#174669)
2025-08-28 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[web] Refactor renderers to use the same frontend code (#174588)" (flutter/flutter#174672)
2025-08-28 [email protected] [a11y] [test] containsSemantics  can ignore SemanticsValidationResult (flutter/flutter#174608)
2025-08-28 [email protected] Fix some issues in engine-tool README. (flutter/flutter#174512)
2025-08-28 [email protected] Marks Linux_pixel_7pro new_gallery__transition_perf to be flaky (flutter/flutter#174106)
2025-08-28 [email protected] Make sure that an AlertDialog doesn't crash in 0x0 environment (flutter/flutter#174091)
2025-08-28 [email protected] Marks Linux_pixel_7pro hello_world_impeller to be flaky (flutter/flutter#173699)
2025-08-28 [email protected] Marks Linux_pixel_7pro drive_perf_debug_warning to be flaky (flutter/flutter#174112)
2025-08-28 [email protected] Marks Linux_android_emu android_display_cutout to be flaky (flutter/flutter#174501)
2025-08-28 [email protected] Marks Linux_pixel_7pro service_extensions_test to be flaky (flutter/flutter#174114)
2025-08-28 [email protected] Marks Windows plugin_test to be flaky (flutter/flutter#174117)
2025-08-28 [email protected] Marks Windows_mokey basic_material_app_win__compile to be flaky (flutter/flutter#173702)
2025-08-28 [email protected] Marks Mac_mokey microbenchmarks to be flaky (flutter/flutter#174102)
2025-08-28 [email protected] Marks Linux_mokey complex_layout__start_up to be flaky (flutter/flutter#173692)
2025-08-28 [email protected] Marks Linux build_android_host_app_with_module_aar to be flaky (flutter/flutter#172631)
2025-08-28 [email protected] Marks Linux_pixel_7pro new_gallery_opengles_impeller__transition_perf to be flaky (flutter/flutter#173338)
2025-08-28 [email protected] Marks Linux_pixel_7pro platform_views_scroll_perf_impeller__timeline_summary to be flaky (flutter/flutter#172211)
2025-08-28 [email protected] Remove the option to disable the merged platform/UI thread on Android and iOS (flutter/flutter#174408)
2025-08-28 [email protected] Don't fail when hot restarting `web-server` and there are no connected clients (flutter/flutter#174600)
2025-08-28 [email protected] Roll Skia from 7c2fe2629d4a to f3c8b4c677f5 (7 revisions) (flutter/flutter#174654)
2025-08-28 [email protected] [WebParagraph] More plumbing towards making it usable in Flutter apps (flutter/flutter#174587)
2025-08-28 [email protected] Roll Packages from 86fbeec to 141d8e3 (6 revisions) (flutter/flutter#174645)
2025-08-28 [email protected] [web] Refactor renderers to use the same frontend code (flutter/flutter#174588)
2025-08-28 [email protected] Roll Skia from eb000b138a9d to 7c2fe2629d4a (3 revisions) (flutter/flutter#174637)
2025-08-28 [email protected] [ Tool ] Roll package:dwds 25.0.4 (flutter/flutter#174601)
2025-08-28 [email protected] Roll Skia from 9b1642f2cfea to eb000b138a9d (2 revisions) (flutter/flutter#174627)
2025-08-28 [email protected] Roll Skia from 430d60054d66 to 9b1642f2cfea (7 revisions) (flutter/flutter#174625)
2025-08-28 [email protected] Refactored Canvas to disallow null inline contexts. (flutter/flutter#174530)
2025-08-28 [email protected] Revert "Check GTK calls are done on the same thread." (flutter/flutter#174604)
2025-08-27 [email protected] Roll Skia from 2a12b57fbbf0 to 430d60054d66 (3 revisions) (flutter/flutter#174590)
2025-08-27 [email protected] Retry "Implements the Android native stretch effect as a fragment shader (Impeller-only)." (flutter/flutter#173885)
2025-08-27 [email protected] Use raw `--removal-label "cp: ..."` when removing labels for unmerged PRs (flutter/flutter#174596)
2025-08-27 [email protected] Flutter driver deserialization (flutter/flutter#172927)
2025-08-27 [email protected] Check GTK calls are done on the same thread. (flutter/flutter#174488)
2025-08-27 [email protected] Fix broken reference to `PULL_REQUEST_CP_TEMPLATE.md` after refactor (flutter/flutter#174595)
...
cbracken added a commit to cbracken/flutter that referenced this pull request Aug 7, 2026
iOS runs with the platform and UI threads merged, and it's not possible
to create an engine with unmerged platform/ui threads, but
`FlutterEngine` still included branches to create the unmerged threads
when `Settings::merged_platform_ui_thread` wasn't enabled.

The option to opt-out of merged threads on iOS was removed in flutter#174408 in
Aug 2025, and it had been the default configuration for over a year at
that point.

Both existing routes to a non-merged thread configuration already failed
at startup:

* Setting `FLTEnableMergedPlatformUIThread=false` in Info.plist causes
  an `FML_CHECK` in `FlutterDartProject.mm` to blow up.
* Setting `--no-enable-merged-platform-ui-thread` or
  `--merged-platform-ui-thread=disabled` results in them being parsed
  into Settings::merged_platform_ui_thread in `SettingsFromCommandLine`,
  and triggers the same `FML_CHECK`.

The only route that didn't trigger an abort() on startup was
`-[FlutterDartProject initWithSettings:]`, which is declared in
`FlutterDartProject_Internal.h` and isn't part of the framework's public
API.

This also removes the last place the iOS embedder checked
`Settings::enable_impeller`. Now it's simply assumed.

This is part of cleanup work intended to simplify the iOS embedder prior
to an eventual migration to the embedder API.

Issue: flutter#112232
@cbracken cbracken mentioned this pull request Aug 7, 2026
10 tasks done
pull Bot pushed a commit to Dramaga11/flutter that referenced this pull request Aug 7, 2026
iOS runs with the platform and UI threads merged, and it's not possible
to create an engine with unmerged platform/ui threads, but
`FlutterEngine` still included branches to create the unmerged threads
when `Settings::merged_platform_ui_thread` wasn't enabled.

The option to opt-out of merged threads on iOS was removed in flutter#174408 in
Aug 2025, and it had been the default configuration for over a year at
that point.

Both existing routes to a non-merged thread configuration already failed
at startup:

* Setting `FLTEnableMergedPlatformUIThread=false` in Info.plist causes
an `FML_CHECK` in `FlutterDartProject.mm` to blow up.
* Setting `--no-enable-merged-platform-ui-thread` or
`--merged-platform-ui-thread=disabled` results in them being parsed into
Settings::merged_platform_ui_thread in `SettingsFromCommandLine`, and
triggers the same `FML_CHECK`.

The only route that didn't trigger an abort() on startup was
`-[FlutterDartProject initWithSettings:]`, which is declared in
`FlutterDartProject_Internal.h` and isn't part of the framework's public
API.

This also removes the last place the iOS embedder checked
`Settings::enable_impeller`. Now it's simply assumed.

This is part of cleanup work intended to simplify the iOS embedder prior
to an eventual migration to the embedder API.

Issue: flutter#112232

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->


## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [X] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

If this change needs to override an active code freeze, provide a
comment explaining why. The code freeze workflow can be overridden by
code reviewers. See pinned issues for any active code freezes with
guidance.

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine flutter/engine related. See also e: labels. platform-android Android applications specifically platform-ios iOS applications specifically team-android Owned by Android platform team team-ios Owned by iOS platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants