buoy_images
Inspect image loads rendered through BuoyImage, including timing, dimensions, failures, and estimated decoded memory.
Requirements
Use a Flutter debug build and a Free or Pro Buoy account key. These packages require Dart 3.9 or later, below 4.0, and Flutter 3.27 or later; your Flutter installation must satisfy both constraints. The Buoy widget does not start its tools in profile or release builds, including with Pro.
Install and register
flutter pub add buoy_images
This example registers the standalone package. In an existing app, keep your screens and providers and apply the registration and builder changes to that app. Complete the tool-specific integration below before testing capture.
import 'package:buoy_images/buoy_images.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
if (kDebugMode) registerBuoyImages();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
builder: (context, child) => BuoyDevTools(
licenseKey: const String.fromEnvironment('BUOY_KEY'),
child: child ?? const SizedBox.shrink(),
),
home: const Scaffold(body: Center(child: Text('Buoy test app'))),
);
}
}
Get a key from your Buoy account, then run:
flutter run --dart-define=BUOY_KEY=YOUR_LICENSE_KEY
If you already use the buoy umbrella, it registers the panel; keep its builder and complete the app integration below. For a complete umbrella setup, see the Flutter Quick Start.
Wrap the images you want to inspect
Use this widget in an existing build method after importing the package and Flutter material widgets. imageUrl is your app's image URL:
BuoyImage(
provider: NetworkImage(imageUrl),
width: 140,
height: 140,
fit: BoxFit.contain,
placeholder: (context) => const CircularProgressIndicator(),
errorWidget: (context, error) => const Icon(Icons.broken_image),
)
The wrapper accepts an ImageProvider, including a CachedNetworkImageProvider when your app uses that package. Ordinary Image widgets are not automatically instrumented.
Cache classifications use available provider/cache signals; decoded and wasted memory are estimates. Inspect the image's displayed size as well as its decoded dimensions. Reload, retry, and simulation actions affect wrapped images, not every image in the app. Profile and release builds skip the debug instrumentation.
Check the integration
Replace one test image with BuoyImage, load it after account access is ready, and inspect its dimensions. Restore any simulation overrides before continuing other tests.
Desktop and MCP
Open Buoy Desktop, sign in, and select the connected device. The default broker port is 42831. The iOS Simulator uses localhost; the Android emulator maps localhost to its host address. For a physical device, set socketUrl: 'http://YOUR_COMPUTER_LAN_IP:42831' on BuoyDevTools and use a network that can reach your computer.
MCP needs separate process account configuration and Pro access. Remote capabilities depend on each tool's adapter. Account validation makes network requests, and device sessions can cross your LAN. See Telemetry for data-flow details.
License
Proprietary software. © Buoy LLC. See the Terms of Service and pricing.