Accessibility

Accessibility

Last updated:

Everyone eats, so a calorie tracker has no excuse for being usable only by people who can see it. This page says what SmartCrunch does about that today, in detail, including the parts that are not finished.

The short version #

SmartCrunch is built to be used without sight, and the specifics matter more than the claim:

  • Every control is named. Nothing announces itself as just "button".
  • A day's food reads as a list you can move through — each entry says what it was and what it cost, with the portion and the macros on a swipe, rather than thirty separate stops or one unstoppable sentence.
  • Food, water and weight can be logged by voice, and the day's remaining calories asked for out loud, without opening the app.
  • The barcode scanner talks you onto the barcode — it says when a code is in frame but not yet readable, suggests moving closer, and confirms the moment it reads.
  • Larger text, Increase Contrast, Reduce Motion, Reduce Transparency and Differentiate Without Colour are all read and honoured.
  • All six Home Screen widgets are spoken in full.

Each of those is described below, with what it does and does not cover. Where the app is incomplete, the last section says so plainly.

VoiceOver #

  • Everything is named. Controls that draw only an icon carry a written label, so nothing announces itself as just "button". Decoration is hidden from VoiceOver rather than read out.
  • Dense cards read as one element, with the detail on a swipe. A diary entry says its name and its calories; the portion, protein, carbs, fat and where the figure came from are on the up/down swipe, without leaving the entry. A day's food is a list you can move through, not a wall of thirty separate stops.
  • A rotor for meals. Jump straight between breakfast, lunch and dinner instead of swiping through everything in between.
  • Sheets announce themselves when they change. The app has one screen and opens everything else as a sheet over it, and a deep task like logging food changes step inside that sheet rather than stacking another one. Every one of those steps moves VoiceOver's focus and says what changed — silent content replacement is the specific failure this design would otherwise cause.
  • Headings have levels. Each surface has one top-level heading and each block below it is a second-level one, so the rotor's heading navigation gives you the shape of the screen rather than a flat list.
  • The weight chart is an audio graph. The trajectory can be played as sound and stepped through point by point.
  • Units are spoken as words. The screen has room for "120 g"; speech does not need the abbreviation, so it says "120 grams" — correctly inflected, in each of the app's languages, from the system's own data rather than our translations.

Larger text #

Every piece of text in the app scales with the iOS text-size setting, including the accessibility sizes. There is no cap on body text, and no screen forces its own smaller size.

  • Layouts change shape rather than shrinking type: the calorie ring and its macro row become a column at accessibility sizes, and rows that pair a number with a label split onto two lines.
  • Where a number must stay inside a fixed graphic, the same figure is always printed as text beside it.

Contrast and colour #

  • Contrast is calculated, not judged by eye. Text tones are derived to hit a contrast target against the surface they sit on, using the standard WCAG formula.
  • Increase Contrast is honoured. Turning it on recomputes the text tones to a higher target, in both light and dark appearance — it does not just thicken a border.
  • Colour is never the only channel. Where a colour carries meaning, a word, a number or a shape carries it too. With Differentiate Without Colour on, the month calendar tells days apart by the ring's dash pattern — solid on target, dotted under, long-dashed over — rather than by hue.

Motion and transparency #

  • Reduce Motion is read throughout. Transitions that exist for polish are dropped rather than merely shortened.
  • Reduce Transparency makes every translucent surface opaque — the floating button, the sticky header, the blur over locked cards — so no text is ever read against moving content behind it.

Touch, gestures and switches #

  • Controls meet the 44-point minimum target size.
  • Every gesture has an on-screen alternative that drives the same state, so nothing is reachable only by pinching or by holding two fingers steady.
  • Press-and-hold to repeat a value has an adjustable action, because VoiceOver, Voice Control and Switch Control do not reproduce a hold.
  • Haptics mean something. There is a small, fixed vocabulary — a saved entry, a refused action, a degraded result — with distinct rhythms, rather than a buzz on every tap. Taps, scrolling and opening a sheet deliberately do not vibrate.

Hands-free and Siri #

  • Ask how the day is going without opening the app. Siri answers out loud with what is left, how the macros stand and where the weight is. The app stays closed.
  • Log by voice. Water, weight and food can all be recorded by speaking. Weight asks you to confirm before it writes, because recognition makes mistakes and a wrong weight distorts the trend.
  • The barcode scanner talks you in. Aiming a camera is the one thing on-screen labels cannot help with, so the scanner says when a barcode is in frame but not yet readable, suggests moving closer, and confirms the moment it reads — with a distinct haptic as well as speech. It stays quiet when there is nothing to say.

Widgets #

All six Home Screen widgets are spoken in full: what they show, the value, and what they do when tapped. The water widget's button says what it added. Days in the calendar widget announce the date and how the day went, not a colour.

Widget text does not grow with the iOS text-size setting. That is a deliberate limit, not an oversight: a Home Screen widget is a fixed frame that cannot scroll, and everything in one is a tap away in the app at a fully scaling size.

Where it is incomplete #

Four things are unfinished, and one is not applicable:

  • Voice Control is partly done. Most controls can be addressed by their visible name, but the icon-only ones do not all have short spoken alternatives yet. If a control will not respond to being named, that is why.
  • Photographing a meal has no aiming guidance. The barcode scanner does; the meal photo uses the system camera, which does not let the app see the frame. It announces its own controls, but cannot tell you whether the plate is in shot.
  • A handful of dense rows are not yet fully reflowed for the largest accessibility text sizes, and can clip there.
  • Dark appearance has some contrast defects that light appearance does not.
  • No captions or audio descriptions — the app contains no video or audio content, so there is nothing to caption.

Everything on this page is compiled into the app and checked by automated audits running on real screens, at several text sizes and in both appearances. What has not happened yet is a person going through the app with VoiceOver on and the screen off, so the accessibility declaration on the App Store listing is left empty rather than filled in ahead of that.

An automated audit can prove a control has a name. It cannot tell you the name is useful, that the reading order makes sense, or that the scanner's hints arrive at a helpful moment — which is what the next section is for.

Tell us what breaks #

If something here is wrong, or something works badly, we want to know — this is the one part of the app where the developer cannot be the test.

Email
[email protected]
Useful to include
Which assistive technology, which screen, and what you expected to hear or see instead. A recording of VoiceOver is ideal but not expected.

Accessibility reports are read before anything else in the inbox, and a fix for one is not held back for a release.