DevTools

Overview

See every query, mutation and cache entry of the running app, and act on them, from a panel inside the app.

Qora's debugging tool is the in-app overlay: a panel rendered inside your running app, in debug builds only. It shows what the cache holds, what each query is doing, and every mutation with its variables and rollback context, as it happens.

In-App Overlay

Install it, wrap the app with QoraInspector, and tap the Q button. Works on simulators, emulators and physical devices.

What you can see and do

AreaContents
QueriesEvery cached key with its status, searchable. The inspector shows the cached data and the state machine, with actions: Refetch, Invalidate, Mark Stale, Remove, Simulate Error
MutationsPending and settled mutations. The inspector shows variables, result or error, and the rollback context returned by onMutate, with Retry and Cancel
TimelineFetches, mutations, optimistic updates and cache clears, in order
Data DiffFor a mutation: the variables sent next to the server's result, and the cache snapshot taken for an optimistic update

Actions require passing the client to QoraInspector; without it the overlay is read-only.

How it works

QoraClient reports what it does to a QoraTracker. The overlay provides one, OverlayTracker, which keeps the recent events in memory (200 per channel) for the panel to display.

QoraClient
    │
    ├── NoOpTracker     default, and in release: no events, no cost
    └── OverlayTracker  debug builds: events kept in memory for the panel

In release builds you pass null as the tracker, so the client uses NoOpTracker, and QoraInspector builds nothing. See Production safety.

To send the same events to more than one tracker (the overlay and your own logging, for example), combine them with MultiTracker from qora.

IDE extension

A Flutter DevTools extension is in development and is not published. The overlay is the supported tool; this page will link to the extension when it ships.

Next Steps

Copyright © 2026