Performance FAQ
This page collects some frequently asked questions about evaluating and debugging Flutter’s performance.
- Which performance dashboards have metrics that are related to Flutter?
- How do I add a benchmark to Flutter?
- What are some tools for capturing and analyzing performance metrics?
- My Flutter app looks janky or stutters. How do I fix it?
- What are some costly performance operations that I need
to be careful with?
-
Opacity
,Clip.antiAliasWithSaveLayer
, or anything that triggerssaveLayer
ImageFilter
- Also see Performance best practices
-
- How do I tell which widgets in my Flutter app are rebuilt
in each frame?
- Set
debugProfileBuildsEnabled
true in widgets/debug.dart. - Alternatively, change the
performRebuild
function in widgets/framework.dart to ignoredebugProfileBuildsEnabled
and always callTimeline.startSync(...)/finish
. - If you use IntelliJ, a GUI view of this data is available. Select show widget rebuild information, and you’ll visually see which widgets rebuild visually in your IDE.
- Set
- How do I query the target frames per second (of the display)?
- How to solve my app’s poor animations caused by an expensive
Dart async function call that is blocking the UI thread?
- Spawn another isolate using the
compute()
method, as demonstrated in Parse JSON in the background cookbook.
- Spawn another isolate using the
- How do I determine my Flutter app’s package size that a user will download?
- How do I see the breakdown of the Flutter engine size?
- Visit the binary size dashboard, and replace the git hash in the URL with a recent commit hash from GitHub engine repository commits.
- How can I take a screenshot of an app that is running and export it
as a SKP file?
- Run
flutter screenshot --type=skia --observatory-uri=...
- Note a known issue viewing screenshots:
- Issue 21237: Doesn’t record images in real devices.
- To analyze and visualize the SKP file, check out the Skia WASM debugger.
- Run
- How do I retrieve the shader persistent cache from a device?
- On Android, you can do the following:
adb shell run-as <com.your_app_package_name> cp <your_folder> <some_public_folder, e.g., /sdcard> -r adb pull <some_public_folder/your_folder>
- On Android, you can do the following:
- How do I perform a trace in Fuchsia?