Skip to content

Conversation

@jason-simmons
Copy link
Member

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

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
Copy link
Contributor

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

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.

Copy link
Contributor

@reidbaker reidbaker left a comment

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.

@jason-simmons
Copy link
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.

Copy link
Member

@jtmcdole jtmcdole left a comment

Choose a reason for hiding this comment

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

printer2

@jtmcdole
Copy link
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

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
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 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 29, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 29, 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 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 da5523afc3c1 to 6b18740d5a23 (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.
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