Repository navigation
Description
On master version, running an app in release mode with --no-enable-impeller flag does not result in the app using Skia.
I didn't check if this issue is present also in the latest beta/stable versions of flutter.
I was not sure if I should have reported this as an issue or not because I'm not sure if this is intentional or not, because it's been like this for long time, and I do not know how can it be that nobody noticed about this.
Steps to reproduce
Run any app with:
flutter run -d windows --release --no-enable-impeller
Look in the terminal where it will show:
[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).
Note that the log that says it's using the Impeller rendering backend is not sent erroneously, because I can confirm that the performance of my apps is exactly the impeller one.
This issue doesn't happen in profile mode or in debug mode, where the flag --no-enable-impeller correctly results in the apps running using Skia.
Expected results
What should happen normally is that when a flutter app is ran in release mode with the --no-enable-impeller flag, the app should use Skia, and not Impeller.
Actual results
What happens instead is that the message
[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).
is displayed, and the performance of the apps match the one normally seen when running them on impeller.
Code sample
Code sample not needed because I believe you can test this with any flutter app on windows.
Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
Logs
flutter run -d windows --release --no-enable-impeller
Launching lib\main.dart on Windows in release mode...
Building Windows application... 51,6s
√ Built build\windows\x64\runner\Release\flutter_impeller_windows_scroll_repro_clean.exe
Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).
[IMPORTANT:flutter/shell/platform/embedder/embedder_surface_gl_impeller.cc(127)] Using the Impeller rendering backend (OpenGLESSDF).Flutter Doctor output
Doctor output
flutter doctor -v
[√] Flutter (Channel master, 3.47.0-1.0.pre-504, on Microsoft Windows [Version 10.0.19045.7548], locale it-IT) [2,7s]
• Flutter version 3.47.0-1.0.pre-504 on channel master at C:\src\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision b5971cabf9 (5 hours ago), 2026-08-11 04:51:22 +0000
• Engine revision b5971cabf9
• Dart version 3.14.0 (build 3.14.0-111.0.dev)
• DevTools version 2.61.0-dev.0
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets,
enable-record-use, enable-swift-package-manager, omit-legacy-version-file, enable-windowing, enable-lldb-debugging, enable-uiscene-migration, enable-riscv64
[√] Windows Version (10 Pro 64-bit, 22H2, 2009) [2,6s]
[√] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [3,0s]
• Android SDK at C:\Users\moret\AppData\Local\Android\sdk
• Emulator version 36.6.11.0 (build_id 15507667) (CL:N/A)
• Platform android-36.1, build-tools 36.1.0
• Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
This is the JDK bundled with the latest Android Studio installation on this machine.
To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment (build 21.0.10+-14961533-b1163.108)
• All Android licenses accepted.
[√] Chrome - develop for the web [123ms]
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.14.37 (July 2026)) [121ms]
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.14.37516.0
• Windows 10 SDK version 10.0.26100.0
[√] Connected device (3 available) [297ms]
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19045.7548]
• Chrome (web) • chrome • web-javascript • Google Chrome 151.0.7922.76
• Edge (web) • edge • web-javascript • Microsoft Edge 151.0.4129.72
[√] Network resources [637ms]
• All expected network resources are available.
• No issues found!
Activity
puneetkukreja98 commentedon Aug 11, 2026
@Razorex001 Thanks for reporting the issue. I was able to reproduce it on latest master. When running in release mode with
--no-enable-impeller, the logs show Using the Impeller rendering backend... whereas this doesn't happen in profile and debug mode.Console logs:
Flutter doctor -v:
puneetkukreja98 commentedon Aug 11, 2026
Related issue: #187737
loic-sharma commentedon Aug 12, 2026
@Razorex001 Thanks for filing this bug! Are you able to opt-out of Impeller in release mode if you add the following content to your
windows\runner\main.cppfile?@gaaclarke I marked this as a P1 as this might prevent people from opt-ing out of Impeller on stable.
Razorex001 commentedon Aug 12, 2026
I just tested it. running app with:
with ImpellerSwitch disabled in main.cpp the app used Skia so I was able to opt-out.
Also running the app with:
results in Skia being used. This is still not ideal because one would expect that when the flag is not used, it uses Impeller by default, but at the very least it is possible to opt out with that line, which I guess is better than nothing.
gaaclarke commentedon Aug 12, 2026
That's the intended behavior. If you supply no command-line flag you will get whatever the project settings are or impeller if you never set them.
There is a case where the project flag and the command-line flag do no agree, we need to give preference to one of them. The way it should work is that command-line flags get the preference.
gaaclarke commentedon Aug 12, 2026
This is works-as-intended. The flags that control the graphics backend intentionally don't work in release builds. You are supposed to set them with internal project flags. We could be a better partner though and warn users when that flag is ignored. I'll file a followup issue for that.
gaaclarke commentedon Aug 12, 2026
filed: #191027
github-actions commentedon Aug 26, 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.