Documentation • Quick Start • Network Inspection
macOS App • iOS App • Android App
A comprehensive Flutter debugging toolkit that captures and displays network calls, logs, and key-value storage — all inspectable in real-time via the xRay app.
- 🔍 Why?: Debugging Flutter apps shouldn't require print statements or platform-specific tools. xRay (inspector) gives you a live, structured view of everything happening inside your app.
- 👥 Who?: Built for Flutter developers who need deep insight into network traffic, app logs, and persistent storage during development and QA.
- 🚀 What?: A composable, dependency-injection-friendly inspection layer that runs an HTTP/WebSocket server inside your app and lets the xRay app connect to it in real-time.
- 🌐 Network inspection: Capture every HTTP request, response, and error with full headers and body.
- 📋 Log inspection: Structured log levels (verbose, debug, info, warning, error) with real-time streaming.
- 🗄️ Key-value inspection: Browse, edit, and delete entries from SharedPreferences and flutter_secure_storage — live.
- 📡 Remote UI: Connect the xRay app (macOS, iOS, Android) over the local network via UDP discovery — no config needed.
- ♻️ Reactive: All data exposed as
ValueNotifierfor seamless Flutter rebuilds. - 🧩 Composable: Add only the inspectors you need. No forced singletons, no hidden globals.
Disclaimer: This is a commercial package. To use this package, you need to have either a commercial xRay license or a free xRay Community License. The xRay macOS, iOS, and Android apps are the authorized UI clients for this library. For more details, please check the LICENSE file.
| Platform | Download |
|---|---|
| macOS | Download |
| iOS | Download |
| Android | Download |
| Package | Description |
|---|---|
xray_inspector |
Core package — inspectors + HTTP/WebSocket server |
xray_network_dio_interceptor |
Dio HTTP interceptor |
xray_shared_preferences_inspector |
SharedPreferences key-value inspector |
xray_secure_storage_inspector |
flutter_secure_storage inspector |
Your Flutter app
│
├── XRayNetworkInspector ◄── XRayNetworkDioInterceptor
├── XRayLogInspector
├── XRaySharedPreferencesInspector
└── XRaySecureStorageInspector
│
XRayInspectorServer (HTTP + WebSocket + UDP discovery)
│
xRay App (macOS / iOS / Android)
The inspector server runs inside your app and broadcasts data over HTTP and WebSocket. The xRay app connects to it automatically via UDP discovery — no configuration needed.
Add the packages you need:
dependencies:
xray_inspector: ^0.0.1
xray_network_dio_interceptor: ^0.0.1 # if you use Dio
xray_shared_preferences_inspector: ^0.0.1 # optional
xray_secure_storage_inspector: ^0.0.1 # optionalSet up inspectors at app startup:
final networkInspector = XRayNetworkInspector();
final logInspector = XRayLogInspector();
final dio = Dio()
..interceptors.add(
XRayNetworkDioInterceptor(inspector: networkInspector),
);
final server = XRayInspectorServer(
config: XRayInspectorServerConfig(
inspectors: [networkInspector, logInspector],
),
);
await server.start();Then open the xRay app on macOS, iOS, or Android — it will auto-discover your running server on the local network.
See the Quick Start guide for the full setup.
- No singletons — all dependencies are passed explicitly via constructors.
- No disk I/O — all captured data lives in memory only.
- Composable — add only the inspectors you need.
