article

Why Your Flutter App Janks on Older Android Phones

September 15, 2025

A Flutter app runs at a smooth 60fps on your test device and stutters on a three-year-old budget Android. That jank — the visible hitching during scrolls and animations — is one of the most common Flutter complaints, and it usually traces back to doing too much work on the frame the UI is trying to paint.

Keep build cheap

The build method runs often, so anything expensive there — parsing, sorting, complex calculations — repeats constantly and blocks rendering. Compute once, cache the result, and don’t rebuild more of the tree than necessary.

Scope rebuilds and lists

When state changes high in the tree, Flutter rebuilds everything under it. Scope rebuilds tightly with const widgets and targeted state so a small change doesn’t repaint the whole screen — const constructors let Flutter skip rebuilding subtrees entirely. For long lists, use ListView.builder so only visible items are built instead of all of them at once.

Heavy images are the other offender. Loading full-resolution images and letting the framework downscale them wastes memory and CPU; resize images to the size they’re displayed at, and cache them.

Profile on a real low-end device, not just the emulator — the emulator hides the problem. Watch the performance overlay for slow frames, then cut the work happening during them. Smooth on a budget phone is the real test.