Introduction
Conalyz is a command-line tool that analyses Flutter apps for accessibility violations — both from source code and on a live running device. — capturing what is actually rendered on screen, not just what the code says.
It checks every screen you point it at and produces a detailed HTML and JSON report covering:
- Touch targets — interactive elements too small for reliable tapping
- Colour contrast — text that fails WCAG AA (4.5:1 ratio)
- Focus traversal — elements unreachable by keyboard or switch access
- Labels — interactive elements with no accessible name
- Vague labels — button text like "Click here" or "Read more"
- Disabled elements — disabled controls with no hint explaining why
- Slider values — sliders with no announced current value
How it works
Run conalyz from your Flutter project directory. For runtime analysis, Conalyz starts the app for you, connects automatically, and runs the full set of checks — without any test code or instrumentation in the app itself.
There are four modes:
- Static mode — analyses your Flutter source code directly, no device needed. The same engine available on pub.dev, now built in.
- Capture mode — you navigate the app normally while Conalyz records every tap, swipe, and text input, then generates a ready-to-use
conalyz.yaml(Android only) - Manual mode — you navigate the app yourself and name each screen at the prompt; produces an HTML and JSON report
- Automated mode — Conalyz drives the app automatically using a
conalyz.yamlconfig file and produces an HTML and JSON report
Relationship to Conalyz Static
The Conalyz static analyzer (available on pub.dev) analyses Flutter source code at the widget-tree level — it catches violations in code without running the app. Conalyz Runtime complements it by checking what is actually rendered: pixel-level contrast, focus order on a real device, and accessibility of dynamically composed screens that only exist at runtime.
The two tools are most powerful when used together.