Impeller: Flutter's Jank-Free Rendering Engine
Impeller is Flutter's new rendering engine that pre-compiles shaders to deliver silky-smooth animations. It replaces the Skia engine to eliminate "jank" from on-the-fly shader compilation. The footgun: it only fixes rendering jank, not slow app logic.
WHY IT EXISTS: Impeller was created to solve the problem of "shader compilation jank" in Flutter apps. The previous engine, Skia, compiled shaders the first time they were needed at runtime. This could cause a noticeable stutter in animations, especially on the first run, creating a poor user experience.
THE MENTAL MODEL: Think of Impeller as preparing all your cooking ingredients before you start the recipe. The old engine (Skia) would pause cooking to find and prepare an ingredient mid-way. Impeller does the shader compilation work ahead-of-time (AOT) when you build the app, so at runtime, it just needs to execute them. This leads to predictable frame times and smooth animations.
HOW IT WORKS: Impeller is a custom rendering engine built from the ground up for Flutter. Instead of a single, large shader program, Impeller generates and compiles a large set of simple, specialized shaders during your app's build process. When your app runs, the correct, pre-compiled shader is ready to be used instantly. This avoids the runtime performance cost of on-the-fly compilation and is designed for modern graphics APIs like Metal (Apple) and Vulkan (Android).
WHEN TO USE IT: Impeller is the default renderer on iOS and is being rolled out for Android and other platforms in modern Flutter versions. You use it to get smoother, more consistent animations, especially for complex UIs or on the first run of an animation. In most new projects, you'll be using it without any special configuration.
WHEN NOT TO USE IT: While it's the future of Flutter rendering, you might need to disable it for troubleshooting if you suspect a rendering bug specific to Impeller. It doesn't fix performance issues unrelated to rendering, such as slow business logic, inefficient widget builds, or heavy Dart computations. Focus on those areas if your app is still slow with Impeller enabled.
ONE CANONICAL EXAMPLE: A user opens a Flutter app and navigates to a screen with a complex hero animation. With the old Skia engine, the first run of this animation might stutter as shaders are compiled. With Impeller, the animation is smooth from the very beginning because all required shaders were already compiled and included in the app bundle.
Read the original → docs.flutter.dev
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.