Flutter log viewer

Reading logs from flutter run or the device console works until the output scrolls past, or until a tester finds the bug on their own phone. xRay collects your Flutter app’s logs in a desktop app, live, with their level, logger, error and stack trace, and keeps them next to the network calls they belong to.

Structured logs, not lines of text

final logInspector = XRayLogInspector();

logInspector.info('User signed in', logger: 'AuthRepository');
logInspector.error('Failed to load data', error: error, stackTrace: stackTrace);

Each entry keeps its level (verbose, debug, info, warning, error, fatal or success), the logger that wrote it, and the error and stack trace when there is one. Already have a logger in your app? Route it through the inspector, as the log inspection guide shows.

Search and filter

Logs on the same timeline as your network calls

Logs, network calls and storage changes share one timeline. When a screen breaks, you see the warning, the failed request before it and the value it wrote after it, in order.

Logs from a tester’s phone

xRay connects to the app over your local network, so a tester can read the logs of the build on their own phone, without a cable or an IDE. Export the session as a .xray file and attach it to the ticket: the developer opens it in xRay and reads the same logs.

Safe by default

The log inspector only runs in debug builds. Connections are encrypted and need a pairing code, a team password or a trusted desktop.

Try xRay

xRay runs on macOS, Windows and Linux and is free during the alpha. It needs an impaktfull account with approved alpha access.