Accessibility

Choiceworks was built to make the world accessible to children, so accessibility is not a checkbox here, it is the product. This page tells you plainly what the apps support today, what they don't yet, and what's being built, and it includes our formal conformance reports for all three apps, iOS and Android, ready for school district procurement.

What Choiceworks for iOS supports today

Full VoiceOver support on boards, schedules, timers, and the Feelings Scale, built so a blind or low-vision parent, teacher, or child can use the app, not just open it. Menus, timers, and schedules follow the system text-size setting. No flashing content anywhere. No time limits. Color never carries meaning alone. Recorded human voice on every button. Celebrations and transitions honor the system Reduce Motion setting. And on the data side: no accounts, no ads, no trackers, no data collection.

What we're honest about

The sample videos do not yet have captions. Captions drawn onto board tiles do not yet scale with the system text size (the rest of the app already does). Some edit-mode prompts fall short of our contrast standard and are on the remediation list. There is no hardware-keyboard layer. As these ship, this page and the report below will be updated, we would rather show you an honest report than a perfect-looking one.

Questions from your district

Write to info@beevisual.com and the founder will answer directly. If your procurement process needs this report as a standalone document, print this page to PDF, it is formatted for it.


Accessibility Conformance Report: Choiceworks for iOS

Based on VPAT® Version 2.5 (WCAG Edition)
Product: Choiceworks® for iOS, version 18.2 · Report date: July 9, 2026
Standard: Web Content Accessibility Guidelines (WCAG) 2.2, Levels A and AA (also addresses WCAG 2.0/2.1 A and AA)
Scope: this report covers the iOS/iPadOS application only; Choiceworks for Android is a separate application not covered by this report.
Evaluation methods: full source-code accessibility review and manual testing with Apple VoiceOver on iPad and iPhone, July 2026, interpreted for native mobile software per W3C WCAG2ICT guidance.
Terms: Supports = at least one method meets the criterion without known defects. Partially Supports = some functionality does not meet the criterion. Does Not Support = the majority of functionality does not meet the criterion. Not Applicable = criterion is not relevant.

Table 1: Success Criteria, Level A

CriteriaConformance LevelRemarks and Explanations
1.1.1 Non-text ContentPartially SupportsAll primary surfaces are labeled for VoiceOver: board tiles, schedule cells (including completion state), the image picker, and timers. Some editor and settings screens rely on default system labeling.
1.2.1 Audio-only and Video-only (Prerecorded)Partially SupportsEvery picture saved in the editor must have a text caption, so recorded audio is paired with on-screen text and an image; a small number of items created in older versions may lack a caption. Bundled sample videos (some silent, some with sound) are attached to buttons with a text label and recorded voice, but the videos themselves have no full text alternative.
1.2.2 Captions (Prerecorded)Does Not SupportBundled sample videos do not include captions. Video content is optional and always paired with a text-labeled, voice-labeled board button.
1.2.3 Audio Description or Media Alternative (Prerecorded)Does Not SupportSample videos do not include audio description. Each video is attached to a board button whose text label and recorded voice describe its purpose.
1.3.1 Info and RelationshipsPartially SupportsPrimary content structures (boards, schedules, timers) expose their roles and states to VoiceOver. Some editor screens use default labeling only.
1.3.2 Meaningful SequencePartially SupportsVoiceOver reading order follows the visual and logical order on the primary board and schedule surfaces per code review; a full device swipe-through of every screen has not yet been logged, so this row is stated conservatively.
1.3.3 Sensory CharacteristicsSupportsInstructions do not rely solely on shape, size, or location; buttons carry text and recorded voice.
1.4.1 Use of ColorSupportsColor is never the only carrier of meaning. The Feelings Scale announces its level in words to VoiceOver rather than relying on color alone.
1.4.2 Audio ControlSupportsSound plays only in response to user actions or a timer the user set. When a user-set timer expires, its alarm sounds and loops until dismissed; a Dismiss control is always presented (and the alarm self-limits if no screen can host the control), providing the required mechanism to stop the audio.
2.1.1 KeyboardDoes Not SupportThe app is touch-first and does not implement hardware-keyboard commands. Primary flows (boards, schedules, marking steps done, timers, reordering) are operable non-visually through VoiceOver, including custom actions where the touch interaction is a drag; some editor and settings screens rely on default system labeling.
2.1.2 No Keyboard TrapNot ApplicableThe app implements no custom keyboard commands or focus handling (see 2.1.1). Text entry uses standard iOS text fields with system keyboard behavior; no author-implemented mechanism exists that could trap keyboard focus.
2.1.4 Character Key ShortcutsNot ApplicableNo character-key shortcuts exist.
2.2.1 Timing AdjustableSupportsThe app imposes no time limits. Task timers are optional, set by the user, and adjustable at any time.
2.2.2 Pause, Stop, HideSupportsNothing moves, blinks, or updates automatically except a running task timer, which the user can pause at any time by tapping it. Animations are brief (under one second) and user-triggered; the reward celebration and board transitions additionally honor the system Reduce Motion setting.
2.3.1 Three Flashes or Below ThresholdSupportsNo flashing content anywhere in the app; reward feedback uses a single gentle fade by design.
2.4.1 Bypass BlocksNot ApplicableNative app screens do not contain repeated blocks of content in the WCAG sense.
2.4.2 Page TitledSupportsScreens carry descriptive titles.
2.4.3 Focus OrderPartially SupportsVoiceOver focus order is logical on primary surfaces; some editor screens follow default ordering.
2.4.4 Link Purpose (In Context)SupportsThe few links present (support, guides) are descriptively labeled.
2.5.1 Pointer GesturesSupportsThe app uses no multipoint or path-based gestures. All functionality operates with single taps or dragging movements; dragging movements are addressed under 2.5.7. Standard swipe-to-delete rows have a single-tap alternative via edit mode.
2.5.2 Pointer CancellationPartially SupportsActions trigger on touch-up using standard iOS semantics and can be cancelled by sliding away, with the possible exception of two momentary segmented controls on the timer sheet, which are under review and on the verification list.
2.5.3 Label in NamePartially SupportsAccessible names match or contain the visible text of controls in English. In the Spanish localization, a small number of settings controls currently carry English-only accessible names that do not contain the visible Spanish text; localization of these strings is planned.
2.5.4 Motion ActuationSupportsNo feature requires device motion; decorative motion honors Reduce Motion.
3.1.1 Language of PageSupportsThe product’s language (English or Spanish) follows the device language via standard iOS localization and is programmatically determinable by assistive technologies. A small number of untranslated strings are covered under 3.1.2.
3.2.1 On FocusSupportsReceiving focus does not trigger a change of context.
3.2.2 On InputSupportsChanging a setting does not cause unexpected context changes.
3.3.1 Error IdentificationSupportsErrors (such as a wrong passcode) are described in text alerts.
3.3.2 Labels or InstructionsPartially SupportsPrimary inputs are labeled; some editor fields rely on placeholder or default labeling.
4.1.1 ParsingNot ApplicableObsolete in WCAG 2.2; not applicable to native software.
4.1.2 Name, Role, ValuePartially SupportsPrimary controls expose name, role, and state (including task-completion state and live timer values) to VoiceOver. Some editor screens rely on default exposure.
4.1.3 Status MessagesPartially SupportsTimers announce remaining time to VoiceOver without moving focus; some status changes are not announced.

Table 2: Success Criteria, Level AA

CriteriaConformance LevelRemarks and Explanations
1.2.4 Captions (Live)Not ApplicableNo live audio or video content.
1.2.5 Audio Description (Prerecorded)Does Not SupportSample videos do not include audio description; see 1.2.3 remarks.
1.3.4 OrientationPartially SupportsiPad supports all four orientations. iPhone is portrait-only by design for this content.
1.3.5 Identify Input PurposeNot ApplicableThe app collects no personal information about the user; there are no such input fields.
1.4.3 Contrast (Minimum)Partially SupportsCore reading text meets AA: tile captions render at 5.7:1 on white and primary buttons at 6.9:1 on the brand blue. Some white button text on the brand green and red meets AA only at large text sizes, and edit-mode placeholder prompts over colored tile backdrops can fall below 3:1. These edit-mode surfaces are on the remediation list.
1.4.4 Resize TextPartially SupportsNavigation, menus, timers, schedules, and editor text follow the system text-size setting (Dynamic Type), including accessibility sizes. Captions rendered into board-tile images do not yet scale; that caption text is available to VoiceOver and as recorded audio on every button.
1.4.5 Images of TextPartially SupportsBoard tiles render their caption into the tile image for print/share fidelity; the same caption is exposed as real text to VoiceOver.
1.4.10 ReflowNot ApplicableNative layouts adapt to device size classes; the WCAG reflow criterion targets scrollable web content per WCAG2ICT.
1.4.11 Non-text ContrastPartially SupportsPrimary controls use a contrast-checked palette (brand blue and olive both exceed 3:1 against their surroundings). Edit-mode placeholder tiles use a light dashed border and white prompt text over variable backdrops that can fall below 3:1, and the completion checkmark overlays user-chosen photos, so its contrast depends on the family’s own images.
1.4.12 Text SpacingNot ApplicableiOS provides no user text-spacing override for native apps; content has no spacing-sensitive layouts.
1.4.13 Content on Hover or FocusNot ApplicableNo hover-triggered content.
2.4.5 Multiple WaysNot ApplicableCriterion applies to sets of web pages; the app has a single primary navigation structure.
2.4.6 Headings and LabelsSupportsScreen titles and the labels provided are descriptive. Some editor controls rely on default system labeling; see 1.1.1 and 4.1.2 for coverage.
2.4.7 Focus VisiblePartially SupportsVoiceOver focus indication is provided by the system and verified on primary surfaces. Full Keyboard Access has not been evaluated (see 2.1.1: no hardware-keyboard layer is implemented).
2.4.11 Focus Not Obscured (Minimum)Partially SupportsOn primary surfaces, focused items remain fully visible. The full-screen Help overlay covers the board while the controls beneath it remain in the accessibility tree, so assistive-technology focus can land on items hidden behind it; scoping focus to that overlay is on the remediation list.
2.5.7 Dragging MovementsPartially SupportsMaking choices and playing any button are single-tap. Completing a schedule step (dragging the child’s picture to All Done) and reordering items require a dragging movement for touch users; single-tap equivalents are currently exposed to assistive technologies (VoiceOver/Switch Control custom actions such as “Mark done” and “Move earlier/later”), not as on-screen single-pointer controls. The drag-to-All-Done gesture is the product’s core teaching ritual.
2.5.8 Target Size (Minimum)Partially SupportsPrimary targets (board buttons, tiles, schedule placards) are large by design (57–100pt). Timer and toolbar controls meet at least 44pt, exceeding the 24pt WCAG minimum. The edit-mode delete (X) control has an enlarged touch zone of roughly 30pt, meeting the 24pt minimum but not 44pt. Some dense editor controls have not been individually audited.
3.1.2 Language of PartsPartially SupportsSee 3.1.1; some accessibility strings are English-only in the Spanish localization.
3.2.3 Consistent NavigationSupportsNavigation (gear menu, edit mode, back) is consistent across screens.
3.2.4 Consistent IdentificationSupportsIcons and controls with the same function are identified consistently.
3.2.6 Consistent HelpSupportsSupport contact is available in a consistent location (the Menu’s Help section), and the founder answers directly.
3.3.3 Error SuggestionSupportsError alerts state what to do next (for example, passcode recovery via device authentication).
3.3.4 Error Prevention (Legal, Financial, Data)SupportsDestructive actions (deleting boards, restoring samples) require explicit confirmation.
3.3.7 Redundant EntrySupportsWithin any process, the app never asks for previously entered information again, with one exception: confirming a newly chosen Settings passcode by typing it twice, which is essential to security and permitted under this criterion’s exception.
3.3.8 Accessible Authentication (Minimum)SupportsNo user accounts exist. The optional parental editing passcode can be reset via the device's own authentication (passcode/Face ID).

Accessibility Conformance Report: Choiceworks Calendar for iOS

Based on VPAT® Version 2.5 (WCAG Edition)
Product: Choiceworks® Calendar for iOS, version 10.2 · Report date: July 9, 2026
Standard: WCAG 2.2, Levels A and AA (also addresses WCAG 2.0/2.1 A and AA) · Same evaluation methods and terms as the report above.
Scope: iOS/iPadOS application only. Optional iCloud sync stores data solely in the family's own iCloud; no accounts, no data collection.

Table 1: Success Criteria, Level A

CriteriaConformance LevelRemarks and Explanations
1.1.1 Non-text ContentPartially SupportsPicture events, calendar day cells, and every icon-only toolbar button we checked carry VoiceOver labels, and decorative artwork is marked so it is not spoken. The exception is the optional Help overlays, which are full-screen images with the instructions baked into the picture, so VoiceOver hears only "Help" and "Double tap to dismiss." Family-added photos are named by the caption the parent types, which the editor requires.
1.2.1 Audio-only and Video-only (Prerecorded)SupportsThe audio the app ships is one short recording per stock activity that speaks the same word printed on the picture, so the visible caption is the text equivalent, and the read-aloud feature only speaks text already on screen. Recordings a parent makes themselves are represented by the caption the editor requires; the app cannot verify a home recording says more than its caption.
1.2.2 Captions (Prerecorded)Not ApplicableThe app ships no prerecorded video or synchronized media of its own. Families can attach their own video clip to an activity; it plays in the standard system player, which will show captions only if the clip already carries them, and the app has no way to add captions to a home video.
1.2.3 Audio Description or Media Alternative (Prerecorded)Not ApplicableNo prerecorded synchronized media ships with the app, so there is nothing of ours to describe. Home videos attached by a family play in the system player with no audio-description mechanism, which is a limitation worth knowing if a family relies on described video.
1.3.1 Info and RelationshipsPartially SupportsSettings switches are individually labeled, and states like done, crossed off, and selected are exposed through traits and values rather than visuals alone. Gaps remain: the heading trait is used only on the What's New screen, the button editor's caption field relies on its placeholder instead of a persistent label, and an event's color frame, which tells a sighted user whose event it is, is not carried in any VoiceOver label.
1.3.2 Meaningful SequenceSupportsThe day schedule and all settings screens are standard table views, so VoiceOver reads them in list order, the month grid is built day by day in calendar order, and the one custom header container sets its element order explicitly. A quick on-device pass after dragging an event to a new spot would confirm the schedule re-reads in the new order; the code rebuilds it from the sorted data, so we expect it does.
1.3.3 Sensory CharacteristicsPartially SupportsInstructions built into the interface name actions plainly, VoiceOver hints say things like "Double tap to mark as done," and every color in the color menu is named in text. The optional Help overlays are the gap: they teach the app with arrows pointing at screen positions and one instruction that says "yellow box indicates selected day," and there is no text version of that guidance.
1.4.1 Use of ColorPartially SupportsCompleted events get a checkmark overlay, not just a color change, and the color pickers name each color for VoiceOver. But the per-child and per-event color coding itself is carried only by the colored matte or border on the tile; nothing on the tile states the color or the person in text or in the VoiceOver label, so a user who cannot see the color cannot tell whose event it is.
1.4.2 Audio ControlSupportsEvent audio plays only when the user taps a picture, the read-schedule-aloud toolbar button toggles to a Stop control, and Settings has a calendar-audio on/off switch. The event alarm loops until dismissed, and the code guarantees a stop path: the Dismiss action silences it, and if the alert cannot be presented the player is stopped outright.
2.1.1 KeyboardPartially SupportsThe app defines no hardware keyboard commands of its own; operation with iOS Full Keyboard Access rides on the accessibility layer, which most screens support, including a non-drag activate action that marks a day-view activity done. Reordering calendars and reordering day events are drag-only with no keyboard path. An on-device Full Keyboard Access pass would settle the remaining custom-drawn screens.
2.1.2 No Keyboard TrapSupportsWe found no custom key or focus handling anywhere that could hold keyboard focus; screens use standard UIKit navigation with visible Done, Cancel, and Save buttons. Two sheets deliberately block swipe-to-dismiss, the event editor always and the recording sheet while the microphone is live, but both still exit through their own visible buttons, and the recording sheet's block is lifted the moment recording stops.
2.1.4 Character Key ShortcutsNot ApplicableThe app implements no keyboard shortcuts at all, character-key or otherwise, so there is nothing to misfire or remap.
2.2.1 Timing AdjustableSupportsThe app sets no session or response time limits; dialogs, passcode prompts, and the alarm all wait for the user. The timed features are the visual activity timer and the day countdown, both started and set by the adult and both stoppable, plus a small Undo pill that hides itself about five seconds after an activity is marked done. Nothing is lost with the pill, a done mark can be reversed at any time by sliding the card back or, for VoiceOver users, a double tap.
2.2.2 Pause, Stop, HideSupportsThe auto-advancing day countdown shows Pause and Stop controls, and the pacing code re-checks stop and pause before every advance. Decorative animations run well under five seconds and are skipped entirely when Reduce Motion is on; the sparkle reward effect is hard-disabled in this release. The timer display is a real-time essential exception.
2.3.1 Three Flashes or Below ThresholdSupportsNo flashing content exists in the code; animations are single fades and moves, and the one particle effect (sparkles) is disabled in this release. A project-wide search for flash or blink behavior found only the standard scroll-indicator flash.
2.4.1 Bypass BlocksSupportsScreens are single-purpose native views with at most a navigation bar of one to three buttons before the main content, so there are no large repeated blocks to skip. VoiceOver element navigation reaches the schedule or grid content directly.
2.4.2 Page TitledSupportsEach screen sets a descriptive localized title or title view: the day view shows the full date, the month view shows the family photo beside the calendar's name on iPhone and beside the month being shown on iPad, and editors name their task. The full-screen timer has no title bar and identifies itself by its content.
2.4.3 Focus OrderSupportsScreens are standard UIKit tables and stacks that read in layout order, the month grid is built header first then dates in calendar order, and the one custom composite control declares an explicit VoiceOver element order. A device VoiceOver pass across the month grid would confirm the reading sequence end to end.
2.4.4 Link Purpose (In Context)SupportsThe only links are table rows whose labels state the purpose: Email and Website on the About screen show the actual address alongside, and the User Guides row in the settings menu is named for exactly where it goes. There are no bare or ambiguous links.
2.5.1 Pointer GesturesSupportsEvery gesture in the app is a single-finger tap, long press, or drag; there are no multipoint gestures (no pinch or rotation) and no direction-dependent swipes. The drags, where only the drop point matters, are assessed under 2.5.7, and month navigation uses plain previous/next buttons.
2.5.2 Pointer CancellationPartially SupportsNearly all controls fire on touch-up, deletes are gated behind confirmation dialogs, and an interrupted drag deliberately never commits a Done state. Two month-grid controls still act on touch-down with no way to slide off and abort: the "more events" badge and the day-tile audio button.
2.5.3 Label in NamePartially SupportsMost controls are picture buttons with no visible text, and where visible text exists the spoken name is that text: activity cards and picker cells announce their printed caption. The exception is the edit-mode rename controls over the schedule headers, named "Edit schedule title" and "Edit all-done title", which do not include the customized header text a Voice Control user actually sees.
2.5.4 Motion ActuationNot ApplicableNothing in the app is operated by shaking or tilting the device. The only "shake" in the code is a feedback animation the app plays on screen, not motion input.
3.1.1 Language of PageSupportsThe app declares English as its development language and ships full English and Spanish localizations, so iOS reports the running language to VoiceOver and it speaks in the matching voice. All interface text goes through NSLocalizedString.
3.2.1 On FocusSupportsReceiving focus never triggers a change of context; the app uses standard UIKit controls and defines no begin-editing or focus handlers at all. Actions run only on tap or explicit activation.
3.2.2 On InputPartially SupportsMost settings apply in place, such as Text Size and the audio switches. But flipping the Passcode or Editing switch immediately opens a passcode dialog, a change of context on changing a setting that is not advised beforehand, though cancelling reverts the switch cleanly.
3.3.1 Error IdentificationSupportsErrors are described in plain text in modal alerts, which VoiceOver reads: a wrong or too-short passcode says exactly what was wrong, saving an image without a caption is blocked with an explanation, and failed imports say the file could not be opened. No error is signaled by color or sound alone.
3.3.2 Labels or InstructionsPartially SupportsSettings switches and editor rows carry visible text labels plus explicit accessibility labels, and event switches include hints explaining what they do. The image caption field, however, is labeled only by its placeholder "Caption (Required)", which disappears once typing begins, and the passcode entry fields rely on the alert title plus a placeholder.
4.1.1 ParsingNot ApplicableThis criterion was removed in WCAG 2.2 and, per WCAG2ICT, does not apply to compiled native software with no markup to parse.
4.1.2 Name, Role, ValuePartially SupportsThe core child-facing controls expose name, role, and state: month-grid days carry the date, event summary, button trait, and selected or crossed-off state; day-view event buttons speak their name and done state; timers and import progress report live values; settings and event switches are labeled. Coverage is hand-applied per control though, and some editor screens rely on default system labeling, including the caption field and a few utility screens with no accessibility code at all, so a full VoiceOver device pass is the honest completeness check.

Table 2: Success Criteria, Level AA

CriteriaConformance LevelRemarks and Explanations
1.2.4 Captions (Live)Not ApplicableThe app has no live audio or video of any kind, no streaming, no calls, no broadcasts.
1.2.5 Audio Description (Prerecorded)Not ApplicableSame situation as 1.2.3, the product ships no video, so there is no prerecorded synchronized media requiring audio description. User-attached home videos have no description support.
1.3.4 OrientationSupportsThe app runs in both portrait and landscape on iPhone and iPad and does not lock orientation; layouts re-flow on rotation and the help images ship in portrait and landscape variants. The only orientation override in code explicitly allows all orientations.
1.3.5 Identify Input PurposePartially SupportsAlmost all text inputs collect schedule content, the child's name, event captions, so they are outside this criterion's list of user-information purposes. The exception is the parent passcode: its alert fields are flagged as secure entry but set no textContentType, so the password purpose is not programmatically identified to assistive technology or autofill.
1.4.3 Contrast (Minimum)Partially SupportsMost core text passes (white on the brand blue is about 6.8:1, the dark warm text on light backgrounds passes, and the weekday header and Record audio button were re-checked and pass, the app's olive was deliberately deepened to #4A5D1E for exactly this reason). Known failures: the Done button on the Add and Edit Calendar screens uses the older olive #6B8E23 on the warm toolbar (about 2.4:1), and the yellow countdown number sits over user photos where contrast cannot be guaranteed. A device sweep with a contrast analyzer would settle the full inventory.
1.4.4 Resize TextPartially SupportsA Settings Text Size control (Large / Larger / Largest) enlarges the month-grid day numbers from 18pt to 30pt, about 167 percent, and a handful of status and empty-state labels follow the system Dynamic Type setting. Everything else, including event captions, menus, and the day schedule, uses fixed ArialRoundedMTBold sizes that do not respond to the system text size, so the app does not reach 200 percent for most text.
1.4.5 Images of TextDoes Not SupportThe core schedule content and the help system both use images of text. Picture-button captions are drawn into bitmaps (the stock library ships as caption-baked PNGs, and custom captions are rendered into an image), and the three help screens are full-screen PNG screenshots of instructions with no text equivalent beyond a Help label.
1.4.10 ReflowPartially SupportsScreens are built with size-class-responsive layout, lists and the day schedule scroll vertically only, and no horizontally scrolling content region was found; the month grid needs two-dimensional layout by its nature, like a data table. Because most text cannot be enlarged (see 1.4.4), reflow under enlarged text cannot really be exercised, and behavior at the smallest iPhone width has not been verified on a device.
1.4.11 Non-text ContrastPartially SupportsSeveral state indicators sit on user-chosen photos where 3:1 cannot be guaranteed: the completion checkmark is overlaid on the event picture, and the person color ring and event color matte carry meaning against arbitrary photo content. Month-grid date cell borders are #DAE1E6 on light backgrounds, well under 3:1, though the filled cell backgrounds do the real work. Drawn controls like the olive-outlined Play button pass with room to spare (its deepened olive is about 4.5:1 against the sheet behind it).
1.4.12 Text SpacingNot ApplicablePer WCAG2ICT this criterion applies where a mechanism exists to change text spacing; iOS provides no system-wide text-spacing override and the app offers none, so there is no spacing adaptation to test against. Where text can vary in length, labels shrink-to-fit rather than clip, which limits loss of content.
1.4.13 Content on Hover or FocusNot ApplicableNo content appears on pointer hover or keyboard focus; the app registers no hover or pointer interactions. The help overlay appears only on an explicit tap of the Help button and is dismissible by a single tap, and it is marked modal for VoiceOver.
2.4.5 Multiple WaysNot ApplicablePer WCAG2ICT this criterion applies to sets of software programs, and Choiceworks Calendar is a single program. Within the app a given day is still reachable more than one way, by tapping it in the month grid or paging day to day.
2.4.6 Headings and LabelsSupportsSettings rows and screens carry plain descriptive labels such as Passcode, Text Size, and iCloud Sync & Backup, calendar day cells describe their date and events, and the What's New screen marks its headings for VoiceOver. Section headers use the standard table mechanism.
2.4.7 Focus VisibleSupportsThe app relies on the system focus indicators, the VoiceOver cursor and the Full Keyboard Access ring, and nothing in the code suppresses or replaces them. Visibility of the ring on the custom month grid buttons has not been device-verified with an external keyboard.
2.4.11 Focus Not Obscured (Minimum)Partially SupportsThe month view help overlay is a full-screen image pinned over the entire navigation view with no focus management, so a control holding focus underneath is entirely hidden while it is up. The day view help overlay handles this correctly by declaring itself modal. A device test with Full Keyboard Access would settle whether focus can actually sit beneath the month overlay.
2.5.7 Dragging MovementsDoes Not SupportMarking an activity done is a slide of the picture card, and reordering calendars or day events is also drag-only; a tap on the card plays its audio but cannot complete it, so a touch user who cannot drag has no alternative for any of these. VoiceOver, Switch Control, and Full Keyboard Access users do get a non-drag activate action on the cards, but that does not cover pointer users without assistive tech.
2.5.8 Target Size (Minimum)SupportsThe smallest touch targets set in code measure 28 by 28 points (calendar delete badge) and a 29-point minimum for the tile delete control, which is padded toward 44 points; month navigation arrows are 48 points wide. A scripted scan of all 18 Interface Builder layouts found no button smaller than 24 points, and iOS points are at least as large as CSS pixels.
3.1.2 Language of PartsSupportsAll app-supplied text is in a single language per locale (English or Spanish), so no shipped passage is in a different language than the interface. There is no accessibilityLanguage tagging anywhere, so a caption a family types in another language is read with the device voice; recorded picture audio is the family's own recording and plays back exactly as recorded.
3.2.3 Consistent NavigationNot ApplicablePer WCAG2ICT this criterion applies to sets of software programs, and this is a single program. Within the app, the toolbar, Menu access, and help button keep the same placement across the month and day views.
3.2.4 Consistent IdentificationNot ApplicablePer WCAG2ICT this criterion applies to sets of software programs, and this is a single program. Within the app the same localized strings are reused for recurring functions, so Done, Cancel, Pause, and Stop read the same everywhere they appear.
3.2.6 Consistent HelpNot ApplicablePer WCAG2ICT this criterion applies to sets of software programs, and this is a single program. Within the app a ? help button is available on both main views and support contact details, email and website, live on the About screen.
3.3.3 Error SuggestionSupportsWhere a correction is known the alert states it: a short passcode says it needs at least 4 digits, a missing caption says to provide one in order to save, and a bad import URL says to check the URL. A few system-failure alerts (such as a video that could not be saved) state only what happened, because no specific correction is known.
3.3.4 Error Prevention (Legal, Financial, Data)SupportsThe app has no legal or financial transactions, and every action that deletes or replaces family data asks first: deleting events offers a "just this day" versus "all occurrences" choice, deleting images and passcode resets use explicit confirms, and importing a calendar that would replace the current one requires confirming "Replace". Marking an event done can be reversed with an on-screen Undo button.
3.3.7 Redundant EntrySupportsNo process in the app asks for the same information twice. The one re-entry that exists, confirming a new passcode when setting it, is a security confirmation and falls under the criterion's exception.
3.3.8 Accessible Authentication (Minimum)Partially SupportsThe only authentication is a 4-plus digit editing passcode, which is a memorized-secret entry. The code never blocks pasting into the field, and "Forgot Passcode?" gives a way back in without recall via device Face ID, Touch ID, or device passcode; biometric unlock is deliberately not offered for the lock itself because on a child's own device the child's enrolled Face ID would open the very gate meant to keep them out. A device test should confirm paste and password-manager fill work in the secure number-pad field before claiming full support.
4.1.3 Status MessagesPartially SupportsThe statuses that matter most to a child's flow are announced to VoiceOver without moving focus: marking an event done or not done, a timer finishing, the Undo button appearing, and import progress via a live value. Other visual status changes, such as the sync state text in the settings menu, are not announced.

Accessibility Conformance Report: Choiceworks for Android

Based on VPAT® Version 2.5 (WCAG Edition)
Product: Choiceworks® for Android, version 2.0 · Report date: July 10, 2026
Standard: Web Content Accessibility Guidelines (WCAG) 2.2, Levels A and AA (also addresses WCAG 2.0/2.1 A and AA)
Scope: this report covers the Android application (phones, tablets, and Chromebooks) only; the iOS apps are covered by the two reports above.
Evaluation methods: full source-code accessibility review of the shipping 2.0 build, July 2026, interpreted for native mobile software per W3C WCAG2ICT guidance. On-device TalkBack verification is in progress; rows resting on code review alone are worded conservatively.
Terms: Supports = at least one method meets the criterion without known defects. Partially Supports = some functionality does not meet the criterion. Does Not Support = the majority of functionality does not meet the criterion. Not Applicable = criterion is not relevant.

What Choiceworks for Android supports today

A TalkBack user can complete a schedule task: every task card announces its done state and offers a spoken "Mark done" action (new in 2.0). Every board picture carries a spoken label, and the Feelings Scale speaks each level by name with its position and selected state. All interface text follows the system font-size setting. Nothing flashes, nothing auto-plays, and every timer is started, paused, and removed by the user. Recorded human voice on every button. And on the data side: no accounts, no ads, no trackers, no data collection.

What we're honest about on Android

The words on the stock picture cards are part of the artwork, so they do not resize with the system font setting (captions on your own photos do). Completing a task by touch is a swipe with no on-screen tap alternative yet, the spoken alternative exists only through TalkBack. A handful of small labels sit on colors that fall short of our contrast standard and are itemized below for remediation. The app is English-only for now, with Spanish planned for the next major release. As these ship, this report will be updated.

Table 1: Success Criteria, Level A

CriteriaConformance LevelRemarks and Explanations
1.1.1 Non-text ContentPartially SupportsEvery board content picture has a spoken text alternative: schedule task cards, reward cards, waiting and feelings cards, Feelings Scale slots (with selected state), and board grid tiles, verified across all 24 image sites in the code. Decorative images beside visible text are correctly silenced. One informative image is not yet labeled: the small profile photo on a board tile that shows whose board it is, so in the all-profiles view TalkBack does not hear the owner. On the remediation list.
1.2.1 Audio-only and Video-only (Prerecorded)Partially SupportsEvery picture saved in the editor requires a text caption, so recorded audio is paired with on-screen text and an image. The ten bundled sample videos are attached to buttons with a text label and recorded voice, but the videos themselves have no full text alternative.
1.2.2 Captions (Prerecorded)Does Not SupportBundled sample videos do not include captions. Video content is optional and always paired with a text-labeled, voice-labeled board button.
1.2.3 Audio Description or Media Alternative (Prerecorded)Does Not SupportSample videos do not include audio description. Each video is attached to a board button whose text label and recorded voice describe its purpose.
1.3.1 Info and RelationshipsPartially SupportsSettings toggles merge their label and switch into one control with a real switch role; board-type choices use real radio buttons; task cards expose completed state programmatically; feelings-history rows read as one item with the level spoken by name. Gaps: section headers are visual only (no heading semantics), passcode-entry progress dots are not announced, and custom dialogs do not yet set a spoken pane title.
1.3.2 Meaningful SequenceSupportsReading order matches visual and logical order, verified across every mechanism that could split them; schedule tasks read in true sequence 1..N even though the board renders as two visual columns.
1.3.3 Sensory CharacteristicsSupportsInstructions do not rely solely on shape, size, or location; buttons carry text and recorded voice.
1.4.1 Use of ColorSupportsOn the Feelings Scale, each level speaks its name and position, shows its own picture, and selection is marked by a border rather than a color shift; in the history view the level is conveyed by position and spoken name, never color alone.
1.4.2 Audio ControlSupportsNo audio plays on screen entry. Read-aloud runs only from an explicit Play control that becomes Stop while playing. Videos never autoplay and close with a labeled button. The timer chime is one-shot, dismissible, and silenced on leaving the board. A global Board Audio switch is honored by every speech path.
2.1.1 KeyboardPartially SupportsEvery tap control is a standard component that a hardware keyboard can focus and activate. The two drag interactions (swipe-to-complete, drag-to-reorder) have no keyboard path yet; their spoken alternatives require TalkBack.
2.2.1 Timing AdjustablePartially SupportsAll visual timers are user-created, user-started, pausable, and removable; nothing in the product expires on its own. A small number of status messages (import/backup results) use timed system toasts that cannot be extended within the app on Android 7-11; Android 12+ users can extend them system-wide.
2.2.2 Pause, Stop, HideSupportsNothing moves, blinks, or updates automatically. Timers run only after a user tap and pause with the same control; read-aloud is stoppable mid-play. When a timer ends, no content is lost, the app shows a dismissible done dialog.
2.3.1 Three Flashes or Below ThresholdSupportsNo repeating or flashing animation exists anywhere; every animation is a short one-shot fade or scale. Sample videos are static-camera live-action modeling clips that play once in a dialog.
2.5.1 Pointer GesturesDoes Not SupportTwo functions are path-based gestures: swiping a task to complete it and dragging to reorder tasks in edit mode. Both have spoken alternatives ("Mark done", "Move up/down"), but those require TalkBack; there is no on-screen single-tap alternative yet. All other interaction app-wide is single-tap. A visible tap alternative is on the remediation list.
2.5.3 Label in NameSupportsNo control's spoken name omits its visible text label, verified across all 98 labeled elements; controls whose visible label is a symbol carry a descriptive spoken name.
3.1.1 Language of PageDoes Not SupportThe interface language (English) is not yet programmatically declared, so on a device set to another language a screen reader may use the wrong voice for interface text. The app's own spoken board audio always pronounces labels with an English voice. Locale declaration ships with the Spanish release.
3.2.1 On Focus / 3.2.2 On InputSupportsNo control changes context on focus or input; navigation happens only on explicit activation.
3.2.3 Consistent NavigationSupportsThe back/close control always occupies the leading top-left position; repeated board actions keep one relative order (Play, Share, Reset, Edit) on every board bar.
3.3.1 Error IdentificationPartially SupportsErrors are described in text, never color or sound alone: wrong passcode shows persistent inline text; restore and backup failures state exactly what happened and that existing data is untouched. Some outcomes are announced via transient system toasts, and a failed fingerprint prompt currently shows no in-app error text.
4.1.2 Name, Role, ValuePartially SupportsA TalkBack user can complete a schedule task: cards expose "Completed / Not completed" state and a "Mark done" action (new in 2.0). Switches, radio buttons, timers, and remove controls carry correct roles, names, and states. Gaps: a few controls announce ambiguous or code-style names, two board cards expose an extra unnamed tappable region, and the caption field loses its spoken name once text is typed. All on the remediation list.
4.1.3 Status MessagesPartially SupportsThe passcode-reset countdown announces politely as it updates; timer completion raises a spoken dialog; system toasts are announced automatically. The inline wrong-passcode error and task-completion confirmation are not yet announced without refocusing.

Table 2: Success Criteria, Level AA

CriteriaConformance LevelRemarks and Explanations
1.3.4 OrientationPartially SupportsTablets and Chromebooks work in both orientations. Phones are currently locked to portrait because the board layout does not yet reflow in phone landscape; on the remediation list.
1.4.3 Contrast (Minimum)Partially SupportsCore child-facing board text passes: black and white text on the main board fields measures 6.2:1 to 21:1, and the 2.0 release deepened three board colors so their large bold labels clear the large-text bar. Known failures are itemized for remediation: the white START label on the timer green (1.8:1) is the worst, along with several small edit-mode chips and one board's section labels that missed the 2.0 deepening pass.
1.4.4 Resize TextPartially SupportsEvery piece of interface text uses scalable units (127 of 127 sites verified), so the whole app follows the system font-size setting. Exceptions: the words on stock picture cards are part of the artwork and do not scale; captions on your own photos scale but may shorten with an ellipsis at 200%; two small controls clip at 200%.
1.4.5 Images of TextDoes Not SupportThe words on stock picture cards are rendered inside the card artwork, the image-plus-word card is the visual-support methodology the product teaches, but as shipped those words are images of text. Captions on user-added photos are real text.
1.4.10 ReflowPartially SupportsAll content scrolls in one direction only, with no horizontal scrolling anywhere and fixed-size elements clamping to the screen width. Phone landscape does not yet reflow (see 1.3.4), and narrow-width behavior of the board top bar has not been device-verified.
1.4.11 Non-text ContrastPartially SupportsPrimary indicators pass: olive toggles (3.8:1) and blue accents (4:1) on white. Known failures itemized for remediation: the yellow border marking custom cards (1.5:1 on white), the timer progress arc against its track (1.8:1), and low-alpha placeholder markers.
1.4.12 Text SpacingNot ApplicableNative application; this criterion applies to markup content where users can override spacing.
2.4.5 Multiple WaysNot ApplicablePer WCAG2ICT this criterion applies to sets of software programs; within the app, boards are reachable from the grid, the list view, and per-profile views.
2.4.6 Headings and LabelsSupportsSettings rows and screens carry plain descriptive labels; every editor field is labeled in view.
2.4.7 Focus VisibleSupportsStandard component focus indication is unmodified throughout.
2.5.7 Dragging MovementsDoes Not SupportTask completion and task reorder are drag movements whose single-pointer alternatives currently exist only through TalkBack. A visible tap alternative is on the remediation list; the underlying action is already built, so this is an interface addition, not a redesign.
2.5.8 Target Size (Minimum)Partially SupportsThe platform's 48dp minimum touch target is in force app-wide, and small visual buttons deliberately keep 48dp touch zones. Remove badges are 32dp by design, paired with confirmation dialogs (a data-safety decision documented in code). Six small edit-mode timer chips (~20dp) rely on the spacing exception and are queued for enlargement.
3.2.4 Consistent IdentificationPartially SupportsBoard actions are identified consistently across all boards. The same leave-screen function is labeled "Back" on board screens but "Close" on Settings and the Image Library; queued for unification.
3.3.3 Error Suggestion / 3.3.4 Error PreventionSupportsDestructive actions (delete profile, delete board, remove card, restore) all require explicit confirmation that states what will happen; restore failures leave existing data untouched and say so.
4.1.3 Status Messages (AA aspects)Partially SupportsSee Table 1 row; the countdown banner is a correct polite live region, other inline status text is queued for the same treatment.

These Accessibility Conformance Reports are provided by Bee Visual, LLC based on internal source-code review and assistive-technology testing of the versions stated above. Page last updated July 10, 2026. It reflects the product honestly, including areas still in development. VPAT® is a registered trademark of the Information Technology Industry Council (ITI). Choiceworks® and Bee Visual® are registered trademarks of Bee Visual, LLC.