Repository navigation
[Windows] Local engine rendering stalls without input when UI/platform threads are merged #192513
Description
When running local builds of the windows engine the UI stalls unless there in input in the application window (touch, mouse or pen).
I've tried multiple revisions between master and a804b26.
Steps to reproduce
-
On Windows follow the instructions on setting up the engine development environment.
-
Sync dependencies
gclient sync -D -
Build the engine
et build --config host_release.
host_debugwill also work but is less severe. -
Run a Flutter Windows app using the local engine:
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Spinny',
theme: ThemeData.light(),
darkTheme: ThemeData.dark(),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(body: Center(child: CircularProgressIndicator()));
}
}flutter run -d windows --release --local-engine host_release --local-engine-host host_release
- Let the app sit idle without moving the mouse, touching the window, or using pen input.
Expected results
The app should continue rendering frames normally while the window is idle.
Screen.Recording.2026-09-09.220714.mp4
Actual results
With the locally built engine, rendering only appears to progress when there is window input, such as mouse movement, touch input, or pen movement.
In release mode, the app can appear completely stalled when there is no input. Moving the mouse or otherwise generating input causes rendering to resume.
In debug/unoptimized builds, the issue is less severe but the UI appears choppy.
Screen.Recording.2026-09-07.200018.mp4
Additional context
Rebuilding without merged threads causes the app to render as expected.
// main.cpp
flutter::DartProject project(L"data");
project.set_ui_thread_policy(flutter::UIThreadPolicy::RunOnSeparateThread);
This appears to be a latent issue in the Windows merged UI/platform thread scheduling path that is surfaced by locally building the engine with a different Windows toolchain than the official prebuilt artifacts.
The same engine revision works when using the official prebuilt Flutter 3.47.2 Windows engine artifact, but a locally built engine at the same revision stalls unless merged threads are disabled.
Windows 11 Pro 23H2
OS Build 22631.6199
MSVC 14.51.36231
Activity
puneetkukreja98 commentedon Sep 10, 2026
@KevMCarp Thanks for reporting this. I have not been able to verify the issue, as I don't currently have the windows local engine env on my machine. Routing this to
team-windowsfor further investigation.mattkae commentedon Sep 23, 2026
@KevMCarp Can you try it with current
main? There has been a fix in the runloop that could have caused this: #193181KevMCarp commentedon Sep 27, 2026
Yeah, this is working for me now.
[CP-stable][win32] Remove the predicate from TimerThread condition va…
Bump Flutter to 3.47.6
chore: bump Flutter to 3.47.7 and render desktop with Impeller (#6916)
chore: migrate to material_ui and cupertino_ui (#6931)
github-actions commentedon Oct 11, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.