Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk4 min

Flutter Performance Optimization: Diagnose and Fix Jank and Dropped Frames

Learn how to diagnose Flutter stutter with profile builds and DevTools, distinguish UI-thread from raster bottlenecks, and verify improvements on-device.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Flutter jank is a missed frame deadline. To find its cause, reproduce the stutter in profile mode on a physical device, inspect the slow frames in Flutter DevTools, and optimize the UI or raster work that the trace shows is late. A fix is only confirmed when the same interaction improves under the same measurement conditions.

What a dropped frame means

A display refreshes at a fixed cadence, so Flutter has only a limited time to prepare and render each frame. Flutter describes an approximate budget of 16 milliseconds at 60 Hz and 8 milliseconds at 120 Hz; the relevant target depends on the device’s refresh rate. A frame that misses its deadline can make scrolling or animation look jerky. These are timing budgets, not a promise that an app will achieve a particular frame rate. Flutter’s Performance view documentation explains the frame chart and timing.

Measure the interaction under representative conditions

First reproduce the exact scroll, transition, animation, or first-use action that stutters. Profile on a physical Android or iOS device, ideally one near the slower end of the hardware your intended audience might use. Debug builds add overhead and behave differently, while an emulator or simulator does not reproduce a physical device’s hardware characteristics. Use profile mode for performance analysis rather than treating debug timings as representative. See Flutter’s build-mode guidance.

  1. Reproduce: Run the same action that triggers the visible problem, including a first-run animation if that is when it happens.
  2. Profile: Use a profile build on a physical target device and open Flutter DevTools’ Performance view.
  3. Select slow frames: Inspect the Flutter frames chart during the interaction. Select a slow frame to update Frame analysis and the timeline with details for that frame.

Use the frame chart to locate the late work

The chart pairs UI-thread and raster-thread timing for each frame. The UI thread runs Dart and framework work and creates a layer tree; the raster thread renders that tree through the engine and GPU. The side that overruns its available time points to where to investigate, but a symptom alone does not establish a root cause. Read the selected frame’s Frame analysis and timeline events before changing code. The DevTools guide describes these views.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
What the trace shows Where to investigate
UI-thread time is high Synchronous Dart or framework work, rebuilds, layout, or paint preparation.
Raster-thread time is high The rendering cost of the scene, including effects that require additional compositing or drawing work.
First run is slow but later runs are smoother Check whether shader compilation is involved; DevTools can highlight shader-compilation frames in dark red. On mobile, Flutter advises using its default graphics renderer, Impeller, when noticeable jank is confined to an animation’s first run. Confirm the target platform and Flutter version before applying renderer-specific advice.

DevTools also provides layer toggles for investigating clipping, opacity, and physical-shape effects. Treat them as diagnostic experiments: reproduce the same interaction with a toggle changed and compare the relevant frames. They help test whether a class of effects contributes; they do not prove that every use of that effect is harmful.

Fix the bottleneck the trace identifies

When UI-thread work is late

  • Find unexpected rebuilds. Track widget builds during the slow interaction and look for work repeated during animation or ancestor rebuilds. Avoid costly operations that run repeatedly in build(). Flutter notes that calling setState() rebuilds descendants of that state object; split large widgets around meaningful encapsulation and change boundaries. Flutter’s performance best practices cover rebuild and build-method guidance.
  • Keep static content out of a frequently called animation builder. For AnimatedBuilder, construct animation-independent subtrees once and pass them through its child parameter instead of rebuilding them on every animation tick. Flutter’s best-practices guide explains this pattern.
  • Build long lists lazily. When a large collection shows only part of its contents at once, use a lazy ListView construction pattern rather than eagerly creating a large set of children. Flutter’s rendering performance guidance discusses list construction.
  • Move blocking computation off the main isolate when warranted. Large parsing, filtering, or media-processing work can block frame production if performed synchronously. Flutter’s rule of thumb is to use isolates when large computations cause UI jank; work that fits within the available frame gap may not need that added complexity. See Concurrency and isolates.

When raster-thread work is late

Inspect the selected frame’s rendering events and test suspected scene effects with DevTools’ layer toggles. Flutter identifies unnecessary saveLayer() work and some combinations of opacity, clipping, and shadows as potential costs. Simplify only effects shown by the trace or diagnostic comparison to contribute; these effects are not a blanket list of features to avoid. The Performance view documentation describes the diagnostic controls, while the best-practices guide covers rendering considerations.

When the problem is on Flutter web

Use Chrome DevTools’ Performance panel to inspect Flutter web timeline events rather than relying on the Flutter mobile and desktop frame chart. Optional flags can add build, layout, and paint events; Flutter’s web profiling guidance says profiling web apps requires Flutter 3.14 or later. Check that requirement against the SDK version in use. See Flutter’s web performance profiling guide.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Verify that the change actually helped

Repeat the same interaction in profile mode on the same physical device and compare the relevant frame timings. For ongoing tracking, Flutter’s metrics guidance identifies buildDuration, rasterDuration, and totalSpan and recommends examining the average, 90th percentile, 99th percentile, and worst frame build and raster times. Averages alone can hide occasional severe stalls, while a single worst frame does not describe typical behavior. See Flutter’s performance metrics guidance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.