Images not loading? Loading slow? Stale avatars that never update? Memory ballooning? Image HTTP traffic in Flutter is fetched by dart:io image loaders and never surfaces the layout size or cache origin a network inspector needs — this tool is the visibility layer.
Every image loaded through BuoyImage appears in a live registry with where it came from (memory cache / disk cache / network), how long it took, how big it decoded versus how big it displayed, and exactly why it failed.
flutter pub add buoy_images
flutter pub add buoy_images
Flutter has no app-wide Image decorator hook, so capture is opt-in at the widget level — use BuoyImage in place of Image / CachedNetworkImage:
import 'package:buoy_images/buoy_images.dart';
BuoyImage(
provider: CachedNetworkImageProvider(url), // or NetworkImage(url), AssetImage(...)
width: 120,
height: 120,
)
import 'package:buoy_images/buoy_images.dart';
BuoyImage(
provider: CachedNetworkImageProvider(url), // or NetworkImage(url), AssetImage(...)
width: 120,
height: 120,
)
It wraps your ImageProvider, measures the rendered box for the oversize audit, and owns the props so reload/retry and simulations work.
With the MCP server, an agent can list every load with get_images, reload or retry with image_action, and flip failure simulations with set_image_simulation.