Performance & Concurrency

Profile first, then fix the frame drops — heavy work leaves the UI thread.

Clay illustration of performance and concurrency
Performance & Concurrency featured graphic

How it works

A left-to-right map of the work. Ports stay on fixed sides so the edges do not cross more than they have to. Pan or pinch if you want a closer look.

The usual problem

  • Custom motion looks expensive, so the first instinct is to delete the animation.
  • Jank is guessed at instead of measured.
  • JSON, images, or isolates never enter the conversation until users complain.

How I approach it

  • DevTools first. No performance work without a profile.
  • Heavy work moves off the UI thread with Dart isolates and microtask scheduling.
  • Animation-heavy UI is kept, then tuned — not stripped to look “fast”.

Process

  1. 01

    Reproduce

    The janky journey is captured, not described.

  2. 02

    Profile

    Flutter DevTools shows where frames are going.

  3. 03

    Move the work

    Isolates and microtasks take the heavy path off the UI thread.

  4. 04

    Handover

    A profiling note and the fix, so the next change does not put the work back.

Stack and tools

Flutter DevToolsDart isolatesMicrotask schedulingCustom motion UI

Proof from real work

What you get

  • A profiling report
  • The fixes in the codebase

How risk stays down

  • No invented before/after numbers. The profile is the proof.
  • The UI thread stays free for the motion the product actually needs.

Questions agencies ask