For Flutter teams shipping to the EU

Find accessibility bugs in your Flutter tests, with the exact line to fix.

A11yShip checks every screen your tests open against WCAG 2.2: missing labels, low contrast, tiny touch targets and layouts that break at 200% text size. You get a dashboard, a PDF audit report and a European Accessibility Act statement.

No credit card. Free while in early access. Open-source scanner on pub.dev.

$ dart run a11yship scan
a11yship · Demo Shop  2 screens · 71 checks
Score 87/100   3 critical  4 serious

CRITICAL Interactive element has no accessible name
  • [Product list] This button has no accessible name.
    lib/main.dart:40
SERIOUS Text contrast is too low  WCAG 1.4.3
  • Contrast 2.21:1 for "Free returns within 30 days"
    lib/main.dart:48
SERIOUS Layout breaks at 200% text size
  • RenderFlex overflowed by 123 pixels
    lib/main.dart:85

Why now

The EAA applies since 28 June 2025

The European Accessibility Act covers apps for e-commerce, banking, transport and e-books sold in the EU. Covered services must meet the accessibility requirements and describe how they do.

European Commission

Enforcement has started

Regulators in Sweden and the Netherlands have opened supervision of online shops, and in June 2026 a French court ordered a large retailer to make its website and app accessible within six months.

Summary of cases so far

Manual audits are slow

Auditors report around 2–3 hours per screen including documentation. And every release can quietly break what you fixed. Automated checks in CI catch regressions the day they happen.

How it works

  1. Add one test

    Add the package and capture the screens your tests already reach. Works in widget tests and integration tests.

    final scan = A11yShip(app: 'Shop');
    
    testWidgets('checkout', (tester) async {
      await tester.pumpWidget(const ShopApp());
      await scan.capture(tester, 'Checkout');
    });
  2. Run it locally or in CI

    One command runs your tests, prints a summary and uploads the report. Fail the build on critical issues.

    dart run a11yship scan --upload --fail-on critical
  3. Fix and report

    See every issue on the screenshot with the file and line, a Flutter fix and the WCAG criterion. Share a PDF audit and publish your accessibility statement.

What you get

  • Flutter-native checks

    Reads the same semantics tree TalkBack and VoiceOver use. Web scanners cannot see inside a Flutter canvas.

  • The exact line of code

    Each issue points to the widget in your code, like lib/home.dart:42 IconButton, not to framework internals.

  • Real contrast, real overflow

    Measures text contrast on rendered pixels and re-renders each screen at 200% text size to find layouts that break.

  • Release history

    Score trend and new vs. fixed issues for every build, so regressions are visible before release.

  • Manual checklist

    15 WCAG 2.2 criteria that need a person – screen reader flows, focus order, gestures – with notes per app.

  • PDF report and EAA statement

    A client-ready audit report and an accessibility statement draft built from your results.

Automated rules: accessible names (4.1.2), text alternatives (1.1.1), form labels (1.3.1, 3.3.2), descriptive labels (2.4.6), text contrast (1.4.3), resize text (1.4.4), target size (2.5.8) and headings, plus Android/iOS best practices.

Pricing

Pro planned

$39/month

  • 1 app
  • Unlimited scans and history
  • PDF reports and statement

Agency planned

$129/month

  • 10 apps
  • White-label PDF reports
  • Priority support

Paid plans will be announced in advance. Nothing is charged during early access.

Questions

Does a good score mean my app is compliant?

No tool can certify compliance. Automated checks find many common barriers, but criteria like focus order, gestures and screen reader announcements need a person. A11yShip combines automated results with a manual checklist and gives you evidence for your accessibility work – not a legal certificate.

Which apps does it support?

Flutter apps on Android and iOS (and Flutter web screens), through widget tests or integration tests. React Native and native apps are on the roadmap.

Do I have to upload my source code?

No. Only the scan report is uploaded: rule results, widget labels, file names with line numbers and test screenshots. You can run the scanner without uploading anything at all.

Where is my data stored?

In the EU (Ireland) with Supabase. See the privacy policy.

Is the package free?

Yes. The a11yship package (MIT licence) and its CLI are free to use locally. The dashboard, history and reports are free during early access.