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.

Full Routes guide

License

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

Libraries

buoy_routes