buoy_perf_monitor 0.3.1 copy "buoy_perf_monitor: ^0.3.1" to clipboard
buoy_perf_monitor: ^0.3.1 copied to clipboard

Inspect available Flutter frame-timing, jank and process-memory samples in a debug-build HUD, with optional Desktop synchronization.

buoy_perf_monitor #

Inspect available frame timing, memory, and CPU measurements in a panel or on-device HUD.

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_perf_monitor

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_perf_monitor/buoy_perf_monitor.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  if (kDebugMode) registerBuoyPerfMonitor();
  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.

Reading the metrics #

Frame timing comes from SchedulerBinding frame callbacks. Build and raster durations describe Flutter pipeline work; raster duration is not a direct measurement of GPU utilization. An idle app may render no new frames, so an inactive FPS display is expected.

RSS memory comes from dart:io ProcessInfo. Android CPU sampling reads /proc/self/stat; iOS has no equivalent pure-Dart source in this implementation and reports zero. Do not interpret that zero as measured idle CPU.

Sampling runs when the panel, HUD, or a desktop watcher requests it. The sampler does not require an additional native profiling plugin, but its packages still have declared dependencies. Available measurements do not imply parity with React Native Bench or suitability for release-performance conclusions.

Check the integration #

Open Perf Monitor or enable the HUD, perform a repeatable animation, and inspect the readings. Repeat on the same device and build; debug-mode timings include development overhead.

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.

Full Perf Monitor guide

License #

Proprietary software. © Buoy LLC. See the Terms of Service and pricing.

0
likes
120
points
386
downloads

Documentation

API reference

Publisher

verified publisherbuoy.gg

Weekly Downloads

Inspect available Flutter frame-timing, jank and process-memory samples in a debug-build HUD, with optional Desktop synchronization.

Homepage

License

unknown (license)

Dependencies

buoy_core, buoy_routes, buoy_shared_ui, flutter, shared_preferences

More

Packages that depend on buoy_perf_monitor