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.