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.
Interview question
A Flutter application experiences performance issues. Which of the following problems would Impeller *not* be designed to solve?
- a.Slow loading times or unresponsiveness due to heavy data processing in Dart.Correct
- b.Inconsistent frame rates on modern mobile devices using advanced graphics APIs.
- c.Stuttering animations that occur only the first time a complex UI element is rendered.
- d.Jittery scrolling or transitions caused by runtime shader compilation.
Why? this is the answer
Impeller specifically targets 'shader compilation jank' by pre-compiling shaders ahead-of-time, which resolves issues like first-time animation stutter or inconsistent frame rates. It does not address performance bottlenecks stemming from the application's business logic, inefficient widget builds, or heavy Dart computations.
Just read this? Test yourself on what you have been reading.
Read the original → docs.flutter.dev
- #flutter
- #rendering
- #performance
- #impeller
Put your scrolling time to good use
Learn one idea, try a quiz and save useful cards for revision. Tezvyn makes it easy to learn and stay current in your tech field, a few minutes at a time.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.
We are hiring for this. Open roles that interview on flutter — each one lists the topics its interview covers.
See open roles