A Flutter debugging tool for developers and QA
xRay is a desktop app for debugging Flutter apps. Add one package to your app, run a debug build on a phone, an emulator or your desktop, and xRay shows what that app does while you use it: every network call, every log, every stored value and the files it keeps. No IDE, no cable and no debugger session needed, so testers and product people can use it as well as developers.
What you can debug
- Network calls Every request from Dio,
package:httpand any otherdart:ioclient, with headers, bodies, status and timing. GraphQL operations by name, WebSocket messages as they arrive, protobuf bodies decoded, and Serverpod calls by endpoint and method. See the Flutter network inspector. - Logs Every entry with its level, logger, error and stack trace. Search and filter them. See the Flutter log viewer.
- Storage SharedPreferences, flutter_secure_storage or a store of your own, which you can edit while the app runs. See the SharedPreferences and secure storage viewer.
- Databases The tables of your SQLite databases from sqflite or drift and your Hive boxes. Run SQL and fix a row while you test; read-only unless the app allows writes. Set it up with xray_sqflite_inspector, xray_drift_inspector or xray_hive_inspector.
- Files Browse the app’s documents and caches, preview JSON, HTML and images, and save or delete files.
- The device Switch dark mode, locale, text scale and animations, open deep links, send simulated pushes and flip your own feature flags, without touching the phone.
All of it lands on one timeline, so you see the call that failed, the log right before it and the value that changed after it.
Built for the whole team
A bug is easier to fix when the person who found it can show what happened. In xRay a tester can:
- connect to the build on their own phone, over the office network;
- export the session as a
.xrayfile, or the network calls as a HAR, and attach it to the ticket; - copy one call as cURL or Markdown.
The developer opens that session in xRay and sees the same calls, logs and storage changes, without reproducing the bug first. The app speaks 18 languages, and the command menu (⌘K) finds every action.
Safe on a shared network
Connections are encrypted and protected by default, with a pairing code, a team password or a list of trusted desktops. Tokens and cookies are masked in your app before they are stored, and your redaction rules apply to every export. The inspector does not start in release or profile builds, so a forgotten setup line cannot leak data from a store build.
How it works
- Add
xray_inspectorto your Flutter app and start it in debug builds. - Run the app. The inspector runs inside it, on your local network.
- Open xRay. It finds the app on its own and connects. What the app captures goes straight to your computer and never leaves your network.
The Quick Start walks through the setup in a few minutes.
xRay and Flutter DevTools
xRay does not replace DevTools: DevTools inspects your widget tree, performance and memory. xRay is about the data your app sends, logs and stores, for everyone on the team. Read how they compare.
Try xRay
xRay runs on macOS, Windows and Linux and is free during the alpha. It needs an impaktfull account with approved alpha access.