buoy_routes
Inspect observed navigation events and stacks; connect go_router for the sitemap and supported navigation actions.
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_routes
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_routes/buoy_routes.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
if (kDebugMode) registerBuoyRoutes();
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.
Connect your navigator
Add BuoyRouteObserver.instance to your existing GoRouter's observers and pass that same router to registerBuoyRoutes(router: yourRouter). This integration fragment belongs where your app constructs its router:
final router = GoRouter(
observers: [BuoyRouteObserver.instance],
routes: [
GoRoute(
path: '/',
builder: (context, state) => const Scaffold(body: Text('Home')),
),
],
);
Import package:go_router/go_router.dart and use this router with MaterialApp.router(routerConfig: router, builder: ...). Keep the Buoy builder from the setup example. Registering the tool without the router cannot supply its sitemap or remote navigation.
For a plain Navigator app, attach the observer through MaterialApp.navigatorObservers. It can report navigation events and stack changes; the go_router sitemap is unavailable. Event durations describe navigation-event spacing, not screen render time.
Check the integration
Navigate between two known screens and inspect the recorded paths. Supply required route parameters when testing navigation; app redirects and guards still apply.
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.