docs

Overview

Buoy provides tools for inspecting Flutter apps: network requests, storage, state, navigation, and performance. Use the in-app menu or connect the app to Buoy Desktop. An AI editor can access supported tools through the MCP server with Pro.

Flutter support is in beta. BuoyDevTools runs in debug mode; it does not enable tools in profile or release builds.

Who It's For

Developers can inspect a failed request alongside the app state that produced it. QA can use configured tools to edit test data and exercise error states. Support teams can collect debugging context when your app grants them access.

Some tasks need app integration. Impersonation requires your backend to authorize the selected user, and state tools need access to the stores or providers you want to inspect. Buoy does not bypass your app's authentication.

What You Get

ToolWhat It Does
NetworkInspect supported HTTP requests — package:http, dio, image loads, GraphQL
StorageBrowse and edit shared_preferences in real-time
EnvironmentValidate env/config with type checking and a health score
ConsoleA Chrome-DevTools-style console for every print / debugPrint / log
Perf MonitorLive on-device HUD — FPS, jank, CPU, and memory
ImagesCaptured image loads with cache verdict, timing, oversize audit & failure diagnosis
RiverpodInspect provider state, live values, diffs, and history
Route InspectorTrack go_router navigation and browse your route structure
Events TimelineUnified timeline across all tools with LLM-ready export
ImpersonateInject configured headers for backend-authorized impersonation
Image OverlayOverlay design mockups on your app for pixel-perfect comparison

Why Buoy

Install the tools you need and inspect the running app without adding a separate debug screen for each task. Desktop gives those tools more screen space, and MCP exposes supported actions to your AI editor. Follow each tool's setup instructions for app-specific configuration.

Quick Start

dart
import 'package:buoy/buoy.dart';

MaterialApp(
  builder: (context, child) => BuoyDevTools(
    licenseKey: 'YOUR_LICENSE_KEY',
    child: child ?? const SizedBox.shrink(),
  ),
)
import 'package:buoy/buoy.dart';

MaterialApp(
  builder: (context, child) => BuoyDevTools(
    licenseKey: 'YOUR_LICENSE_KEY',
    child: child ?? const SizedBox.shrink(),
  ),
)

The umbrella registers its bundled tools. Individual packages require explicit registration. Get your license key at buoy.gg/pricing.

Build Your Own Tools

Need something specific to your app? Add custom tools via the tools prop on BuoyDevTools. Build internal debugging utilities, feature flag toggles, or team-specific inspectors that integrate with the floating menu.

Next Steps