How Flutter Renders

Understand the trees: Widget, Element, and RenderObject. Rebuilding widgets is cheap; rebuilding render objects is expensive.

Minimizing Rebuilds

Use const constructors. Split large widgets into smaller, focused ones. Use Consumer appropriately in Provider to isolate updates.

List Optimization

Use ListView.builder for long lists. Only build items currently on screen. Set itemExtent if heights are fixed.

Image Caching

Use cached_network_image. Resize high-res images before display (cacheWidth/cacheHeight). Pre-cache critical images.

Async Operations

Keep the UI thread free. Perform heavy computations in Isolates. Don't block build methods with async work.

Impeller Engine

Impeller (default on iOS) replaces Skia to eliminate shader compilation jank. Ensure your app runs smoothly on it.

Using DevTools

Master the Flutter Performance overlay. Use the Timeline view to debug jank frames. Verify memory usage.