Skip to content
Blog

Impeller on Desktop: Flutter's Next-Gen Renderer Goes Default

Flutter 3.47 makes Impeller the default renderer on macOS, Windows, and Linux. Learn how Impeller eliminates shader compilation jank and delivers consistent performance.

Published on September 16, 2026

AI Assistant

Flutter 3.47 brings Impeller to desktop platforms as the default renderer. This is a milestone for Flutter’s graphics pipeline — macOS, Windows, and Linux apps now get the same smooth rendering that mobile users have enjoyed since Impeller became the default on iOS and Android.

What Is Impeller?

Impeller is Flutter’s next-generation rendering engine, built to replace Skia. Instead of compiling shaders at runtime (which causes the brief stutter on first animation), Impeller precompiles a fixed set of shaders at build time.

The result: consistent, smooth animations from the very first frame.

Why Desktop Default Now?

The desktop teams, led by Canonical as Flutter Desktop’s Strategic Steward, have been working toward Impeller readiness for macOS, Windows, and Linux. With Flutter 3.47, all three platforms meet the stability and performance bar for default adoption.

Platform-Specific Graphics APIs

Impeller targets native graphics APIs on each platform:

  • macOS: Metal
  • Windows: Vulkan
  • Linux: Vulkan

This means Impeller talks directly to the GPU through modern, low-level APIs rather than going through abstraction layers.

Key Benefits

  1. Zero shader compilation jank: No more stutter when animations play for the first time.
  2. Predictable performance: Offline shader compilation ensures consistent frame rates.
  3. Better GPU utilization: Direct hardware API access reduces overhead.
  4. SDF text rendering: Signed Distance Function rendering delivers sharper text on desktop screens with lower pixel densities.

Opting Out

If you need to temporarily revert to Skia, platform-specific flags are available:

  • macOS: Set FLTEnableImpeller to false in Info.plist.
  • Windows: Add project.set_impeller_switch(flutter::ImpellerSwitch::Disabled) in main.cpp.
  • Linux: Call fl_dart_project_set_enable_impeller(project, FALSE) in my_application.cc.

However, the Flutter team has stated that fallback options will be removed in a future release. File bugs if you encounter issues, but plan for an Impeller-only future.

What This Means for Desktop Apps

Desktop Flutter apps now get:

  • Smoother scrolling and animations without manual optimization.
  • Consistent visual quality across all supported platforms.
  • Future-proof rendering as Skia is phased out.

For game developers and apps with heavy animations, Impeller on desktop removes the last major performance gap between Flutter and native rendering.

Wide Gamut Color on macOS

Alongside Impeller as default, Wide Gamut Color is now active by default on macOS. This delivers richer, more vibrant colors on supported hardware — important for design tools, media apps, and anything where color accuracy matters.

Looking Ahead

With Impeller now default on all major platforms (iOS, Android, macOS, Windows, Linux), Flutter’s rendering story is unified. The next frontier is WebAssembly + Impeller for web apps, bringing the same guarantees to browser-based Flutter.

Sources: