checkApp

Independent mobile app audits · Flutter · iOS & Android

Accessibility and store audits that name the line of code

Most mobile accessibility reports hand you a screenshot and a paragraph. This one hands you a file, a line number, and the number of screens the same line breaks. Written for the developer who has to fix it, in a document your lawyer can read.

serious tap-target-size lib/ui/common/controls/buttons.dart:200

This button is 17×27, below the Android minimum of 48×48, so it is hard to hit for anyone with limited dexterity.

43 occurrences across 6 screens — one line to change

Specimen

An audit of an app you can check yourself

Rather than describe the output, here is a complete one. We audited Wonderous, the open-source app Flutter is showcased with — a careful, well-built application by people who know the framework.

Wonderous 2.2.0, iOS, eight screens
RequirementWhat it asksDefects
WCAG 1.4.3Contrast (Minimum)17
WCAG 2.5.5Target Size5
WCAG 4.1.2Name, Role, Value3
WCAG 1.4.4Resize Text2
WCAG 1.3.2Meaningful Sequence1
WCAG 1.4.11Non-text Contrast1
WCAG 2.4.7Focus Visiblenone found

Twenty-nine places in the source, a hundred and fifty-three occurrences. Every one carries a file and a line, so the fix list is a work queue rather than an investigation.

Prices

Published, fixed, and roughly 40% under the market

No discovery call before a number. Prices are per audit, not per hour, and the turnaround is what you are quoted, not what we hope for.

Store readiness

Everything that gets an upload refused or an app hidden: privacy manifests, required-reason APIs, SDK declarations, Sign in with Apple, account deletion, target API level, listing forms against the build.

€190 2 working days
Accessibility audit — up to 10 screens

EN 301 549, the standard the European Accessibility Act points at. Automated checks plus a screen-reader pass by a person, on both platforms.

€690 5 working days
Accessibility audit — up to 25 screens

The same, for a product with a real surface area.

€1,290 8 working days
EN 301 549 conformance report

The signed document: every criterion, its clause number, where the product stands, and what was and was not checked. Added to any audit above.

€390 +2 days
Re-audit after your fixes

Within 90 days of the original. Says what closed, what did not, and what the changes introduced.

€190 3 working days
Annual re-check

A year on, your app has moved and so have the requirements. The same audit again, at 30% off, within 12 months of the last one.

−30% as above
Consultation

For a specific rejection, a disputed finding, or a design decision before you build it.

€90/hour minimum 1 hour

One surcharge, and it is avoidable. If you can only give us a TestFlight build, the iOS accessibility pass has to be done entirely by hand and costs 60% more. A simulator build — flutter build ios --simulator, one command — avoids it.

How it works

Send a build. Get a report by email.

  1. You send the builds An .apk for Android, and for iOS either a simulator .app or an .ipa. No repository access, no NDA negotiation, no onboarding call.
  2. We audit The automated checks run against the running app on real devices. Then a person walks it with a screen reader, because the automated part finds a minority of what is actually wrong.
  3. You get two files An HTML report your developers can read and copy paths out of, and the same thing as a PDF for whoever asks you for evidence.
  4. Nothing stays with us Your build and your findings are deleted when the audit is delivered. We are not a place where a list of your compliance gaps sits on somebody else's server.
What each format lets us check
What you sendStore checksAccessibility
.apk — AndroidFullFull
.app — iOS simulator buildFullFull
.ipa — iOS device buildFullNot possible
TestFlight invitationFullBy hand, +60%

What gets checked

Two kinds of trouble a mobile release runs into

The kind that stops a release this week

The kind a regulator asks about

Kept current

What is in force, and what is coming

Both stores move their requirements every year, and a checklist written last year quietly stops being a checklist. This is what applies today. The date below is when it was last read against what Apple and Google actually publish.

RequirementWhat happensSince / from
Privacy manifest, required-reason APIsUpload refusedIn force
Account deletion inside the appRejected at reviewIn force
Sign in with Apple beside a third-party loginRejected at reviewIn force
Google Play: API 36 for updates, 35 to stay listedUpdate refused, app hidden31 Aug 2026
EN 301 549 — European Accessibility ActMarket surveillance, fines28 Jun 2025
MinimumOSVersion 15.0Warning 90068 now, refused laterSpring 2027
iOS 27 SDK for uploadsUpload refusedApr 2027

Last read against Apple's and Google's published requirements on 15 September 2026. When a level moves, the checks move with it, and every report names which checks ran and which did not.

What we do not claim

There is no EAA certificate, and nobody can sell you one

No body in the EU is accredited to certify conformance with the European Accessibility Act. What exists is an audit report and an accessibility statement, and anyone offering you certification is selling you a document with no standing. Ours says what was tested, what was found, and what was not looked at.

Automated checking finds a minority of real accessibility problems. It is good at what it covers and silent about the rest, which is why every report we write marks each criterion as not satisfied, no automated violation, or not checked — and why the third of those is written down rather than left out.

A clean result is not a statement of conformance. It means nothing we checked was found to be wrong.

Who does the work

One person, and instruments built for this

checkApp is Iryna Molokova, a Flutter developer. The audit runs on tooling written in-house for exactly this work: it reads the running app the way assistive technology does, measures contrast from the painted frame rather than from the colours the code declares, and traces every finding back to the line that produced it. Off-the-shelf scanners do not do that.

The tooling is not the product, though. Knowing which findings matter, which are noise, and what a regulator will actually ask for is the product — and that part is a person reading your app.

Questions

Before you ask

Does the European Accessibility Act apply to my app?
It has applied since June 2025 to consumer-facing products and services sold in the EU — e-commerce, banking, transport, e-books and telecoms among them. Businesses under 10 staff and €2M turnover providing services are outside it. If you are not sure which side you are on, that is a consultation, not an audit.
Will an audit hold up our release?
No. Send a build, get the report in two to eight working days depending on size, and the fixes are yours to schedule. Most teams run the store check while the release is still in TestFlight, which is the whole point: a finding that blocks an upload is cheap while the build is still in your hands and expensive once the release is cut.
What does warning 90068 mean?
App Store Connect sends it when an app's MinimumOSVersion is below iOS 15. Today the build is delivered anyway, with the warning in the email afterwards; from spring 2027 the upload is refused. A Flutter project carries 13.0 unless somebody changed it, so most teams meet this one without having done anything wrong.
What is ITMS-91053?
Apple's rejection for calling a required-reason API without declaring a reason in a privacy manifest. It arrives at upload, names the APIs it found, and there is no warning build beforehand. The store readiness audit is mostly about this class of problem.
Can you audit an app that is not Flutter?
The store checks work on any iOS or Android build. The accessibility checks are automated for Flutter and done by hand otherwise — ask, and we will quote honestly.
Do you fix the problems too?
No. An auditor who also sells the remediation has a reason to find more than is there. The report is written so your own developers can act on it without us.
How do I pay?
Invoice and bank transfer for audits, card for the €190 store check. EU business customers are invoiced under reverse charge — send your VAT number with the build.

Get an audit

Send a build and what you need to know

Write to hello@checkapp.dev with the build, or a link to it, and one line about which of the two kinds of trouble you are worried about. You will get a fixed price and a date back the same working day.