Repository navigation
Comparing changes
Open a pull request
base repository: flutter/flutter
base: 8b3e8f5a1e64
head repository: flutter/flutter
compare: 27fec0e365a3
- 15 commits
- 60 files changed
- 12 contributors
Commits on Sep 14, 2026
-
[Linux] Clear the frame when there is nothing to render (#192461)
If everything on screen is transparent the engine sends a frame with no layers in it. We treated that as "nothing to do" and kept showing the last frame, so the old contents stayed on screen forever. Now each frame clears before the layers are drawn, so an empty frame clears the window. This also fixes transparent parts of a frame showing the previous frame through them. Two other things stopped an empty frame working: - The Wayland renderer returned before presenting the frame, so a first frame with no layers never showed the window. - The software renderer only drew a layer if it was the only layer, and drew it in the corner instead of at its position. It now draws all the layers like the OpenGL renderer does. Fixes #191870
Configuration menu - View commit details
-
Copy full SHA for 07b6e70 - Browse repository at this point
Copy the full SHA 07b6e70View commit details -
Roll Fuchsia Linux SDK from AQu85JoTHCMET3Q8G... to 7R1l5MhSZZUr1Q6D1…
…... (#192719) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for f5825b8 - Browse repository at this point
Copy the full SHA f5825b8View commit details -
Roll Skia from eaf9f82813eb to 527751088719 (1 revision) (#192722)
https://skia.googlesource.com/skia.git/+log/eaf9f82813eb..527751088719 2026-09-14 [email protected] Roll debugger-app-base from edf7d9a2f883 to a1fe46e011c1 If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for 2d7c9ed - Browse repository at this point
Copy the full SHA 2d7c9edView commit details -
Roll Skia from 527751088719 to 7a6fd7ff72d5 (2 revisions) (#192725)
https://skia.googlesource.com/skia.git/+log/527751088719..7a6fd7ff72d5 2026-09-14 [email protected] Roll ANGLE from 40110e8775e9 to 9d4f4abe5c5c (17 revisions) 2026-09-14 [email protected] Roll Dawn from 09ee22b0a0b2 to 396fe14739bf (18 revisions) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for 8225c75 - Browse repository at this point
Copy the full SHA 8225c75View commit details -
fix(web): hide --web-content-hash until content hashing is complete (#…
…192663) `--web-content-hash` currently hashes only the compiled entrypoints (#191914). Static assets (#191915), the service worker precache manifest (#191916), and deferred loading parts (#191917) are all still unhashed, so a build with the flag enabled can continue to serve stale cached content. Advertising the flag now sets an expectation the implementation does not yet meet. The flag has not shipped in any release. It landed on master in #190153 on 2026-09-10, after the flutter-3.48-candidate.0 fork, so hiding it costs nothing today. It also avoids committing to the flag's boolean shape before the remaining phases show whether granularity is needed. Locks the behavior into the existing `flutter build web option visibility` tests, including the verbose-help variant, so the flag stays hidden rather than becoming verbose-only by accident. Un-hide once #191915 and #191916 have landed.
Configuration menu - View commit details
-
Copy full SHA for bdb24b7 - Browse repository at this point
Copy the full SHA bdb24b7View commit details -
RELAND: [devicelab] Clean up Chrome profile directories and trap abor…
…t signals in web benchmarks (#192655) Ensures temporary Chrome user profile directories created during web benchmarks are reliably deleted, and ensures benchmark child processes (Chrome, Shelf, and `flutter run`) are cleaned up when benchmarks complete or when interrupted with SIGINT/SIGTERM. Part of #191316 _Tip for reviewers: Recommend viewing with "Hide whitespace" enabled (`?w=1`), as wrapping the task body in `try ... finally` re-indents the inner block._ I fixed the issue with the Chrome lifecycle that caused the original revert. ## 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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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 [flutter/website]: https://github.com/flutter/website [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
Configuration menu - View commit details
-
Copy full SHA for e300b37 - Browse repository at this point
Copy the full SHA e300b37View commit details -
Roll Skia from 7a6fd7ff72d5 to 83c984a6daf5 (1 revision) (#192745)
https://skia.googlesource.com/skia.git/+log/7a6fd7ff72d5..83c984a6daf5 2026-09-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for a638a66 - Browse repository at this point
Copy the full SHA a638a66View commit details -
Sync CHANGELOG.md from stable (#192499)
This PR automates the synchronization of `CHANGELOG.md` from the `stable` branch to the `master` branch.
Configuration menu - View commit details
-
Copy full SHA for 94ae3da - Browse repository at this point
Copy the full SHA 94ae3daView commit details -
docs: migrate design document guidance to flutter/rfc (#192648)
Update documentation across the repository, issue templates, and contribution guides to establish flutter/rfc as the authoritative workflow for Flutter RFCs and design documents: - Streamline docs/contributing/Design-Documents.md to focus on the RFC threshold, PR-based approvals, and source-code documentation. - Update .github/ISSUE_TEMPLATE/07_design_doc.yml to require flutter/rfc pull request links. - Update CONTRIBUTING.md, Tree-hygiene.md, Chat.md, and issue hygiene docs to point to flutter/rfc and clarify breaking change policies. - Remove obsolete references to flutter.dev/go/template and clarify fcontrib.org account history.
Configuration menu - View commit details
-
Copy full SHA for 435cf9a - Browse repository at this point
Copy the full SHA 435cf9aView commit details -
Warn users on potential removal of dart:html in dry run (#192710)
Update the dry-run warning messages in flutter_tools to clearly communicate that dart:html, dart:js, and legacy JS interop libraries are deprecated and planned for removal from the Dart SDK in a future release, encouraging users to migrate to package:web and dart:js_interop. Fixes #190562
Configuration menu - View commit details
-
Copy full SHA for 79c1e5e - Browse repository at this point
Copy the full SHA 79c1e5eView commit details -
ci(bringup): cleanup some bringup (#192752)
- Linux_android_emu external_textures_integration_test: marked as suppressed, but is gret. - Linux linux_android_aot_engine_size_exp: not bringup, but suppressed and presubmit: false. - Windows windows_unopt: green and slightly flakey; supressed so it will run in presubmit. - Mac windowing_test: green There is now only 2 `bringup:true`
Configuration menu - View commit details
-
Copy full SHA for cefeaef - Browse repository at this point
Copy the full SHA cefeaefView commit details -
Roll Fuchsia GN SDK from ZsxUUK2SfA-TrNvb8... to PDJz3b3CL31uoLOkD... (…
…#192440) If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/fuchsia-gn-sdk-flutter Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md Co-authored-by: zijiehe@ <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 6b6aaaf - Browse repository at this point
Copy the full SHA 6b6aaafView commit details -
Request unbuffered dispatch for platform view motion events after `_P…
…latformViewGestureRecognizer` rejects gesture (#192259) Changes platform view touch input for all modes to request the unbuffered stream for the given event when the GestureArena determines the platform view has bowed out of ownership of that event, via [View.requestUnbufferedDispatch()](https://developer.android.com/reference/kotlin/android/view/View#requestunbuffereddispatch). Flutter content itself makes this request, but currently platform views don't. This greatly improves platform view scrolling smoothness, while having no breaking change or impact on platform views performing gesture handling (because the GestureArena has determined that they don't own the input event). ### Problem & Invariant Under high-load or scrolling scenarios, buffered touch dispatch causes visible jank and input lag. Flutter requests unbuffered dispatch for its own rendering, but platform views continue using buffered streams unless requested. Simply requesting unbuffered dispatch unconditionally can cause issues if gestures are still competing or owned by the platform view. Scoping unbuffered dispatch to gestures that Flutter has won ensures that platform views receive fast, unbuffered dispatch specifically during Flutter gestures (like scrolling). ### Architecture & Gesture Correlation (`embedderId`) Previous iterations attempted to correlate gestures across the channel by matching synthetic `downTime` timestamps packed into `PointerDownEvent.timeStamp`. However, resamplers or clock drift can alter event timestamps. Instead, this PR uses Flutter's canonical `embedderId` mechanism: 1. **Android Touch Processor**: When an Android `MotionEvent` arrives, `AndroidTouchProcessor` tracks it using `MotionEventTracker.track(event)` and populates `packet.putLong(motionEventId)`, which the framework receives as `PointerEvent.embedderId`. 2. **Framework Arena Resolution**: `_PlatformViewGestureRecognizer` records the `embedderId` of the pointer-down event. When Flutter wins the arena and calls `rejectGesture(pointer)`, the framework sends `gestureId` (set to `embedderId`) over the `flutter/platform_views` system channel. 3. **Engine Correlation (`MotionEventTracker.peek`)**: - `PlatformViewsController` and `PlatformViewsController2` handle `onRejectGesture(viewId, gestureId)`. - The controllers query `motionEventTracker.peek(MotionEventId.from(gestureId))` to look up the native `MotionEvent` without consuming it from the tracker. - From this `MotionEvent`, the native `downTime` is retrieved and passed to `FlutterMutatorView` and `PlatformViewWrapper`. - `PlatformViewGestureTracker` marks `flutterWonGesture = true` if the `downTime` matches the current active gesture stream, and keeps calling `requestUnbufferedDispatch()` for all remaining events in the gesture until `ACTION_UP` or `ACTION_CANCEL`. 4. **Graceful Degradation / Fails Closed**: - If `peek()` returns `null` (e.g. if the event was already popped or on non-Android embedders), or if `gestureId` is 0 or unmatched, the optimization degrades gracefully to standard buffered touch dispatch without breaking input handling. ### Tests - **Framework tests**: `packages/flutter/test/rendering/platform_view_test.dart` - Verifies `rejectGesture` passes the pointer's `embedderId` as `gestureId`. - Verifies multi-touch gestures correctly pass individual `embedderId`s. - Verifies no channel call is dispatched when `embedderId` is 0. - **Engine Robolectric tests**: - `PlatformViewsControllerTest`: Verifies `rejectGesture` with valid `gestureId` looks up tracked `MotionEvent` and enables unbuffered dispatch; verifies mismatched or missing IDs do not enable it. - `PlatformViewsController2Test`: Verifies same behavior on the modern hybrid composition pipeline. - `FlutterMutatorViewTest` and `PlatformViewWrapperTest`: Verifies gesture tracking across `ACTION_DOWN`, `ACTION_MOVE` sequences, and resetting on `ACTION_UP`/`ACTION_CANCEL`. Supersedes #192249 ## 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]. - [ ] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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. <!-- 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 [flutter/website]: https://github.com/flutter/website [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 --- *Generated with Gemini / AI assistance.*
Configuration menu - View commit details
-
Copy full SHA for c5ddcd2 - Browse repository at this point
Copy the full SHA c5ddcd2View commit details -
Roll Skia from 83c984a6daf5 to 59904977fcbb (8 revisions) (#192767)
https://skia.googlesource.com/skia.git/+log/83c984a6daf5..59904977fcbb 2026-09-14 [email protected] [spanify] Rewrite C-style arrays to std::array and std::to_array 2026-09-14 [email protected] [graphite] Use SkOpts for swizzle+ premul/unpremul transfers 2026-09-14 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2026-09-14 [email protected] [Maintenance] Merge dump_record and dump_capture 2026-09-14 [email protected] [graphite] Reduce _ALWAYS tracing overhead 2026-09-14 [email protected] Reland "[graphite] Use approx-sized MSAA and D/S attachments when possible" 2026-09-14 [email protected] Roll vulkan-deps from 8bcad2f78f55 to d60dc547ea78 (2 revisions) 2026-09-14 [email protected] Revert "Give Android build approvers OWNERS for Android-only files" If this roll has caused a breakage, revert this CL and set the roller to dry run mode using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Configuration menu - View commit details
-
Copy full SHA for 8f392c2 - Browse repository at this point
Copy the full SHA 8f392c2View commit details -
Add dedicated rubber band spring for overscroll recovery in BouncingS…
…crollPhysics (#187568) > [!NOTE] > **Relanding** #182426. > > Thank you for your review and guidance on the previous PR. > > I'm relanding this with the fix for the test failures that caused the issue before. *(I've updated the regression test to account for the faster convergence rate of the new physics.)* Fixes #181752 *(for detailed analysis, measurements, and discussion, please refer to the original issue.)* This pull request implements a dedicated “rubber band” physics for overscroll snap-back in BouncingScrollPhysics on iOS to better match the native UIScrollView feel. <img width="1000" alt="546867255-4ad56291-9603-40c1-ae5a-3e319017c3c9" src="https://github.com/user-attachments/assets/8e72ebff-fb8f-4613-b042-7668db15bcf5" /> - - - > [!NOTE] > This change adjusts spring constants and simulation behavior > to improve iOS scroll fidelity. > > Given that this change primarily involves physics parameter tuning, > it may reasonably qualify as test-exempt. However, I am not entirely > certain what level of automated testing would be considered appropriate. > > Please let me know if additional tests are expected, > and I am happy to update the PR accordingly. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [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]. **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 [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 --------- Co-authored-by: Tong Mu <[email protected]> Co-authored-by: Victor Sanni <[email protected]> Co-authored-by: Elliott Brooks <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 27fec0e - Browse repository at this point
Copy the full SHA 27fec0eView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 8b3e8f5a1e64...27fec0e365a3