Documentation
Mobile
Web
TV

All but React Native are in beta.

Desktop App
docs

Environment Inspector

The Environment Inspector lets you view and validate environment config in your Flutter app — required-variable checks, type detection, per-variable status badges, and a 0–100% health score.

your environment, in 80 seconds

The film and the demo show the React Native tool, and the demo uses mock data. Use the Flutter setup and feature descriptions below for supported behavior; the demo does not establish Flutter feature parity.

Inspect example environment values

1 / 6

This demo supplies example environment values and validation rules. In your app, pass values explicitly; Expo public variables need static references for bundler substitution.

9:41
Loading live demo…
Mock build, real component — the same code that renders in your app. Step through the tour, or just start tapping.

Installation

pub
flutter pub add buoy_env

Registration

Flutter has no enumerable process.env — --dart-define values are compile-time and can't be listed at runtime. So instead of auto-discovery, you hand Buoy the map explicitly:

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

registerBuoyEnv(
  vars: {
    'API_URL': const String.fromEnvironment('API_URL'),
    'ENVIRONMENT': const String.fromEnvironment('ENVIRONMENT'),
    // ...any runtime config strings
  },
  requiredEnvVars: [
    envVar('API_URL').withType('url').build(),
    RequiredEnvVar.value('ENVIRONMENT', 'production'),
    envVar('FEATURE_FLAG').exists(), // existence check
  ],
);
import 'package:buoy_env/buoy_env.dart';

registerBuoyEnv(
  vars: {
    'API_URL': const String.fromEnvironment('API_URL'),
    'ENVIRONMENT': const String.fromEnvironment('ENVIRONMENT'),
    // ...any runtime config strings
  },
  requiredEnvVars: [
    envVar('API_URL').withType('url').build(),
    RequiredEnvVar.value('ENVIRONMENT', 'production'),
    envVar('FEATURE_FLAG').exists(), // existence check
  ],
);

The envVar Builder

The same fluent builder API as React Native:

dart
envVar('API_KEY')
  .withType('string')          // Set expected type
  .withValue('sk_test_123')    // Or set expected value
  .withDescription('API Key')  // Add documentation
  .build()                     // Finalize config

// Shorthand for just checking existence
envVar('API_KEY').exists()
envVar('API_KEY')
  .withType('string')          // Set expected type
  .withValue('sk_test_123')    // Or set expected value
  .withDescription('API Key')  // Add documentation
  .build()                     // Finalize config

// Shorthand for just checking existence
envVar('API_KEY').exists()

Supported Types

dart
// 'string' | 'number' | 'boolean' | 'array' | 'object' | 'url'
// 'string' | 'number' | 'boolean' | 'array' | 'object' | 'url'

registerBuoyEnv Options

OptionTypeMeaning
varsMap<String, String>?Explicit runtime values to display
requiredEnvVarsList<RequiredEnvVar>?Required names, types, and expected values

Each required entry must be a RequiredEnvVar. Use envVar(name).exists() for an existence check, RequiredEnvVar.value(...) for an expected value, or the builder for type checks.

Features

  • Required Variable Validation — Define which vars must exist with expected values/types
  • Type Detection — Auto-detects: string, number, boolean, array, object, url, json
  • Search & Filtering — Real-time search + filters for "All", "Missing", "Issues"
  • Health Status — Health percentage (0–100%) with HEALTHY/WARNING/ERROR/CRITICAL states
  • Statistics — Total count, required count, missing count, wrong value/type counts
  • Copy to Clipboard — Copy any value with one tap

Variable Status Types

StatusDescription
required_presentRequired var is set and correct
required_missingRequired var is not set
required_wrong_valueSet but doesn't match expected value
required_wrong_typeSet but wrong type
optional_presentOptional var that is set

Validation Visual Indicators

  • Green — Variable exists and matches expected value/type
  • Yellow — Variable exists but value/type differs from expected
  • Red — Required variable is missing

What's Next


FAQ

How do I check which --dart-define values my Flutter build actually got?

Flutter has no enumerable process.env, and compile-time --dart-define values can't be listed at runtime — so you hand Buoy the map in registerBuoyEnv(vars: {...}). The inspector then shows the value each variable resolved to, with per-variable status badges and a 0–100% health score.

Can it validate types and required values?

Yes — declare expectations with the envVar builder (withType, withValue, withDescription, or exists for a plain existence check). Supported types are string, number, boolean, array, object, and url, and anything missing or wrong is flagged.